Разработка и обучение модели, предсказывающей совершение клиентами целевых действий на сайте 'СберАвтоподписка'

Проект в качестве итогового задания по курсу ‘Введение в 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 готового приложения. Следите за моими дальнейшими публикациями!