Сколько денег вы прямо сейчас тратите на удержание тех, кто уже принял решение уйти, но ещё не нажал кнопку отписки? Если ваш ответ базируется на отчётах об уже закрытых контрактах или удалённых аккаунтах, вы не управляете удержанием. В Morana Labs мы пишем суровый индастриал ИИ, разворачиваем edge-вычисления на железе заказчика под жёсткий high-load и гоняем алгоритмы reinforcement learning. Но когда владельцы бизнеса, CRM-директора или маркетологи приходят к нам с пробитым дном клиентской базы, техническая проблема всегда обнажает бизнес-иллюзию. Бизнес узнаёт об уходе по факту. Когда счёт не оплачен, а приложение снесено. Удерживать в этот момент уже поздно и бесконечно дорого. Грамотный прогноз оттока клиентов — это способность поймать уходящего за недели до того, как он уйдёт, пока паттерн его поведения только начал незаметно меняться.
Тут обычно возникает оппонент из отдела маркетинга и уверенно заявляет: «А мы и так всё контролируем. Если человек не заходил неделю, триггерная цепочка шлёт ему пуш с промокодом на пятьдесят процентов». Приходится объяснять, что это не предсказание churn. Это попытка сделать дефибрилляцию трупу, причём за счёт вашей же маржи. Реальные признаки скорого ухода прячутся гораздо глубже. Это не обнуление активности, а её дрейф. Клиент раньше открывал ваш дашборд или витрину каждый день в девять утра, а теперь заходит раз в три дня ближе к вечеру. Он перестал использовать сложную фильтрацию, ограничиваясь базовым поиском. Доля отброшенных корзин выросла на пару процентов. Время сессии сократилось, хотя частота логинов пока держится на плаву. Чтобы вытащить эти неочевидные паттерны, агрегированных метрик вроде DAU или MAU критически недостаточно.
«Хорошо, — не сдаётся скептик, — мы купим модную CDP-платформу, она нам сама посчитает скоринг». Платформы из коробки строят усреднённые линейные аппроксимации. Модель скоринга риска оттока, которая действительно работает на ваших данных, обязана понимать нелинейные связи вашей конкретной экономики. Нам нужно для каждого отдельного пользователя в реальном времени считать вероятность того, что он не совершит целевое действие в горизонте, скажем, двадцати одного дня. Это классическая задача бинарной классификации, куда мы скармливаем сотни фичей: от базовых RFM-показателей до дисперсии времени между транзакциями и изменения графа переходов по экранам.
WITH user_lags AS (
SELECT
user_id,
event_date,
LAG(event_date) OVER (PARTITION BY user_id ORDER BY event_date) as prev_date
FROM transactions
WHERE event_date >= CURRENT_DATE - INTERVAL '90 days'
)
SELECT
user_id,
AVG(event_date - prev_date) as mean_days_between,
STDDEV(event_date - prev_date) as std_days_between
FROM user_lags
GROUP BY user_id
HAVING COUNT(prev_date) > 2;Это простейший, но рабочий пример того, как на уровне базы данных мы извлекаем дисперсию интервалов покупок. Увеличивающийся разброс (std_days_between) часто становится самым сильным предиктором скорого оттока, бьющим любые статические характеристики профиля вроде пола, возраста или региона. Как только мы на лету высчитываем эти вероятности оттока, начинается самое сложное. От прогноза нужно переходить к действию.
Мой воображаемый оппонент в этот момент радуется: «Отлично, мы отскорили базу, теперь давайте зальём топ-20% самых рисковых клиентов агрессивными скидками!» Это самая разрушительная ошибка в anti-churn кампаниях. Вы раздадите живые деньги двум категориям людей: тем, кто твёрдо собирался уйти (они возьмут скидку, выжмут её и всё равно уйдут через месяц), и тем, кто уходить на самом деле не собирался, но модель дала по ним ложноположительный сигнал (false positive). Экономика удержания обязана биться с экономикой привлечения. Злоупотреблять скидками нельзя, иначе вы просто приучите аудиторию шантажировать вас пассивностью. Вместо этого матрица удержания должна сегментироваться математически: мы вмешиваемся только тогда, когда ожидаемая ценность удержания превышает стоимость самого удержания. Высокомаржинальным клиентам с критическим риском звонит персональный менеджер; среднему сегменту предлагается бесплатный аудит или эксклюзивный немонетарный бонус; низкомаржинальный сегмент получает автоматическую цепочку писем; а безнадёжным и убыточным «отказникам» мы не даём вообще ничего, экономя бюджет.
Но тут скептик достаёт свой главный козырь, и его аргумент звучит как приговор: «Мы пробовали машинное обучение полгода назад. Первые два месяца оно предсказывало идеально, а потом вероятности превратились в тыкву». И он абсолютно прав. Это суровая реальность продакшена, о которой молчат на конференциях. Происходит дрейф поведения (behavioral drift). Меняется сезонность, вы выкатываете новый интерфейс, ломающий старые пути пользователя, конкурент запускает масштабную акцию — и паттерны, на которых учился ваш алгоритм, перестают отражать реальность. Ваша модель оказывается переобучена на вчерашний мир. Процесс должен быть непрерывным: пайплайн MLOps обязан мониторить метрики распределения признаков (data drift) на бою и автоматически запускать дообучение, как только статистика уплывает за безопасные доверительные интервалы.
Жизнеспособный сценарий внедрения anti-churn системы всегда прагматичен и лишен магии. Сначала мы выстраиваем железобетонный пайплайн сбора сырых логов — без пропусков, дублей и потерь при высокой нагрузке. Затем формируем витрину поведенческих признаков, где каждое историческое действие имеет строгий таймстемп, чтобы избежать случайного заглядывания в будущее (data leakage) при тренировке. Дальше обучаем ансамбль решающих деревьев, чаще всего градиентный бустинг, который отлично переваривает разнородные категориальные данные и выдаёт интерпретируемый анализ важности фичей: мы видим глазами, почему именно конкретный человек попал в красную зону. И финальный шаг — интеграция этих вероятностей напрямую в каналы коммуникации, где CRM-маркетинг настраивает триггеры, опираясь исключительно на LTV клиента. Только при таком подходе прогноз оттока превращается в инженерный механизм, который защищает ваши деньги, а не просто рисует красивые графики выгорания базы.