UzunDemir / Final_Project_Skillbox_SberAutoPodpiska

✨Final project ML ingeneering Skillbox Autopodpiska ✨

Home Page:https://uzundemir.github.io//fihal-project

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

Проект в качестве итогового задания по курсу 'Введение в Data Science' от Skillbox.

Выполнил: Демир Узун

Аренда авто по подписке – СберАвтоподписка _ Сервис подписки на автомобили от 6 месяцев до 3 лет - Google Chrome 2023-04-12 16-08-35_Trim (1)

Цель - разработать приложение, которое будет предсказывать совершение пользователем одного из целевых действий - 'Оставить заявку' или 'Заказать звонок' по времени визита 'visit_*', рекламным меткам 'utm_*', характеристикам устройства 'device_*' и местоположению 'geo_*'. Это должен быть сервис, который будет брать на вход все атрибуты, типа utm_, device_, geo_*, и отдавать на выход 0/1 (1 — если пользователь совершит любое целевое действие).

Целевые метрики: roc-auc > 0.65, время предсказания не более 3 секунд.

Полностью задание можно прочитать отсюда или скачать в виде файла-pdf.

Данные для выполнения практического задания можно скачать отсюда.

«СберАвтоподписка» — это сервис долгосрочной аренды автомобилей для физлиц.

Клиент платит фиксированный ежемесячный платёж и получает в пользование машину на срок от шести месяцев до трёх лет.

Также в платёж включены:

  • страхование (КАСКО, ОСАГО, ДСАГО);
  • техническое обслуживание и ремонт;
  • сезонная смена шин и их хранение;
  • круглосуточная служба поддержки.

За дополнительную сумму можно приобрести услугу консьерж-сервиса — доставку автомобиля до сервисного центра и обратно на техническое обслуживание, сезонную замену шин, ремонт.

Описание структуры проекта:

  • .idea, .ipynb_checkpoints, __pycache__ - служебные папки, сгенерированные Pycharm
  • data- папка, где хранятся данные для проверки работоспособности приложения. 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 %

image

image

Распределение целевой переменной:

  • False 90.43%
  • NaN 6.87%
  • True 2.70%

image

image

image

image

image

  • Из программы 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 минут.

Final_Project_Skillbox_SberAutoPodpiska – create_model py 2023-04-12 09-36-22

Или можно создать модель, запустив ноутбук с исследованиями моделей.

Запуск приложения

Модель можно запустить стационарно в виде скрипта predict_test.py или в качестве API-приложения.

Чтобы его запустить, необходимо установить библиотеки из requirements.txt и в корневой папке проекта выполнить команду:

uvicorn api:app --reload

Время предсказания приложения в десктопной версии составляет всего около 5 милисекунд.

Final_Project_Skillbox_SberAutoPodpiska – predict_test py 2023-04-12 15-09-46 (1)

image

Запуск APi-приложения также очень быстрый.

Final_Project_Skillbox_SberAutoPodpiska – predict_test py 2023-04-12 15-16-19_Trim (1)

Время предсказания приложения в API версии также составляет всего около 5 милисекунд.

http___127 0 0 1_8000_predict - My Workspace и еще 1 страница — Личный_ Microsoft_ Edge 2023-04-12 15-51-22 (1)

В этом случае приложение будет доступно по адресу http://127.0.0.1:8000.

Методы API

http___127 0 0 1_8000_predict - My Workspace и еще 1 страница — Личный_ Microsoft_ Edge 2023-04-12 16-01-49 (1)

Для работы с приложением можно использовать запросы:

  • /status (get) - для получения статуса сервиса;

image

  • /version (get) - для получения версии и метаданных модели;

image

  • /predict (post) - для предсказания класса одного объекта;

image

About

✨Final project ML ingeneering Skillbox Autopodpiska ✨

https://uzundemir.github.io//fihal-project


Languages

Language:Jupyter Notebook 99.7%Language:Python 0.3%