Uplift-моделирование: кому оффер реально нужен, а кому нет
Uplift-моделирование: кому оффер реально нужен, а кому нет
Разослали скидку 100 000 клиентам, продажи выросли на 3% — с виду победа. Но если приглядеться, окажется, что 90% из них купили бы и так, а деньги на скидку просто ушли в минус маржи. Обычная модель «кто купит» при точечных воздействиях — промо, скидках, ретеншн-механиках — регулярно приводит к одному и тому же: воздействие достается тем, кто и так сделал бы целевое действие. Проблема не в самом оффере, а в том, кому его дают.
Response-модель vs uplift-модель
Response-модель — это обычная модель бинарной классификации, с которой все и так работают: на вход признаки человека, на выходе вероятность целевого действия (купит / не купит). Она ничего не знает про воздействие — просто ранжирует людей по вероятности события.
Uplift-модель предсказывает другое — не вероятность события, а разницу в поведении человека от того, было воздействие или нет. Интересует не «кто совершит действие», а «кто совершит его именно из-за воздействия, а не сделал бы это и так».
Классическая рамка — 4 типа людей
➖ Persuadables (убеждаемые) — среагируют только если дать воздействие. Это и есть целевая аудитория.
➖ Sure things (уже решившие) — сделают целевое действие в любом случае, воздействие на них потрачено впустую.
➖ Lost causes (потерянные) — не сделают при любом раскладе, воздействие бесполезно.
➖ Sleeping dogs (спящие собаки) — воздействие их отпугивает или обесценивает то, что они и так планировали. Таким воздействие может вредить.
Response-модель хорошо ловит sure things (высокая вероятность отклика) и путает их с persuadables. Uplift-модель нужна, чтобы их развести.
Как построить проще всего — T-learner
Две отдельные модели одинаковой архитектуры:
➖ model target — обучена только на людях, получивших воздействие, предсказывает их результат
➖ model control — обучена только на людях без воздействия, предсказывает то же самое, но без него
Для любого человека считаем обе модели на его признаках и берем разницу — это оценка персонального причинного эффекта: predicted_uplift = model_target(x) − model_control(x)
Условие, без которого это не работает: честная рандомизация в исходных данных. И это не только про одну волну — если модель учат на истории нескольких кампаний, важно, чтобы во всех волнах таргетинг был одинаково случайным, а сама аудитория и условия оффера не успели уехать слишком далеко. Иначе разница между моделями отражает не воздействие, а то, что волны изначально были разными.
Другие подходы, если хочется копнуть дальше
➖ S-learner — одна модель на всех данных, с признаком «было ли воздействие». Проще, но хуже ловит взаимодействие признаков с воздействием
➖ X-learner — модификация T-learner, лучше работает при сильно несбалансированных группах (например, 90/10)
➖ Uplift-деревья / causal forest — разбиения дерева строятся не по точности предсказания, а прямо по максимизации разницы между группами. Более нативный подход, но сложнее в реализации и интерпретации
Как проверять качество
Обычные метрики (R², accuracy) не работают — для конкретного человека нет одновременно факта «с воздействием» и факта «без воздействия», посчитать ошибку предсказания не на чем.
Стандартный подход —
Qini-кривая
(аналог ROC/lift-кривой для uplift-задач): делим людей на группы по предсказанному аплифту, внутри каждой группы сравниваем реальную разницу между теми, кто был в target, и теми, кто в control. Если модель работает — разница растет от группы с низким предсказанием к группе с высоким.
Где применять
➖ Промо и бонусы.
Раздавать скидку не всем подряд, а тем, для кого она реально сдвинет решение о покупке
➖ Антиоттоковые механики.
Не всем похожим на уходящих клиентов слать удерживающее предложение, а только тем, кого оно правда удержит — часть «уходящих» уйдет при любом предложении, часть осталась бы и так
➖ Апсейл и кредитные лимиты.
Предлагать увеличение лимита или допродажу тем клиентам, для кого предложение станет решающим фактором, а не тем, кто купит и без него
➖ Частота коммуникаций.
Не завалива
Откликнуться в Telegram →
⚠️ Никогда не платите «за оформление» или «гарантию трудоустройства» — это признак мошенников. Работа ТРУ не несёт ответственности за содержание вакансии.