Разработка и обучение модели, предсказывающей совершение клиентами целевых действий на сайте 'СберАвтоподписка'
Проект в качестве итогового задания по курсу ‘Введение в Data Science’ от Skillbox.
Выполнил: Демир Узун
Цель - разработать приложение, которое будет предсказывать совершение пользователем одного из целевых действий - ‘Оставить заявку’ или ‘Заказать звонок’ по времени визита ‘visit_*’, рекламным меткам ‘utm_*’, характеристикам устройства ‘device_*’ и местоположению ‘geo_*’. Это должен быть сервис, который будет брать на вход все атрибуты, типа utm_, device_, geo_*, и отдавать на выход 0/1 (1 — если пользователь совершит любое целевое действие).
Целевые метрики: roc-auc
> 0.65, время предсказания не более 3 секунд.
Полностью задание можно прочитать отсюда или скачать в виде файла-pdf.
Данные для выполнения практического задания можно скачать отсюда.
О компании «СберАвтоподписка»
«СберАвтоподписка» — это сервис долгосрочной аренды автомобилей для физлиц.
Клиент платит фиксированный ежемесячный платёж и получает в пользование машину на срок от шести месяцев до трёх лет.
Также в платёж включены:
- страхование (КАСКО, ОСАГО, ДСАГО);
- техническое обслуживание и ремонт;
- сезонная смена шин и их хранение;
- круглосуточная служба поддержки.
За дополнительную сумму можно приобрести услугу консьерж-сервиса — доставку автомобиля до сервисного центра и обратно на техническое обслуживание, сезонную замену шин, ремонт.
Описание структуры проекта:
.idea
,.ipynb_checkpoints
,__pycache__
- служебные папки, сгенерированные Pycharmdata
- папка, где хранятся данные для проверки работоспособности приложения.examples.json
- содержит в себе список из 5 примеров для проверки.models
- папка, куда записываются готовые модели.additional_data.py
- дополнительные данные для генерации признаков.api.py
- скрипт для проверки API-запросов.create_model.py
- скрипт, который создает пайплайн и обучает модель.description.md
- описание целевого задания.other.ipynb
- не используетсяpredict_test.py
- скрипт, который проверяет работу приложенияrequirements.txt
- необходимые библиотеки для установки. Pycharm автоматически устанавливает их из списка в этом файле.step_1_data_analises.ipynb
- ноутбук анализ датасетов.step_2_model_research.ipynb
- ноутбук исследования и моделирование.
Последовательность работы
- Скопируйте данный репозиторий к себе на компьютер.
- Скачайте данные GA Sessions (ga_sessions.csv) и GA Hits (ga_hits.csv) и разместите их в папке
data
, которую нужно создать на уровень выше вашего проекта. - После этого можно запустить ноутбуки step_1_data_analises.ipynb и step_2_model_research.ipynb и пошагово отработать каждую ячейку для анализа происходящего исследования.
Анализ данных клиентских сессий сервиса ‘СберАвтоподписка’
Всего целевых действий = 104908 из 15726470 что составляет 0.67 %
sub_car_claim_click = 37928 === 0.24 %
sub_open_dialog_click = 25870 === 0.16 %
sub_submit_success = 18439 === 0.12 %
sub_car_claim_submit_click = 12359 === 0.08 %
sub_call_number_click = 3653 === 0.02 %
sub_callback_submit_click = 3074 === 0.02 %
sub_car_request_submit_click = 2966 === 0.02 %
sub_custom_question_submit_click = 619 === 0.0 %
Распределение целевой переменной:
- False 90.43%
- NaN 6.87%
- True 2.70%
- Из программы Pycharm или командной строки можно запустить обучение модели с помощью скрипта
create_model.py
(файлadditional_data.py
и папки с даннымиdata
и моделямиmodels
должны находится в той же директории). В файлеadditional_data.py
собраны дополнительные данные, которые нужны для генерации признаков.
Блокноты
Ноутбуки с разведовательным анализом данных и исследованием моделей для задачи:
- step_1_data_analises.ipynb. Здесь мы проводим анализ данных клиентских сессий сервиса ‘СберАвтоподписка’. В этом ноутбуке реализованы три стадии машинного обучения: Business understanding, Data understanding, Data preparation.
- step_2_model_research.ipynb. Здесь мы непосредственно будем заниматься исследованиями, разработкой и оптимизацией модели.
Обучение модели
Для создания модели необходимо запустить скрипт create_model.py
(файл additional_data.py
и папки с данными data
и моделями models
должны находится в той же директории).
Процесс создания пайплайна полностью информативен. В каждый момент времени можно знать какая проходит процедура и сколко времени ушло на выполнение этой процедуры. Кстати, полностью весь процесс создания, обучения и оптимизации модели занимает всего около 10 минут.
Или можно создать модель, запустив ноутбук с исследованиями моделей.
Запуск приложения
Модель можно запустить стационарно в виде скрипта predict_test.py
или в качестве API-приложения.
Чтобы его запустить, необходимо установить библиотеки из requirements.txt
и в корневой папке проекта выполнить команду:
uvicorn api:app --reload
Время предсказания приложения в десктопной версии составляет всего около 5 милисекунд.
Запуск APi-приложения также очень быстрый.
Время предсказания приложения в API версии также составляет всего около 5 милисекунд.
В этом случае приложение будет доступно по адресу http://127.0.0.1:8000
.
Методы API
Для работы с приложением можно использовать запросы:
/status
(get) - для получения статуса сервиса;
/version
(get) - для получения версии и метаданных модели;
/predict
(post) - для предсказания класса одного объекта;
Спасибо, что дочитали до конца! Теперь вы точно будете знать, что следующее, что я буду делать - это deploy готового приложения. Следите за моими дальнейшими публикациями!