Пару слов про аплифт моделирование
То ли я криво ищу, то ли на тему индустриального аплифт моделирования преступно мало информации. Обычно пишут что: ну вот раздайте рандомно тритмент, часть данных в обучение, часть в холдаут, учите из стандартной либы 3 стандартных лёрнера и выберите тот, что выбивает наибольшую площадь под аплифт кривой. Если поковыряться поглубже, то можно найти про CATE, что он может быть не в конверсиях а в любой скалярной величине, и как выглядит лосс, чтобы напрямую оптимизировать CATE. На этом все.
А практика обычно такая: тебе надо не конверсии аплифтить, а денег заработать. И вот один твой товарищ построил аплифт в конверсиях (и потом предполагает его множить на средний LTV-скидка), а другой оптимизировал напрямую апдифт в LTV. Продуктовая команда настаивает, что раздавать надо по гороскопу (скидку всем девам). Принесли все они какие-то свои метрики в разных попугаях. И с этим чето надо делать.
Вот мой простой рецепт, что делать:
1. Зафиксируйте метрику приемки А/Б
Это в конечном итоге должна дать одна цифра по которой можно однозначно принять решение. В идеале LTV/cash-flow/PnL. А то оказывается что хочется и конверсия чтоб выросла и отток не нарастить и денег потратить не очень много, и нет однозначного понимания что делать если одна метрика выросла и другая упала. Тут стоит запариться и построить одну единственную метрику для оптимизации. Или одну таргет, вторую как boundary на крайний случай.
2. Соберите офлайн, который позволяет сравнивать разные стратегии раздачи тритмента (включая не аплифтовые)
По факту этот бенч должен давать оценку ожидаемой таргет метрики с прошлого шага на холдауте (сходиться хотя бы по матожиданию к ней). Причем для любой стратегии раздачи тритмента: не только ранжирующих всю базу, но и ту которая раздает тритмент по фазе луны. Любая стратегия на этот бенчмарк - это просто метки тритмента на каждого пользователя. Можно через пересечение с реальными наблюдениями получить оценку тотал эффекта, можно оценивать CATE в когорте - выбирайте где дисперсия меньше.
3. Пробуйте декартово произведение разных лернеров на разные таргеты
Это прямо рутина аплифта. Нет никакого идеального лернера и идеального подхода к выбору таргета. Иногда скалярный таргет слишком шумный и лучше разбить на конверсионный аплифт и помножить потом на скаляр. Иногда лучше учить аплифт сразу на таргет. Надо экспериментировать.
4. Выбирайте модель и когорту по своим бизнес требованиям а не про квини и аплифт кривой
Мой хот тейк: если ты решаешь индустриальную задачу, то забудь про рок ауки и прочие площади под кривыми. Это для учебников. У тебя есть либо ограничение по количеству тритмента: тогда сравнивай модели по uplift@k а в когорту бери K. Либо у тебя задача максимизировать аплифт без ограничения: тогда бери argmax_k(uplift@k) пользователей в когорту, а сравнивай модели по max(uplift@k). Ну либо выбирай k вообще перебором об финальный бенч с шага 2 (что кстати правильнее всего, с точностью до дисперсии).
5. Бектесты, бектесты, бектесты
В идеале нужны холдауты за разные периуды времени. И это возможность полностью зафиксировать стратегию обучения модели и посмотреть как они бы сработали в разные моменты времени (именно стратегию обучения а не конкретную модель). Это позволит оценить устойчивость вашего подхода во времени. Это вообще бич аплифта, что пол года назад эта страта бы дала огромный плюс, а год назад загнала бы в минус. Если стратегия не приносит стабильно аплифта хотя бы в 80% перуида бектаста, то запуск будет скорее русской рулеткой.
6. Постепенная раскатка
Если не уверены в себе: то запустите не на всю базу а не 10% базы. Так у бережете себя от сильного даунлифта, а если все будет хорошо: то доберете следующим скорингом.
Вот как-то так и выживаем. Ну и Casual inference - это один из последних оплотов classical ml, где происходит что-то интересное: искренне рекомендую почитать статейки 20-х годов (этого века) на эту тему.
Post #58
5.61K
- 👍 8
- ❤ 1