Skip to content

Predicts customer purchase likelihood within 90 days using CatBoost. Analyzes purchase history, email interactions, and behavioral data to optimize targeted marketing campaigns. Achieves ROC AUC up to 0.72 with feature importance insights via SHAP.

Notifications You must be signed in to change notification settings

Moncervers/purchase_prediction

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Прогнозирование вероятности покупки клиентов для интернет-магазина

Описание проекта

Этот проект направлен на прогнозирование вероятности совершения покупки клиентами интернет-магазина в течение * следующих 90 дней*. Использование моделей машинного обучения позволяет целенаправленно направлять рекламные кампании, увеличивая конверсию и оптимизируя маркетинговые расходы.

Бизнес-задача

Интернет-магазин стремится снизить затраты на маркетинг за счет точечного таргетирования клиентов с высокой вероятностью покупки. Модель помогает:

  • Сократить количество бесполезных рассылок.
  • Увеличить ROI рекламных кампаний.
  • Персонализировать предложения для клиентов.

Особенности

  • Анализ поведения клиентов: данные о покупках, рассылках и целевой переменной.
  • Модели машинного обучения: CatBoost, LightGBM с подбором гиперпараметров через RandomizedSearchCV.
  • Интерпретация результатов: анализ важности признаков через SHAP.
  • Оптимизация порога классификации: баланс между Precision и Recall.

Структура данных

Проект использует три набора данных:

1. apparel-purchases.csv (история покупок)

Поле Описание
client_id Уникальный идентификатор клиента
quantity Количество товаров в заказе
price Общая стоимость заказа
category_ids Категории товаров (агрегированные)
message_id Связь с рекламной кампанией

Обработанные признаки:

  • total_quantity: общее количество товаров, купленных клиентом.
  • total_price: сумма всех покупок клиента.
  • avg_days_between_purchases: средний интервал между покупками.

2. apparel-messages.csv (email-рассылки)

Поле Описание
event Тип действия (open, click, complain, hard_bounce)
channel Канал доставки (email, sms)
client_id Связь с клиентом

Обработанные признаки:

  • open_times: количество открытий писем.
  • click_times: количество кликов по ссылкам.
  • hard_bounce_times: количество недоставленных писем.

3. apparel-target_binary.csv (целевая переменная)

Поле Описание
client_id Идентификатор клиента
target Целевая метка: 1 — покупка в течение 90 дней, 0 — нет

Предобработка данных

  1. Удаление дубликатов:
    • В messages_df удалено до 194,528 дубликатов.
  2. Агрегация метрик:
    • Подсчет среднего, максимального и минимального интервалов между покупками для каждого клиента.
  3. Кодирование категориальных признаков:
    • События open, click сгруппированы в столбцы с количеством раз.
  4. Удаление нерелевантных полей:
    • message_id, date, category_ids (не влияют на целевую переменную).

Модели и метрики

Обученные модели

Модель ROC AUC Оптимальный порог
CatBoost 0.72 0.0595
LightGBM 0.70 0.1882

Ключевые признаки (через SHAP):

  • total_quantity (общее количество товаров)
  • avg/max_days_between_purchases (среднее/максимальное количество дней между покупками)
  • open_times, click_times (частота взаимодействия с email-рассылками)
  • total_price (суммарная стоимость покупок)

Результаты

  • CatBoost показал лучшие метрики благодаря эффективной обработке числовых признаков.
  • Частота email-взаимодействий и историческая активность оказались главными предикторами.
  • Оптимизация порога классификации улучшает баланс между ложноположительными и ложноотрицательными срабатываниями.

Рекомендации

Улучшение данных:

  • Добавить демографические признаки (возраст, местоположение).
  • Интегрировать поведенческие метрики с сайта (время на странице, частота визитов).

Требования

  • Python: 3.11 или 3.12
  • Библиотеки:
    catboost lightgbm matplotlib numpy pandas phik scikit-learn seaborn shap jupyter notebook

Установка

Предпочтительный способ: uv

  1. Создайте виртуальное окружение:
    uv venv
    source .venv/bin/activate
  2. Установите зависимости:
    uv sync

Альтернативный способ: pip

  1. Создайте виртуальное окружение:
    python -m venv venv
    source venv/bin/activate
  2. Установите зависимости:
    pip install -r requirements.txt

Использование

  1. Данные: Поместите наборы данных в директорию data/.
  2. Запуск проекта:
    • Откройте Jupyter Notebook:
    jupyter notebook purchase_prediction.ipynb
    • Выполните ячейки последовательно для предобработки, обучения модели и анализа результатов.

About

Predicts customer purchase likelihood within 90 days using CatBoost. Analyzes purchase history, email interactions, and behavioral data to optimize targeted marketing campaigns. Achieves ROC AUC up to 0.72 with feature importance insights via SHAP.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published