tgoop.com/artificial_stupid/225
Last Update:
#statistics
Uplift деревья. Что это и зачем нужно?
Итак, что такое uplift деревья?
У нас есть много разных методов оценки uplift-а (про это понятие я ранее писал, как про CATE: Conditional Average Treatment Effect, но вообще это еще может быть и не индивидуальном уровне, то есть ITE: Individual Treatment Effect) для разных ситуаций (ранее я писал про S,T,X,R learners, то есть подходы с использованием meta-learners). Но они имеют свои минусы (к примеру, при использовании двух разных моделей мы получаем двойную ошибку, при разных типах моделей одна может переобучиться, а другая - недообучиться и т.п.). Хочется взять что-то достаточно привычное, что можно было бы использовать напрямую к данной задаче. На выручку к нам приходят решающие деревья (decision tree).
Итак, мы хотим использовать некоторое дерево, которое в узлах будет по некоему критерию разделять наши группы пользователей. Желательно, чтобы этот критерий был как можно ближе к реальности, то есть позволял отделить наш эффект от воздействия на целевую группу.
Какие для этого есть предложения? Предложение следующее - давайте для критерия разделения использовать разницу между нашими распределениями. Чем больше мы разделим распределение в целевой и контрольной группах - тем ближе подберемся к оценке uplift'а.
Здесь у нас есть несколько вариантов:
1. Дивергенция Кульбака-Лейблера (Kullback–Leibler divergence);
2. Евклидово расстояние (Euclidean distance);
3. Дивергенция хи-квадрат (Сhi-squared divergence, отличается от евклидова расстояния тем, что мы вместо (p - q)**2 используем ((p - q)**2 / q)).
Получается, что при разбиении мы хотим максимизировать дивергенцию (или разницу) между нашими распределениями.
Казалось бы, все ок, с задачей справились. Но! Возникает новая проблема: у нас начинают появляться неравномерные разбиения с большим количеством контрольных объектов или объектов с воздействием. Приходится модифицировать наш критерий таким образом, чтобы учитывалось и количество объектов в разных группах при разделении на ветви дерева (подробнее можно посмотреть здесь).
Обновленная метрика позволяет получить лучшие результаты. Правда, тут стоит заметить, что это все еще не прямая оптимизация uplift'а, а лишь некоторое приближение. Ну и, конечно же, указанную проблему постарались решить в более поздних работах. Про то, что же предложили в этих работах, я расскажу позже.
А пока предлагаю посмотреть реализацию uplift tree в библиотеке causalml от Uber.
BY Artificial stupidity
Share with your friend now:
tgoop.com/artificial_stupid/225
