В продуктовых исследованиях часто встаёт вопрос — как не просто описывать поведение пользователей, а управлять им: понимать, кто уйдёт в отток, кто готов к апсейлу, а кому стоит предложить скидку или новую фичу. ML-модели позволяют формализовать закономерности в данных и прогнозировать, как конкретный пользователь поведёт себя в будущем или как изменится его поведение под воздействием наших действий.
В этой статье я собрал три типа моделей, которые часто используются в решении таких задач. Первая помогает предсказать целевое действие пользователя и понять, кто из них склонен к оттоку, апсейлу или активации. Вторая оценивает эффект от наших воздействий и позволяет отличить реальное влияние от «органики». Третья выбирает оптимальное воздействие для конкретного пользователя, превращая аналитику в инструмент персонализированного управления поведением.
По мере чтения логика повествования будет усложняться вместе с моделями: от прямых прогнозов и вероятностных оценок — к анализу причинно-следственных связей и, наконец, к задачам выбора оптимального воздействия. Это отражает естественное развитие ML в продукте — от прогнозирования событий к управлению поведением и принятию решений на основе данных. Давайте начнем ?
Модель №1: Предсказание целевого действия
В продуктовой аналитике одна из самых востребованных задач — предсказать, какое действие совершит конкретный пользователь в будущем. Купит ли он товар? Продлит подписку? Вернётся в сервис или уйдёт в отток?
Для этого применяют ML-модели, которые рассчитывают вероятность наступления целевого события. Причём целевым событием может быть практически что угодно — от покупки до отказа от продукта. Их ценность в том, что прогнозы позволяют сегментировать аудиторию: кто близок к уходу, кто готов к апсейлу, а кого можно эффективно реактивировать.
Часто внедрение ML в продуктовой аналитике начинается с таких моделей. Они относительно просты в реализации, понятны бизнесу и дают быстрый измеримый эффект без сложных архитектур и долгих экспериментов.
Примеры:
Примеров подобных моделей можно привести множество — вот несколько наиболее популярных:
Предсказание оттока. Модель прогнозирует вероятность того, что пользователь перестанет пользоваться продуктом в ближайшее время. Это помогает запускать удерживающие кампании на прогнозируемый отток.
Апсейл и кросс-сейл. Модель определяет, кто готов перейти на более дорогой тариф или купить дополнительный продукт. Такие сценарии напрямую повышают LTV и ARPU, позволяя расти не только за счёт новых пользователей, но и за счёт существующих.
Вероятность активации. Классическая задача для новых пользователей: прогнозируем, дойдёт ли человек до первого целевого действия (оформит заказ, сделает покупку). Это позволяет точечно помогать тем, кто “застревает” на пути к активации.
С точки зрения ML все эти задачи отличается только тем, какое событие мы предсказываем и какие признаки используются, в остальном их логика построения не отличается. Поэтому их удобно рассматривать в одном блоке.
Данные
Главное преимущество таких задач в том, что не нужно проводить дополнительные эксперименты — достаточно исторических логов о действиях пользователей. Мы берём выборку, размечаем, совершил ли пользователь целевое действие и строим признаки, которые могли повлиять на этот исход.
Очевидно, что сами признаки будут сильно зависеть от конкретной задачи, но в целом весь фичеинжиниринг сводится к нескольким базовым приёмам:
Характеристики пользователя: всё, что описывает пользователя как в реальном мире, так и внутри сервиса: возраст, пол, регион, устройство, а также наличие подписки, тариф, статус аккаунта и тд.
Агрегаты по временным окнам: считаем активность за разные периоды (например, 7, 30, 90 дней): количество событий, суммы, средние. Таким образом оцениваем как и саму активность пользователя так и долгосрочные паттерны.
Интервальные фичи: время с последнего или первого действия, средний промежуток между событиями, темпы роста/спада при сравнении разных окон.
Календарные факторы: день недели, месяц, сезонность. Многие процессы цикличны, и такие признаки помогают учитывать повторяющиеся паттерны.
Производные признаки: помимо простых агрегатов, часто полезно рассчитывать более “умные” характеристики: отношения между окнами, доля активных дней в периоде, нормализация метрик на пользователя, отношение суммы покупок к среднему значению и тд.
Модель
Когда данные подготовлены, задача сводится к классической бинарной классификации с предсказанием вероятности классов: по набору признаков модель должна оценить вероятность наступления целевого события.
Для решения таких задач существует множество моделей. На практике оптимальным вариантом является градиентный бустинг (XGBoost, LightGBM, CatBoost). Другие методы встречаются реже — логистическая регрессия (если нужна интерпретируемость прогноза), случайный лес (долго обучается, но работает), нейросети (редко, в более сложных моделях).
Чтобы корректно обучить и проверить модель, данные делят на несколько частей: train — для обучения; validation — для подбора гиперпараметров и контроля переобучения; test — для финальной проверки качества. В подобных задачах разбиение часто делают по времени: модель должна учиться на прошлом и проверяться на будущем. Возможно это не так критично при разделении на train и validation, но точно важно когда мы говорим про test.
Подробнее про оценку качества таких моделей я рассказывал в этой статье.
Выкатка в прод и поддержка
Одно из ключевых преимуществ таких моделей в том, что для их оценки не требуется проведения особого A/B-тестирования. Достаточно следить, чтобы модель сохраняла репрезентативность — то есть продолжала корректно решать исходную задачу и выделять пользователей с нужным паттерном поведения. Однако при использовании важно учитывать два фактора:
Во-первых, такие модели чаще всего применяются не ради самих прогнозов, а для формирования сегментов пользователей, на которые бизнес затем воздействует — через акции, рекомендации или новые фичи. Такое воздействие меняет поведение пользователей, и модель перестаёт видеть их естественные (органические) паттерны.
Во-вторых, даже без внешнего воздействия качество модели со временем деградирует: пользователи с теми же характеристиками начинают вести себя иначе под влиянием скрытых факторов. Это явление известно как drift — смещение данных или концепции.
Чтобы контролировать эти эффекты, при выкатке модели в продакшн обычно выделяют контрольную группу пользователей, не участвующих в промо-активностях. Она помогает: измерять uplift от воздействия, оценивать базовое качество прогнозов и обновлять модель в будущем.
Поддерживать модель можно двумя способами:
Регулярное обучение модели на новых данных — надёжно, но ресурсоёмко;
Калибровка прогнозов, когда структура модели сохраняется, а вероятности подстраиваются под свежие данные — быстрее и дешевле.
Подробнее о калибровочных моделях я рассказывал в этой статье про поведенческие модели в кредитных рисках.
Модель №2: Uplift-модели
В продуктовых задачах часто нужно не просто понять, кто совершит целевое действие, а кто совершит его благодаря нашему воздействию (рассылке, пушу, скидке или новой фиче). Ведь если пользователь и так купил бы товар, то скидка для компании была потрачена впустую. А если бы не купил — значит, мы действительно повлияли на его поведение.
Для этого применяют uplift-модели которые предсказывают не вероятность события, а разницу в вероятностях события с воздействием и без него. По сути, модель оценивает, насколько конкретный пользователь “восприимчив” к воздействию, и помогает выбрать тех, на кого оно подействует сильнее всего.
Другими словами, можно сказать, что uplift-модели помогают формировать релевантный сегмент пользователей, при этом очищая его от "органики". И это очень полезно, так как помогает оптимизировать ресурсы (бюджет) и не беспокоить пользователей которым это не нужно.
Примеры:
Uplift-модели полезны там, где бизнесу важно понять реальный прирост от воздействия. Вот несколько примеров:
Реактивации пользователей. Модель помогает выделить тех пользователей из оттока, кто действительно изменит своё поведение под влиянием акции и не тратить бюджет на тех, кто либо вернулся бы сам, либо всё равно не откликнется.
Промо-кампании в e-commerce. Cкидки и кэшбэки часто раздаются массово, но uplift-модели позволяют отделить “чувствительных” пользователей от “органических” покупателей. В результате предложение получает только тот сегмент, где это экономически оправдано.
Данные:
Для построения uplift-модели сначала данные собирают через A/B-эксперимент с рандомизацией: пользователи случайным образом делятся на группы воздействие и контроль (воздействие назначается случайно). Если есть возможность, полезно провести несколько экспериментов с одинаковой механикой — это увеличивает разнообразие обучающей выборки и делает модель устойчивее.
Обычно такие эксперименты проводят уже на релевантную аудиторию, например, по бизнес-критериям (тип клиента, активность, регион) или по предыдущей модели предсказания целевого действия (например, пользователи с высокой вероятностью оттока). Важно, чтобы эксперимент проходил в тех же условиях, в которых впоследствии будет использоваться uplift-модель: та же механика воздействия, та же продолжительность и такие же пользователи.
После завершения эксперимента для каждого пользователя фиксируется, совершил ли он целевое действие, принадлежность к тестовой или контрольной группе и собираются все релевантные признаки, описывающие поведение до воздействия. Именно на этих данных и обучается uplift-модель.
Модель
Uplift-модель должна оценить разность вероятностей совершить целевое действие с воздействием и без него (для бинарной метрики):
uplift(x) ≈ P(Y=1 | X=x, T=1) − P(Y=1 | X=x, T=0),
где T ∈ {0,1} - наличие воздействия, Y ∈ {0,1} - целевое действие, Х - характеристики пользователя. Способов построения таких моделей можно привести несколько.
T-learner
Пожалуй самый популярный подход, строятся две независимые модели бинарной классификации:
a1(x) = P(Y=1 | X=x, T=1) — модель для предсказания вероятности целевого действия для пользователей получивших воздействие.
a2(x) = P(Y=1 | X=x, T=0) — модель для предсказания вероятности целевого действия для пользователей НЕ получивших воздействие.
Uplift оценивается как разность прогнозов двух моделей: uplift(x) = a1(x) - a2(x).
Просто, гибко и хорошо работает. Недостаток — каждая модель “не видит” данных другой группы.
S-learner
Строится одна модель бинарной классификации для предсказания целевого действия, где наличие воздействия T ∈ {0,1} является одним из признак модели a(x) = P(Y=1 | X=x, T=t).
Uplift при этом оценивается как разность прогнозов для пользователя с воздействием и без него: uplift(x) = a(x, T=1) - a(x, T=0).
Такой подход прост в реализации, но чувствителен к взаимосвязям между признаками: если само воздействие T слабо влияет на целевое действие или сильно коррелирует с другими признаками, в модели могут появляться артефакты и смещения в оценке uplift.
X-learner
Усовершенствование T/S подходов. Это комбинация двух подходов T-learner и S-learner. Работает в несколько этапов:
1) Строим модели T-learner
a1(x) — для предсказания вероятности целевого действия для пользователей получивших воздействие.
a2(x) — для предсказания вероятности целевого действия для пользователей НЕ получивших воздействие
2) Вычисляем псевдо-эффекты
Для каждого пользователя считаем разницу между его фактическим откликом и предсказанием модели, обученной на противоположной группе:
Для пользователей, которые получили воздействие (T=1): D1 = Y−a2(x).
Для пользователей, которые НЕ получили воздействие (T=0): D2 = a1(x)−Y.
D1 и D2 — по сути показывают, как воздействие или его отсутствие повлияло на конкретного пользователя. Положительное значение означает, что воздействие повысило вероятность целевого действия; отрицательное — что эффект оказался отрицательным; нулевое — что поведение пользователя не изменилось.
3) Строим модели псевдо-эффектов
Обучаем две регрессионные модели на получившиеся псевдо-эффекты:
m1(x) - на данных с T=1 и таргетом D1,
m2(x) - на данных с T=0 и таргетом D2.
По факту мы учимся предсказывать при каких признаках воздействие помогает, а при каких — нет.
4) Комбинируем эффекты и оцениваем uplift
Финальная uplift-оценка получается как взвешенная комбинация этих двух моделей:
uplift(x)=w(x)⋅m1(x)+(1−w(x))⋅m2(x),
где w(x) это вес, зависящий от вероятности попадания в тестовую или контрольную группу.
Если разделение на тестовую и контрольную группу было произведено случайным образом, то w(x) - это просто константа (например, если тест = контроль, то w(x) = 0.5). Если же пользователи в тесте и контроле разделены не случайно, то для оценки w(x) лучше построить отдельную модель которая будет предсказывать вероятность попадания в тест T (1 — тест, 0 — контроль).
Выкатка в прод и поддержка
Чтобы оценить качество uplift-модели, требуется провести новый эксперимент. Пользователей делят на несколько групп случайным образом:
Случайная выборка без участия модели — контроль для базового сравнения. В ней часть пользователей получает воздействие, часть остаётся без него.
Группа, выбранная по прогнозу модели (например, top-20% по uplift из оставшихся пользователей). Здесь также часть получает воздействие, а часть — нет, чтобы измерить реальный uplift, предсказанный моделью.
Это позволяет измерить uplift-метрики и понять, действительно ли модель выделяет “восприимчивых” пользователей.
Поддерживать uplift-модели сложнее, чем обычные прогнозные. Во-первых, нужно регулярно повторять эксперименты, чтобы убедиться, что uplift-эффект сохраняется и модель по-прежнему корректно выделяет восприимчивых пользователей. Во-вторых, любое изменение механики воздействия фактически создаёт новую причинно-следственную зависимость, и модель приходится обучать заново.
Кроме того, uplift-модели подвержены drift-эффектам: со временем пользователи начинают иначе реагировать на одни и те же стимулы. Поэтому в продакшне всегда стоит оставлять случайную контрольную выборку без участия модели, чтобы отслеживать изменение эффекта и иметь базу для обновления модели.
Модель №3: Модели оптимального воздействия
Если в первых двух моделях мы предсказывали, что сделает пользователь или как он отреагирует на воздействие, то теперь задача — понять, какое воздействие выбрать.
Речь идёт о случаях, когда у нас есть несколько возможных офферов или сценариев коммуникации, а пользователю нужно показать один или несколько лучших (промокод, скидку, пуш, баннер или новую фичу). Очевидно, что разные пользователи реагируют по‑разному — универсального «лучшего» оффера не бывает.
Для таких ситуаций применяются подобные модели — они подбирают оптимальное предложение для конкретного пользователя, исходя из его вероятного отклика или ожидаемой ценности.
По сути, это расширение uplift-подхода в многовариантной постановке: нужно выбрать наилучшее действие из нескольких возможных, а не просто решить “показывать или нет”. Такая постановка известна как multi-treatment uplift modeling — следующий шаг эволюции ML в персонализированных коммуникациях и продуктовой аналитике.
Примеры
Модели оптимизации воздействия особенно полезны, когда у бизнеса есть несколько вариантов коммуникации или предложений, и нужно выбрать, кому что показать, чтобы максимизировать целевую метрику.
Промо и скидочные кампании. В e-commerce часто одновременно действуют десятки акций: скидки, кэшбэки, бесплатная доставка, промокоды на категории. Модель помогает определить, какое предложение даст наибольший эффект для конкретного пользователя, а не рассылать всё подряд. Это повышает экономическую эффективность промо и снижает “шум” коммуникаций.
Каналы взаимодействия. Пользователь может по-разному реагировать на push, e-mail, баннер или SMS. Multi-uplift модель выбирает канал с наибольшей вероятностью отклика, фактически превращая управление коммуникациями в оптимизационную задачу.
Данные
Как и в uplift-моделях, данные для обучения собираются через рандомизированный эксперимент, но теперь в нём участвует несколько тестовых групп по числу воздействий и одна контрольная. Пользователи случайным образом распределяются между группами, чтобы модель могла корректно оценить разницу эффектов между воздействиями.
Кроме того, несколько независимых экспериментов лучше, чем один: это повышает разнообразие выборки, помогает модели различать контексты и снижает риск переобучения на особенности конкретной кампании.
В данных для каждого пользователя фиксируются: принадлежность к группе (контроль или конкретный оффер); факт целевого действия (например, покупка, активация, продление); набор признаков, описывающих поведение до воздействия.
Модель
В классической uplift-модели сравниваются две группы — с воздействием и без него. Здесь ситуация сложнее: воздействий несколько, и модель должна предсказать вероятность целевого действия при каждом варианте, чтобы затем выбрать наилучший:
a(x)=argmax(P(Y=1|X=x,T=t)) по t из T,
где X — признаки пользователя, T ∈ {0, t1, t2,...,tn}— набор воздействий (офферов) с учётом варианта “без воздействия”, а Y ∈ {0,1} — целевое действие. Фактически, модель для каждого пользователя сравнивает ожидаемый эффект разных воздействий и выбирает то, которое способно принести наибольшую пользу.
Важно отметить, что в этой формуле есть смелые допущение: максимизация вероятности целевого действия = лучший выбор воздействия. К этому мы вернемся чуть позже. Однако независимо от способа выбора оптимального воздействия суть подхода будет не сильно меняться: модель выбирает воздействие, которое даёт наилучший ожидаемый результат для конкретного пользователя. Методов решения такой задачи существует немало, ниже приведены некоторые из них.
One-vs-Rest
Самый прямолинейный вариант (аналог T-learner) — обучить отдельную uplift-модель для каждого воздействия относительно контрольной группы. Например, если у нас три оффера A, B и C, то обучаем:
uplift_A(x) = эффект воздействия A по сравнению с контролем,
uplift_B(x) = эффект воздействия B по сравнению с контролем,
uplift_C(x) = эффект воздействия C по сравнению с контролем.
На этапе применения выбираем оффер с максимальным uplift.
Этот подход прост в реализации, легко интерпретируется и хорошо работает при умеренном количестве воздействий. Однако при большом числе офферов может быть вычислительно дорогим и требовать большого объёма данных для обучения.
Joint multi-treatment model
В этом случае воздействие T включается в модель как категориальный признак (аналогично S-learner), а модель обучается сразу на всех данных.
Тогда uplift для каждого воздействия оценивается как:
uplift(x,t)=P(Y=1|X=x,T=t)−P(Y=1|X=x,T=0),
где T=0 — контроль без воздействия. А выбор оптимального воздействии производится по максимальному значению uplift.
Этот вариант эффективен при большом числе воздействий и хорошо масштабируется, но требует аккуратного подхода к обработке дисбаланса между группами.
Обобщения и развитие подхода
Принцип выбора “оптимального” воздействия может сильно различаться в зависимости от задачи. Например, предположим, что у компании есть две скидки — 5% и 50%. С точки зрения вероятности покупки (целевого действия) более высокая скидка почти всегда выглядит лучше, но в экономическом смысле не факт: дополнительная конверсия может не компенсировать потери от высокого оффера.
Поэтому функцию оптимизации можно задавать по-разному. На практике можно оптимизировать почти любую метрику "R", которая считается основной при принятии решения о выборе воздействия:
a(x)=argmax(R(X=x,T=t)) по t из T.
Такая логика хорошо встраивается в классические схемы One-vs-Rest uplift и Joint multi-treatment model. В одних случаях можно напрямую прогнозировать бизнес-метрики (прибыль, удержание, LTV), в других строить дополнительные модели, которые оценивают недостающие составляющие (например, ожидаемые затраты) и уже после использовать их для принятия решения. Со временем такие модели перерастают в полноценные системы, где несколько моделей описывают разные аспекты поведения пользователей и совместно формируют механизм принятия решений. Но это уже тема для отдельной статьи.
Выкатка в прод и поддержка
После обучения модели обычно проводят отдельный A/B-тест. Пользователей делят на три группы:
Контроль: часть пользователей не получает воздействие.
Тест 1: где воздействие назначаются по текущей бизнес-логике или случайным образом.
Тест 2: где воздействие выбираются на основе прогнозов модели.
Это позволяет сравнить эффективность новой стратегии с существующей и оценить, действительно ли модель увеличивает целевую метрику, а также оценить аплифты от наших механик.
Поддерживать такие модели сложнее, чем классические uplift-модели, поскольку любое изменение механики воздействий фактически создаёт новую среду. Кроме того, реакция пользователей на те же стимулы может меняться со временем, что приводит к дрейфу данных.
Чтобы контролировать эти эффекты, в продакшне обычно оставляют небольшую контрольную выборку пользователей, на которых офферы назначаются случайно. Это позволяет отслеживать качество модели, измерять uplift от новой стратегии и сохранять базу для дальнейшего обновления модели.
Заключение
Каждая из описанных моделей решает свой класс продуктовых задач — от прогнозирования поведения до выбора оптимального воздействия. Вместе они образуют рабочий каркас, на котором можно строить аналитику следующего уровня: когда решения опираются не только на метрики, но и на вероятностные оценки и причинно-следственные эффекты.
При этом, сами описанные модели можно изменять, развивать и усложнять. Например, в этой статья я больше сделал акцент на моделях на основе классификации, но все эти подходы также работают и для регрессий. Более того, на практике часто используется не одна отдельная модель, а набор взаимосвязанных решений, которые оценивают разные аспекты поведения пользователя.
Кроме того, этот список далеко не полный. В продуктовой аналитике активно используются и другие подходы — модели прогноза LTV, Propensity Score Matching для оценки эффектов без экспериментов, модели ранжирования и тд. У всех у них разная цель, но общая идея — лучше понимать, почему пользователь действует именно так и что можно сделать, чтобы изменить это поведение.
Если материал окажется полезным, сделаю продолжение — во второй части разберу более сложные и специализированные подходы. А пока будет интересно узнать, какие ML-модели вы применяете в своих продуктах и какие из них действительно показали результат — расскажите в комментариях.
Другие статьи автора: