AI для прогнозирования оттока подписчиков: модели и практика
Подписчик не открывает письма уже три недели. Это пауза или он ушёл навсегда? Интуиция маркетолога угадывает в половине случаев. ML-модель, обученная на истории поведения, даёт правильный ответ в 80-85% случаев. Разница между этими цифрами — тысячи сохранённых подписчиков и сотни тысяч рублей. Разберём, как это работает на практике.
Зачем предсказывать отток, если можно реагировать
Стандартный подход к оттоку — реактивный. Подписчик нажал «отписаться», система зафиксировала событие, маркетолог через неделю заметил рост unsubscribe rate в отчёте. К этому моменту делать уже нечего: человек ушёл, его решение принято.
Проблема глубже, чем кажется. Кнопку «отписаться» нажимает меньшинство. Большинство просто перестаёт открывать письма. Формально они в базе, фактически — мёртвый груз. Вы платите за хранение, ESP учитывает их при подсчёте метрик, а ваш open rate ползёт вниз. Почтовые провайдеры видят падение вовлечённости и начинают чаще отправлять ваши рассылки в спам — уже для всех подписчиков, включая активных.
Предиктивная модель ловит отток до того, как он произошёл. Не после отписки, не после трёх месяцев молчания, а в момент, когда поведение подписчика начинает меняться. За 5-14 дней до предполагаемого ухода — достаточно, чтобы вмешаться.
Какие данные нужны модели
Churn-модель работает с историей взаимодействий. Не с демографией, не с анкетными данными, а с тем, что человек реально делал. Вот минимальный набор признаков, который даёт стабильный результат:
- Частота открытий — доля открытых писем за последние 30, 60 и 90 дней. Три окна нужны, чтобы модель видела динамику: стабильная активность, плавное угасание или резкий обрыв — это разные сценарии.
- Динамика кликов — количество и частота кликов по ссылкам. Подписчик, который открывает, но не кликает, — уже на полпути к выходу.
- Время с последнего действия — дни с последнего открытия, клика, покупки. Самый простой и самый сильный признак.
- Частота отправки — сколько писем подписчик получил за период. Если вы отправляете ежедневно, а человек открывает раз в неделю, это не обязательно отток — возможно, это его нормальный ритм.
- История покупок — для e-commerce. Время с последнего заказа, средний чек, количество заказов. Подписчик без покупок за 120 дней при среднем цикле в 45 дней — серьёзный сигнал.
- Тип устройства и время открытия — изменение привычного паттерна. Если человек всегда читал утром с десктопа, а последние три открытия — ночью с мобильного, поведение сдвигается.
Отдельно стоит упомянуть данные, которых часто не хватает. Жалобы на спам — Gmail и Yahoo передают feedback loops, но не все ESP корректно их логируют. Перемещение в папку «Промоакции» — косвенный признак угасания интереса, но отслеживается только через специализированные инструменты. Если у вас есть доступ к этим данным — используйте, они заметно повышают точность.
Алгоритмы: что выбрать и почему
Хорошая новость: для churn prediction в email не нужны глубокие нейросети. Задача — бинарная классификация на структурированных данных. Здесь доминируют градиентные бустинги, и это не случайность.
XGBoost и LightGBM остаются рабочими лошадками. Они хорошо справляются с табличными данными, устойчивы к пропускам, быстро обучаются. На базе в 500 000 подписчиков обучение занимает минуты, не часы. Для большинства email-маркетологов этого достаточно.
Логистическая регрессия — для тех, кому важна интерпретируемость. Модель проще, точность чуть ниже, но вы видите вес каждого признака и можете объяснить руководству, почему конкретный подписчик попал в группу риска. На небольших базах (до 50 000) разница с бустингом минимальна.
Random Forest — компромисс. Точнее логистической регрессии, интерпретируемее бустинга. Хорошо работает как baseline, с которого начинаешь и с которым сравниваешь более сложные подходы.
Без собственной модели
Если нет ресурсов на собственную ML-модель — это нормально. Klaviyo, Brevo, HubSpot предлагают встроенный churn-скоринг. Он менее гибкий, но работает из коробки. Главное — начать использовать прогнозы, а не ждать идеальную модель.
Метрики качества: как понять, что модель работает
Accuracy — плохая метрика для оттока. Если 95% подписчиков остаются, модель, которая всем предсказывает «остаётся», покажет accuracy 95% и при этом будет абсолютно бесполезной. Нужны другие инструменты.
Precision — из всех, кому модель предсказала отток, сколько действительно ушли. Низкий precision — вы тратите ресурсы на реактивацию людей, которые и так бы остались.
Recall — из всех, кто реально ушёл, скольких модель предупредила. Низкий recall — отток проходит мимо модели, и смысл прогнозирования теряется.
На практике работает F1-score — среднее гармоническое precision и recall. Для email-оттока хороший F1 начинается от 0.65. Отличный — выше 0.75. Если ваша модель показывает F1 0.80 на тестовой выборке — это сильный результат.
Ещё один полезный инструмент — AUC-ROC. Он показывает, насколько хорошо модель разделяет два класса при разных порогах. AUC 0.85+ для churn prediction — рабочий уровень. Ниже 0.75 — стоит пересмотреть набор признаков.
| Алгоритм | Плюсы | Минусы |
|---|---|---|
| Логистическая регрессия | Прозрачность, скорость, веса признаков | Не ловит нелинейные зависимости |
| Random Forest | Устойчив к выбросам, хороший baseline | Медленнее бустинга, хуже на дисбалансе классов |
| XGBoost / LightGBM | Высокая точность, быстрое обучение | Чёрный ящик, требует тюнинга гиперпараметров |
| Встроенный скоринг ESP | Ноль настройки, работает сразу | Нет контроля, нельзя адаптировать под специфику |
Подготовка данных: где обычно ломается
Модель — это 20% работы. Остальные 80% — подготовка данных. И именно здесь большинство проектов буксует.
Дисбаланс классов. Отток — это 3-8% базы. Модель, обученная на сырых данных, научится предсказывать «остаётся» для всех и будет формально точной. Решение — SMOTE для синтетической балансировки, взвешивание классов в функции потерь или стратифицированная выборка. На практике взвешивание классов в XGBoost (параметр scale_pos_weight) работает проще всего.
Определение «оттока». Когда подписчик считается ушедшим? Не открывал 30 дней? 60? 90? Нажал «отписаться»? Универсального ответа нет — зависит от частоты рассылок и цикла покупки. Если вы отправляете раз в неделю, 30 дней без открытий — четыре пропущенных письма, это сигнал. Если раз в месяц — 30 дней — одно письмо, рано делать выводы.
Невалидные адреса как шум. Это тот фактор, который часто упускают. Если в базе 10-15% невалидных адресов, модель обучается на ложных данных. Мёртвый ящик не открывает письма — модель считает его «ушедшим подписчиком» и ищет паттерны там, где их нет. Результат — ложные срабатывания и сниженная точность по всей базе.
Churn-модель, обученная на грязной базе, предсказывает не отток подписчиков, а долю невалидных адресов. Сначала чистка — потом прогнозирование.
Валидация базы как фундамент прогнозирования
Любая модель хороша ровно настолько, насколько чисты данные, на которых она обучена. Для churn prediction это критично вдвойне: вы предсказываете поведение людей, а не технические ответы серверов. Каждый невалидный адрес в обучающей выборке — это шум, который снижает точность прогноза для настоящих подписчиков.
Что конкретно портит модель: одноразовые адреса (зарегистрировались ради скидки, ящик исчез через сутки), спам-ловушки (никогда не были живыми подписчиками), адреса с опечатками (gmial.com вместо gmail.com), корпоративные catch-all (сервер принимает всё, но ящик не читается).
В uChecker мы решаем именно эту задачу. Каждый адрес проходит проверку синтаксиса, DNS, SMTP и AI-скоринг риска. На выходе вы получаете не бинарное «валидный / невалидный», а уровень риска для каждого адреса. Перед обучением churn-модели достаточно исключить адреса с высоким риском — и качество прогноза ощутимо вырастет.
От прогноза к действию: три сценария
Модель выдала скор. Что дальше? Прогноз без действия — бесполезная таблица. Вот три сценария, которые закрывают большинство ситуаций.
Сценарий 1: ранний win-back (скор 0.5–0.7). Подписчик теряет интерес, но ещё не ушёл. Здесь работает контент, а не скидки. Отправьте полезный материал — подборку, кейс, инструкцию. Покажите ценность рассылки, не прибегая к финансовым стимулам. По нашим данным, контентный win-back возвращает 15-25% подписчиков из этой группы.
Сценарий 2: агрессивный win-back (скор 0.7–0.9). Подписчик почти ушёл. Контент не поможет — нужен конкретный повод остаться. Персональная скидка, бонус за следующий заказ, эксклюзивный доступ. Важно: одно письмо, а не серия. Серию в этом состоянии воспринимают как давление.
Сценарий 3: мягкое отпускание (скор выше 0.9). Здесь win-back неэффективен. Подписчик ушёл ментально, осталось техническое оформление. Лучшая стратегия — снизить частоту отправки до минимума (раз в месяц) или перевести в отдельный сегмент с другим контентом. Через 90 дней без активности — удалить из основной базы. Это не потеря, это гигиена.
Частая ошибка
«Мы скучаем по вам» с грустным смайликом — не win-back. Это раздражает. Подписчик ушёл не потому, что забыл о вас, а потому что перестал видеть ценность. Дайте ценность, а не эмоциональный шантаж.
Внедрение: от нуля до рабочей системы
Пошаговый план, который работает для команд без выделенного data-scientist-а:
- Почистить базу. Загрузите список в валидатор, удалите невалидные и высокорискованные адреса. Без этого шага всё остальное не имеет смысла.
- Определить «отток» для вашего бизнеса. Зафиксируйте критерий: например, «не открывал 5 последних писем или 45 дней без активности». Критерий должен соответствовать вашей частоте отправки.
- Собрать исторические данные. Минимум — 6 месяцев логов открытий и кликов. Лучше — 12. Экспортируйте из ESP в CSV или подключите через API.
- Построить baseline. Логистическая регрессия на 5-7 признаках. Не бустинг, не нейросеть — простая модель, которую можно поднять за день. Оценить F1 и AUC-ROC.
- Автоматизировать скоринг. Раз в неделю прогоняйте базу через модель, обновляйте скоры. Интегрируйте результат в ESP через тег или custom property.
- Настроить триггеры. Автоматический win-back при достижении порогового скора. Разные сценарии для разных уровней риска.
- Измерить результат через 8-12 недель. Сравните churn rate до и после. Посмотрите, сколько подписчиков вернулись через win-back. Посчитайте ROI.
Что реально ожидать
Обещать снижение оттока «в разы» было бы неправдой. Вот цифры, которые мы наблюдаем у команд, внедривших churn prediction с чистой базой:
- Снижение оттока на 15-25% за первый квартал. Не на 200%, не «в разы» — на пятую-четвёртую часть. На базе в 200 000 это 3 000–5 000 сохранённых подписчиков.
- Рост open rate на 3-7%. За счёт удаления неактивных и адресной реактивации колеблющихся.
- Экономия на ESP. Меньше мёртвых адресов в базе — меньше платите за хранение и отправку.
- Улучшение репутации домена. Меньше bounce-ов, выше вовлечённость — почтовые провайдеры лучше относятся к вашим рассылкам.
Удержать подписчика стоит в 5-7 раз дешевле, чем привлечь нового. Даже скромное снижение оттока даёт ощутимый финансовый эффект при масштабе.
Ошибки, которые убивают эффект
Несколько граблей, на которые наступают регулярно:
- Обучение на грязных данных. Повторю: невалидные адреса в обучающей выборке — главный источник ложных срабатываний. Валидация базы перед обучением модели — обязательный шаг.
- Одинаковый win-back для всех. Подписчик со скором 0.5 и подписчик со скором 0.9 — это разные люди в разных состояниях. Один шаблон не работает.
- Модель обучена и забыта. Поведение подписчиков меняется: сезонность, смена продуктовой линейки, изменение частоты рассылок. Дообучайте модель раз в квартал, минимум.
- Игнорирование порога. Порог скора — не константа. Слишком низкий — завалите win-back-ами тех, кто и так остаётся. Слишком высокий — пропустите реальный отток. Начните с 0.6 и калибруйте по результатам.
Итого
Churn prediction в email — не экспериментальная технология и не привилегия крупных компаний с data-science-отделом. Инструменты доступны: от встроенного скоринга в ESP до XGBoost, который поднимается за день. Алгоритмы понятны, данные у вас уже есть.
Узкое место — качество данных. Модель, обученная на базе с 10% невалидных адресов, будет стабильно ошибаться. Модель, обученная на чистых данных, начнёт экономить вам деньги с первого месяца.
Порядок действий: почистить базу, определить критерий оттока, построить baseline-модель, автоматизировать скоринг, настроить триггерные сценарии. Не параллельно, а последовательно. Каждый шаг зависит от предыдущего.
Начните с фундамента — проверьте базу в uChecker. Чистые данные — чистые прогнозы.
