Отток это дыра в ведре, через которую утекает рост: можно сколько угодно лить новых пользователей сверху, но если треть из них уходит каждый месяц, продукт стоит на месте. Команды годами смотрят на графики новых регистраций и не замечают, что воронка внизу разъехалась, и каждая привлечённая когорта живёт всё меньше. Анализ оттока превращает эту дыру из ощущения в цифру, а предиктивные модели учатся замечать уходящего за неделю до того, как он нажал кнопку удаления.

Путь от цифры к модели укладывается в честную последовательность: сначала измерение по когортам, затем разбор причин, затем признаки и модель, затем кампании удержания с проверкой на живых группах. Ниже каждый шаг разобран с формулами, инструментами и типовыми ловушками, от подмены метрик до экономики вмешательства.

Отток как главная метрика роста и почему считать его надо по когортам

Отток считается просто: доля ушедших за период среди активных на его начало. Простота обманчива: общая цифра по всей базе смешивает свежие когорты, которые всегда уходят чаще, и зрелые, которые держатся годами, и одна средняя температура по больнице скрывает и то и другое. Когортный взгляд разворачивает картину: каждый месячный набор пользователей отслеживается своей строкой, и кривая выживания показывает, сколько из стартовой сотни осталось через месяц, через три, через год.

Кривая когорты сама подсказывает диагноз. Здоровый продукт после первых месяцев выходит на плато: ядро остаётся, кривая почти горизонтальна. Больной продукт стелется вниз без предела, и каждая когорта угасает полностью. Форма кривой важнее одной цифры, потому что продукты с одинаковым месячным оттоком могут иметь совершенно разную судьбу: одно дело выход на плато через квартал, другое бесконечное угасание.

Сравнение когорт между каналами привлечения даёт следующий слой: когорта из контекстной рекламы и когорта из рекомендаций живут по-разному, и это знание переносит усилия с количества привлечения на его качество. Периодичность расчёта задаётся ритмом продукта: подписки считают ежемесячно, сервисы с редкими визитами ежеквартально, и метрика без привязки к циклу продукта бессмысленна.

SELECT
  DATE_TRUNC('month', started_at) AS cohort,
  COUNT(*) AS users,
  SUM(CASE WHEN active_next_month THEN 0 ELSE 1 END) AS churned
FROM subscriptions
GROUP BY 1
ORDER BY 1;

Единица ухода тоже требует определения: удаление аккаунта это очевидный отток, а молчание три месяца при живом аккаунте отток функциональный, и каждый продукт обязан зафиксировать порог молчания, после которого пользователь считается ушедшим.

Добровольный и принудительный отток где теряются тихие деньги

Отток делится на два механизма с разной природой. Добровольный это осознанное решение: не пригодился, дорого, у конкурента лучше. Принудительный это техника: карта истекла, платёж не прошёл, подписка снялась сама, и человек порой не сразу узнаёт, что больше не клиент. Второй вид недооценён повсеместно: в подписочных продуктах на него приходится значимая доля всех потерь, и это те люди, которые не ушли, а выпали.

Борьба с принудительным оттоком скучна и выгодна: напоминания об истекающей карте заранее, повторные попытки списания по расписанию, запасные платёжные методы, вежливые письма о неудаче. Каждое письмо о не прошедшем платеже это дешевле, чем новый клиент взамен потерянного, и конверсия таких напоминаний высока, потому что получатель не терять собирался.

Отдельный контур это пауза вместо отмены: человек, нажимающий удалить, часто хочет передохнуть, а не расстаться, и предложение заморозить подписку на месяц возвращает часть решившихся уйти. Такой оффер честнее удержания скидкой и работает на доверие, а не на дисконтную зависимость.

Диагностика причин добровольного ухода строится на двух источниках: краткий опрос в момент отмены и разбор знаков до отмены. Опрос даёт слова, знаки дают поведение, и только их пересечение достойно доверия, потому что люди говорят одно, а графики их активности часто показывают другое.

Признаки для предсказания от активности до платежей и обращений в поддержку

Модель предсказания ест признаки, и сбор признаков это девяносто процентов работы. Частота входов и её тренд: пользователь, который приходил каждый день и стал раз в неделю, уже звучит иначе. Глубина использования: сколько функций продукта затрагивается, растёт ли набор или сузился до одной кнопки. Свежесть последнего визита относительно привычного ритма. Поведение в поддержке: рост обращений, тон последних тикетов, молчание после просьбы. Платёжная история: смены тарифа вниз, просрочки, неудачи списания.

model = lgb.LGBMClassifier()
model.fit(train[features], train["churned"])
proba = model.predict_proba(valid[features])[:, 1]

Признаки агрегируются за окна: неделя назад, месяц назад, квартал, и тренды между окнами. Плотность представления важнее сырых логов: сто аккуратных признаков на пользователя работают лучше, чем тысяча необработанных полей, и хранилище признаков с общими справочниками избавляет команду от вечного переписывания одних и тех же джойнов.

Дискретные события добавляют резкости: переход к лимиту тарифа, недавняя ошибка, невыгодное сравнение с конкурентом в переписке. Сезонность учитывается отдельно: лето и праздники сбивают ритм без намерения уйти, и модель без календарных признаков называет оттоком обычный отпуск.

Состав признаков пересматривается вместе с продуктом: новая фича обязана через месяц-два появиться в наборе, иначе модель слепа к новому поведению, и наоборот, признаки умерших функций вычищаются, чтобы не шумели.

Модели от базовой линии до градиентного бустинга и анализа выживаемости

Первый рубеж это всегда база без машинного обучения: правило неделя без входа у снижающейся активности. База задаёт планку, и модель, не обгоняющая простое правило, в продакшен не едет. Второй рубеж это логистическая регрессия на десятке признаков: обучается мгновенно, объяснима, и её веса по признакам сами подсказывают, где продукт теряет людей.

Третий рубеж это градиентный бустинг на деревьях: современные библиотеки съедают сотни признаков, ловят нелинейности и взаимодействия, и на табличных признаках оттока это стандарт индустрии. Четвёртый рубеж для любопытных это анализ выживаемости: вместо вопроса уйдёт ли в этом месяце модель отвечает, сколько проживёт, и кривые выживания по сегментам показывают, где продукт теряет своих людей быстрее всего.

model = lgb.LGBMClassifier()
model.fit(train[features], train["churned"])
proba = model.predict_proba(valid[features])[:, 1]

Горизонт прогноза задаётся возможностью действия: предсказание за месяц даёт время на кампанию, за день не даёт ничего, и модель обучается на событие в течение тридцати дней, а не завтрашний уход. Границы классов двигаются по экономике: высокорисковая группа для дорогого вмешательства уже, для дешёвого шире, и порог это цифра из расчёта окупаемости, а не из учебника.

Переобучение ловится честной схемой: обучение на прошлом, проверка на будущем, никаких утечек завтрашних событий в признаках, и одна утечка способна показать красивую модель, которая в бою оказывается шумом. Важность признаков после каждого обучения просматривается глазами: модель, чей главный признак совпадает с техническим полем, не умна, она жульничает.

Оценка модели честные метрики и проверка на живых кампаниях

Отток это несбалансированная задача: ушедших единицы процентов, и точность здесь лжёт. Модель, говорящая всем останутся, права в девяноста семи случаях из ста и бесполезна. Честные метрики это полнота и точность на выбранной группе риска, площадь под кривой для общего качества и таблица решений по порогам, где видно, сколько людей модель пометила и сколько из них правда уйдут.

Финальная оценка всегда живая: кампания удержания на помеченной группе против контрольной, и удержание меряется не качеством прогноза, а реальной разницей оттока между группами. Прогноз без действия не стоит ничего, и лучший способ проверить модель это проверить кампанию, которую она включает.

Календарная проверка дополняет живую: модель пересчитывается на свежем потоке, и дрейф метрик отслеживается по неделям, потому что поведение пользователей меняется вместе с продуктом, и прошлогодняя модель на сегодняшней базе тихо деградирует. Деградация модели это норма, а планка её обновления обязана быть частью регламента, а не реакцией на аварию.

Ретроспективная проверка завершает круг: раз в квартал список реально ушедших сверяется с пометками модели, и путь каждого пропущенного разбирается глазами. Это медленно, зато честно, и приносит находки, которых не видит ни одна метрика.

От прогноза к действию кампании удержания и экономика вмешательства

Прогноз без кампании это красивый график на стене. Действие строится по риску: верхняя группа риска получает живое касание, звонок или письмо от человека, средняя автоматическую цепочку, нижняя ничего, потому что тратить бюджет на тех, кто остался бы и так, расточительно. Экономика проста: стоимость касания умножить на размер группы против выручки от сохранённых, и цифра окупаемости решает порог модели.

Кампании удержания меряются честно: группа действия против контрольной, разница оттока, разница выручки на горизонте квартала. Скидка как инструмент удержания опасна привычкой: люди обучаются уходить ради дисконта, и выручка сегодня превращается в навсегда сниженный тариф. Продуктовые касания работают прочнее: помощь в использовании, разбор конкретной боли, предложение тарифа под реальные нужды.

Знаки риска должны определять содержание письма: молчащий получает письмо с лёгким онбордингом, задыхающийся в тарифе предложение о смене, столкнувшийся с ошибкой извинение и фикс. Одно письмо на весь риск это спам, письмо по причине риска это забота, и разница читается получателем мгновенно.

Успешная кампания удержания возвращается в модель кругом: кто получил касание, кто из них остался, какие признаки отличают спасённых от ушедших, и эти наблюдения уточняют следующую итерацию. Цикл модель, действие, результат и есть зрелый процесс удержания, а не разовой проект аналитиков.

Победа в кампании удержания измеряется выручкой, а не спасёнными галочками: сегмент риска живёт своей экономикой, где цена письма, звонка и скидки сравнивается с выжившей подпиской на горизонте полугода. Такой расчёт делает прогноз осязаемым для финансовой функции и защищает бюджет на удержание от первого же сокращения расходов.

Внедрение цикла от потока признаков до регулярного пересчёта

Зрелый цикл предсказания оттока живёт в четырёх частях: поток событий, хранилище признаков, обучение и скоринг, кампании с контролем. Поток событий собирается один раз и честно, хранилище признаков пересчитывается ежедневно, модель перевзвешивается по регламенту, кампании гоняются с контрольными группами всегда.

Команда и роли: аналитик владеет признаками и метриками, инженер владеет потоком и обучением, продуктовик владеет кампаниями, и владение это не подпись в чарте, а ответы на вопросы в любое время. Смешение ролей в одном человеке работает до определённого масштаба и потом ломается, и момент, когда цикл держится на одном энтузиасте, это лучший момент для найма второго.

Порядок внедрения цикла оттока свёрнут в короткую лестницу:

  1. зафиксировать определение ухода и считать отток по когортам ежемесячно;
  2. отделить принудительный отток и закрыть его платёжной гигиеной;
  3. собрать двадцать базовых признаков и обучить первую регрессию;
  4. перейти к бустингу и честной схеме проверки без утечек;
  5. выбрать порог по экономике вмешательства и запустить первую кампанию;
  6. мерить разницу с контрольной группой и возвращать наблюдения в модель;
  7. регламентировать пересчёт и следить за дрейфом по календарю.

Отток всегда будет, и задача не в нуле, а в честном пределе для своего рынка и своей когорты. Продукт, который видит дыру в ведре, понимает её форму и закрывает её до того, как вода уходит, растёт на тех же привлечённых пользователях дольше и дешевле, и именно в этом весь экономический смысл аналитики удержания.