- ad_click_prediction.ipynb - рабочая тетрадь с исследованиями, визуализациями и текстовыми описаниями
- requirements.txt - список зависимостей, необходимых для работы проекта, а также их версии
- research_functions.py - скрипт с функциями для проведения исследования
- run_jupyter.sh - скрипт для запуска тетрадки с исследованием
- assets - директория с сохранёнными артефактами
- services - директория с приложением
git clone https://github.com/denis-42ds/ad_click_prediction.git
cd ad_click_prediction
pip install -r requirements.txt
sh run_jupyter.sh
git clone https://github.com/denis-42ds/ad_click_prediction.git
cd ad_click_prediction/services
docker compose up --build
Для просмотра документации API и совершения тестовых запросов пройти по ссылке: http://127.0.0.1:8081/docs
Доступ к экспозиции метрик Prometheus
: http://localhost:8081/metrics
Доступ к веб-интерфейсу Prometheus
: http://localhost:9090
Доступ к веб-интерфейсу Grafana
: http://localhost:3000
Для остановки приложения: docker compose down
или Press CTRL+C to quit
Демонстрация работы приложения
Требуется получить на выходе прогноз с высокой точностью вероятности клика по рекламному объявлению.
На предикт ML модели выдается выборка объявлений доступных в текущий момент к показу, модель выдает по ним вероятность клика.
Построение модели для прогнозирования кликов по рекламному объявлению
- Знакомство с данными
- Исследовательский анализ данных
- Предобработка данных (при необходимости)
- Разработка дополнительных признаков (при необходимости)
- Построение baseline
- Обучение нескольких моделей
- Выбор лучшей модели
- Проверка важности признаков
- Проверка лучшей модели на отложенной выборке
- Заключение о проделанном исследовании
- python: pandas, seaborn, matplotlib, phik, category_encoders, LightGBM;
- mlflow;
- postgresql;
- bash;
- fastapi, grafana, prometheus
Итоги проделанного исследования.
Выбор целевых метрик
ROC-AUC
(Receiver Operating Characteristic - Area Under the Curve) является метрикой,
которая оценивает качество бинарной классификации, учитывая полноту (True Positive Rate) и
специфичность (True Negative Rate) модели.
ROC-AUC измеряет способность модели различать между классами и представляет площадь под кривой ROC.
ROC-AUC особенно полезна, когда важно контролировать баланс между ложно-положительными и ложно-отрицательными предсказаниями.
Она также устойчива к несбалансированным классам.F1-мера
является метрикой, которая оценивает точность и полноту модели для бинарной классификации.
F1-мера является гармоническим средним между точностью (precision) и полнотой (recall).
Она особенно полезна, когда важно достичь баланса между точностью и полнотой.
F1-мера хорошо работает, когда классы сбалансированы или когда важно минимизировать как ложно-положительные, так и ложно-отрицательные предсказания.
Загрузка и ознакомление с данными
- шаг выполнен полностью, трудностей не возникло;
- данные загружены;
- изучены типы данных;
- приняты решения о дальнейшей предобработке;
Исследовательский анализ данных
- шаг выполнен полностью, трудностей не возникло;
- исследованы зависимости и корреляции признаков;
- приняты решения об удалении неинформативных признаков;
Построение базовой модели
- в качестве базовой модели выбрана модель логистической регрессии;
- обусловлено это тем, что данная модель имеет небольшое количество гиперпараметров
и короткое время обучения;
Генерация дополнительных признаков
- шаг выполнен полностью, трудностей не возникло;
- разработаны несколько дополнительных признаков на основании уже существующих;
Обучение моделей
- шаг выполнен полностью, трудностей не возникло;
- обучены несколько различных моделей:
- логистическая регрессия;
- случайный лес;
- градиентный бустинг;
- градиентный бустинг с подбором гиперпараметров;
- наиболее высокое качество предсказания по выбранным метрикам показала модель градиентного бустинга.
Итоговая оценка качества предсказания лучшей модели и анализ важности её признаков
- шаг выполнен полностью, трудностей не возникло;
- на тестовой выборке модель показала неплохой результат ROC AUC = 0.82;
- модель верно предсказала 39092 отрицательных примеров и 34393 положительных примера;
- модель ошибочно предсказала 12124 отрицательных примеров как положительные и 13430 положительных примеров как отрицательные;
- наиболее важными для модели признаками определены:
- процент видимости объявления;
- значение ctr объявления;
- ставка в рублях объявления;
- тематика объявления;
- значение таргетинга по поведению.
Рекомендации
- для получения более высокого качества предсказаний требуются дополнительные данные:
- данные о пользователях;
- временная последовательность;
- возможно, ещё какая-то информация, которой обладает заказчик.
Общий итог
Для решения поставленной задачи оптимальным образом подходит модель градиентного бустинга LightGBM