Собесов

ML — фичи RFM для модели оттока пользователей

ML / Data ScienceFeature engineeringСредняяMiddle

Условие

Нужно построить модель оттока (churn) клиентов. Объясните, какие фичи вы создадите для каждого пользователя на дату T. Объясните, почему именно эти.

Решение

Что такое отток и горизонт

Сначала уточняем определение churn:

  • «нет покупок за 30 дней после T»? 60? 90?
  • Hard churn (отписка) или soft churn (бездействие)?

Это влияет на target и фичи.

Базовый набор — RFM

Recency, Frequency, Monetary — классика:

Фича Формула Что отражает
recency_days T - last_purchase_date Свежесть контакта
frequency_30d число заказов за [T-30, T) Активность
frequency_90d то же за [T-90, T) Стабильность
monetary_30d сумма заказов за [T-30, T) Доходность
monetary_lifetime вся история LTV-прокси
avg_check_30d mean(amount) за 30d Покупательская сила

Это минимум, который должен быть.

Поведенческие

Фича Формула Идея
sessions_30d число визитов Engagement
pageviews_per_session_30d глубина Интерес
bounce_rate_30d сессии с 1 page view Низкий интерес → риск ухода
device_diversity число уникальных платформ Multi-platform = lock-in
feature_X_used_count использование ключевых фич Тот, кто открыл «избранное», вернётся

Динамика (производные)

Фича Формула Идея
freq_30d / freq_90d соотношение «недавнего» к «давнему» Падает → уходит
monetary_30d / monetary_90d (приведя к одному периоду) то же по деньгам Снижение чека = риск
delta_avg_check avg_check_30d - avg_check_180d Тренд чека
days_since_last_login Раньше вообще не заходил?

Лояльность и контактность

Фича Формула Идея
tenure_days T - signup_date Стаж
support_tickets_30d жалобы Конфликты
nps_score_recent если есть Прямой сигнал
unsubscribed_email флаг «Закрылся» от коммуникаций
app_uninstall_event флаг Сильный сигнал

Продуктовые

Фича Что
Категории/подкатегории, которые покупает (one-hot или topN) Сегмент
Распределение времени суток / дня недели Поведенческий профиль
Доля акционных покупок Чувствительность к цене
Среднее время доставки Если задерживалось — может уходить

Внешние

  • Сезон, праздники, дни до зарплаты.
  • Гео (через регион/город).
  • Маркетинговые кампании, где он был.

Подводные камни

  1. Лик target в фичи. Любая фича с использованием данных после T — катастрофа. Считайте «всё на момент T - 1».
  2. Тренировка на «зомби». Если выборка только из активных, модель будет переоценивать engagement. Включайте уже ушедших и тех, кто только что зашёл.
  3. Шкалы. Recency может быть огромным; стандартизуйте или используйте log1p.
  4. Categorical с высокой кардинальностью (категории товаров): target encoding с CV или embeddings.
  5. Дисбаланс классов. Churn часто 5–15%. Используйте class_weight, scale_pos_weight, или sample.
  6. Concept drift. Модель ломается с временем — переобучение раз в месяц.
  7. Stationarity. Многие фичи нестабильны (расходы клиентов в новогодние праздники). Добавляйте сезонные индикаторы.
  8. Правильная валидация. Time-based split, не random — иначе утечка.

Эталонный ответ

Список из ~30 фич, сгруппированных по слоям: RFM, поведенческие, динамика (тренды), лояльность, продуктовые, внешние. Каждая фича — с обоснованием. Плюс пункт «как избежать утечек и как правильно валидироваться».

Хочешь увидеть разбор?

Зарегистрируйся бесплатно — откроется развёрнутое решение этой задачи и ещё 4 на выбор.

Зарегистрироваться и увидеть разбор
Уже есть аккаунт? Войти