Как предсказать отток клиентов с помощью машинного обучения
Churn prediction: какие фичи использовать, как обучить модель, как интегрировать прогноз в маркетинг. Gradient Boosting на Python.
Зачем предсказывать отток
Удержание клиента в 5 раз дешевле привлечения нового. Это не просто красивая цифра — это математика: если CAC (стоимость привлечения) составляет 5 000 ₽, а стоимость реактивационной кампании для at-risk клиента — 50-200 ₽ (email + Telegram), то каждый удержанный клиент экономит 4 800+ ₽.
Но удержать можно только тех, о чьём уходе вы знаете заранее. Если клиент уже отменил подписку или не покупал 6 месяцев — вернуть его в 10 раз сложнее, чем предотвратить уход. Вот почему churn prediction — одна из самых ценных ML-задач в маркетинге.
Компании с предиктивной моделью оттока показывают на 25-40% ниже churn rate по сравнению с теми, кто реагирует постфактум. В нашем кейсе SaaS-продукта churn снизился с 8% до 4.8% за 4 месяца — это 800 000 ₽/мес saved MRR.
Что такое churn и как его измерять
Churn (отток) — это потеря клиента. Определение зависит от бизнес-модели:
- SaaS: клиент отменил подписку или не продлил
- E-commerce: клиент не покупал X дней (обычно 60-90)
- EdTech: студент бросил курс и не заходил Y дней
- Мобильное приложение: пользователь удалил приложение или не открывал Z дней
Формула churn rate: Churn Rate = (ушедшие за период / клиенты на начало периода) × 100%
Нормальный monthly churn rate по индустриям:
| Индустрия | Нормальный churn | Проблемный churn |
|---|---|---|
| B2B SaaS | 3-5% | > 7% |
| B2C SaaS | 5-7% | > 10% |
| E-commerce | 20-30%/кв | > 40%/кв |
| EdTech | 10-15%/кв | > 25%/кв |
Подход Trigly к churn prediction
Модель
GradientBoostingClassifier из scikit-learn — проверенный алгоритм, который отлично работает на табличных данных. Gradient Boosting последовательно строит ансамбль деревьев решений, где каждое новое дерево исправляет ошибки предыдущих.
Почему GradientBoosting, а не нейросеть? Для табличных данных с 12-20 фичами и базой 1 000-100 000 клиентов GradientBoosting превосходит нейросети по точности, скорости обучения и интерпретируемости. Нейросети сильны на неструктурированных данных (текст, изображения), но для churn prediction классический ML — оптимальный выбор.
Target (целевая переменная): нет активности 60 дней. Это бинарная классификация: 1 = ушёл, 0 = остался. Порог 60 дней подобран эмпирически для большинства бизнесов, но настраивается под вашу специфику.
12 фич (признаков)
Модель использует 12 фич, разделённых на две группы. Это обеспечивает backward compatibility: модель работает даже если доступны только базовые фичи (5 из PostgreSQL), но даёт лучшую точность с полным набором (12 фич).
5 базовых фич (из CDP-профиля в PostgreSQL):
- days_since_last_activity — самый сильный предиктор. Чем дольше клиент неактивен, тем выше риск. Корреляция с churn: 0.72
- total_orders — количество покупок/транзакций. Клиенты с 5+ покупками чурнят в 3 раза реже
- total_revenue — общая сумма. Высокий LTV = низкий churn (клиент получает ценность)
- days_since_registration — «возраст» клиента. Новые клиенты (< 30 дней) чурнят чаще — они ещё не сформировали привычку
- purchase_frequency_days — средний интервал между покупками. Нерегулярные покупки — сигнал risk
7 поведенческих фич (из ClickHouse — события за 30 дней):
- total_events_30d — общее число событий (любые действия). Падение на 50%+ от среднего — сильный сигнал
- unique_event_types — разнообразие действий. Клиент, который только логинится, но не использует функции — at risk
- email_opens_30d — открытия email. Клиент перестал открывать письма за 2-4 недели до ухода
- email_clicks_30d — клики в email. Ещё более точный сигнал вовлечённости
- page_views_30d — просмотры страниц. Снижение page views — ранний индикатор
- sessions_30d — количество сессий. Частота визитов напрямую коррелирует с retention
- avg_events_per_session — глубина сессии. «Зашёл-вышел» vs «провёл 20 минут, использовал 5 фич»
Важность фич (Feature Importance)
По данным обученных моделей, типичное распределение важности:
| Фича | Важность | Комментарий |
|---|---|---|
| days_since_last_activity | 28% | Главный предиктор |
| total_events_30d | 15% | Падение активности |
| sessions_30d | 12% | Частота визитов |
| email_opens_30d | 10% | Вовлечённость в коммуникацию |
| unique_event_types | 9% | Широта использования |
| purchase_frequency_days | 8% | Регулярность покупок |
| total_orders | 6% | Глубина отношений |
| avg_events_per_session | 5% | Глубина сессии |
| total_revenue | 3% | LTV |
| остальные | 4% |
Обучение модели
Модель обучается автоматически через Celery task (train_churn_model). Процесс:
- Выборка клиентов из CDP (минимум 500 с историей 3+ месяца)
- Формирование target: клиенты без активности 60+ дней → 1 (churn), остальные → 0
- Расчёт 12 фич для каждого клиента
- Train/test split (80/20)
- Обучение GradientBoostingClassifier
- Оценка на тестовой выборке (accuracy, precision, recall, F1)
- Сохранение модели в memory cache
Модель переобучается автоматически — еженедельно или по расписанию. На базе 5 000+ клиентов обучение занимает < 30 секунд. На 100 000+ — 2-3 минуты.
Типичные метрики качества:
- Accuracy: 82-88% (зависит от объёма данных и качества фич)
- Precision: 75-85% (доля реально ушедших среди предсказанных «уйдёт»)
- Recall: 78-88% (доля выявленных среди реально ушедших)
- F1: 77-86%
Использование предикции в маркетинге
Прогноз записывается в поле ai_score клиента (0-100 в CDP-профиле). At-risk клиенты (score > 70) автоматически попадают в триггерную цепочку реактивации через Flow Builder.
Пример реактивационной цепочки:
- Score 50-70 (Medium Risk): мягкое напоминание — образовательный контент, новые функции, персональные рекомендации
- Score 70-85 (High Risk): активная реактивация — персональное предложение, скидка, звонок CSM
- Score 85-100 (Critical Risk): агрессивное удержание — максимальная скидка, эскалация на руководство, персональный менеджер
Каждый уровень — отдельная ветка в Flow Builder с разными каналами, контентом и интенсивностью. Smart Channel выбирает оптимальный канал для каждого at-risk клиента.
Как улучшить точность модели
1. Больше данных
С ростом базы от 5 000 до 50 000 клиентов accuracy растёт на 5-8%. Каждый квартал истории добавляет 1-2% точности.
2. Дополнительные фичи
Помимо 12 стандартных фич, можно добавить:
- NPS/CSAT scores — удовлетворённость клиента
- Support tickets — количество обращений в поддержку (особенно нерешённых)
- Billing issues — неудачные платежи, споры
- Competitor signals — визиты на сайты конкурентов (через UTM-аналитику)
3. Комбинирование с другими моделями
Trigly также обучает LTV-модель и Next Purchase модель. Комбинация трёх предикций даёт полную картину: кто уйдёт, сколько мы потеряем, и когда ожидалась следующая покупка.
4. Правильный target
60 дней неактивности — хороший default, но для вашего бизнеса оптимальный порог может быть другим. SaaS с месячной подпиской: 30 дней. E-commerce с длинным циклом покупки (мебель, авто): 180 дней. Подберите порог на основе анализа реальных данных.
Churn prediction vs RFM-сегментация
Часто спрашивают: зачем нужна ML-предикция, если есть RFM? Это дополняющие, а не конкурирующие инструменты:
| Критерий | RFM | Churn Prediction (ML) |
|---|---|---|
| Подход | Правила (квинтили) | Обучение на данных |
| Фичи | 3 (R, F, M) | 12+ |
| Результат | Сегмент (Champions, At Risk...) | Score 0-100 |
| Точность | Средняя | Высокая (80-90%) |
| Настройка | Не нужна | Авто-обучение |
| Интерпретируемость | Высокая | Средняя |
Оптимальная стратегия: используйте оба. RFM для стратегической сегментации (5 больших сегментов), ML churn prediction для тактического выявления at-risk клиентов внутри каждого сегмента. В Trigly оба инструмента работают параллельно: rfm_segment и ai_score — два независимых поля в профиле клиента.
Практический чеклист внедрения
- Убедитесь, что в CDP минимум 500 клиентов с историей 3+ месяца
- Подключите SDK для трекинга событий (login, page_view, feature_used) — это даст 7 поведенческих фич
- Запустите обучение модели через Trigly (автоматически через Celery task)
- Проверьте метрики качества (accuracy > 80% — хороший результат)
- Создайте 3 реактивационные цепочки в Flow Builder (medium/high/critical risk)
- Настройте каналы: email обязательно, Telegram рекомендуется, SMS для critical risk
- Включите A/B тестирование реактивационных сообщений
- Мониторьте: отслеживайте churn rate ежемесячно, сравнивайте с baseline
FAQ
Сколько данных нужно для начала? Минимум — 500 клиентов с историей 3 месяца. При этом accuracy будет 75-80%. С 5 000+ клиентов — 82-88%. С 50 000+ — 88-92%. Модель обучается инкрементально: чем дольше работает, тем точнее становится. Первые результаты доступны через 1-2 часа после запуска.
Что если у нас только email-данные, без событий из продукта? Модель работает и с 5 базовыми фичами (без ClickHouse). Accuracy будет 70-78% — ниже, но всё ещё полезно. Рекомендуем подключить SDK для трекинга событий — это даст +10-15% к точности. Подробнее об интеграции SDK.
Как часто нужно переобучать модель? В Trigly модель переобучается автоматически — еженедельно через Celery task. Для большинства бизнесов этого достаточно. Если у вас сильная сезонность (туризм, подарки), можно увеличить частоту до ежедневной. Модель адаптируется к изменениям в поведении клиентов без ручного вмешательства.
Хотите предсказывать отток и спасать клиентов до того, как они уйдут? Начните с Trigly — ML-модель churn prediction обучается автоматически, at-risk клиенты попадают в реактивационные цепочки, а вы видите результат в снижении churn rate. Все AI-функции доступны начиная с тарифа Growth (9 900 ₽/мес).