Что такое моделирование подъема?

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

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

Утраченные причины. Эти клиенты — полная противоположность Sure Things. Они не будут покупать, независимо от того, сколько рекламных показов вы им нацелите. Они, вероятно, знают о вашем бренде, но привержены другому поставщику или просто не нуждаются в продукте, который вы продаете.

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

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

Ниже приведена хорошая визуализация различных типов и их реакции на лечение (воздействие рекламы).

Постановка проблемы

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

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

Подъем = P(Конверсия|Лечение) - P(Конверсия|Контроль)

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

Конечно:
P(Конверсия|Лечение) ~ 1 и P(Конверсия|Контроль) ~1
∴ Повышение = 0

Утраченные причины:
P(Конверсия|Лечение) ~ 0 & P(Конверсия|Контроль) ~0
∴ Повышение = 0

Убеждения:
P(Конверсия|Лечение) ~ 1 & P(Конверсия|Контроль) ~0
∴ Повышение = 1

Sleeping Dogs:
P(Конверсия|Лечение) ~ 0 & P(Конверсия|Контроль) ~1
∴ Повышение = -1

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

Однако задача по-прежнему состоит в том, чтобы идентифицировать эти убеждения среди вашей популяции. Теперь, в отличие от Конверсии (бинарная переменная с результатами [0,1]) или Дохода (непрерывная переменная с результатом ∈ R), Нетривиально сформулировать эту проблему в рамках традиционной классификации/регрессии. Причина в том, что нельзя лечить и не лечить одного и того же клиента, т. е. A клиент может принадлежать только к лечебной или контрольной группе, а не к той и другой. Поэтому по-прежнему сложно создать метку, соответствующую Uplift, на которую затем можно обучить обычную модель машинного обучения.

Традиционные способы решения проблемы подъема включают подход двух моделей, метод преобразованных результатов [1],
методы прямого моделирования с модифицированным критерием разделения с использованием деревьев, основанных на значимости [5]. В статье Гутьерреса проводится сравнительный обзор этих методов [3]. Однако в этой статье я сосредоточусь на алгоритме и реализации расчета конверсии гомогенизированного подъема — CHUC.

Вычисление подъема на основе однородности конверсии

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

Исходя из этой интуиции, для данного клиента CHUC стремится:

(i) Точно оценить реальную вероятность конверсии для этого клиента, т. е. при отсутствии какого-либо впечатления, насколько вероятно, что клиент совершит конверсию, или P(Conversion|Control)

(ii) группировать клиентов с одинаковой оценочной вероятностью конверсии

(iii) Рассчитайте эмпирический прирост ( P(Конверсия|Лечение) – P(Конверсия|Контроль)) для каждой из этих групп

(iv) Подберите функцию между Uplift для каждой группы и P(Conversion|Control) для этой группы, чтобы для каждого нового клиента проблема сводилась к назначению клиента в группу конверсии и затем получаем прогнозируемое значение прироста для этой группы

Учитывая,
Обучающий набор данных: df_train
Тестовый набор данных: df_test
Вектор признаков: X
Переменная результата: Y
Ярлык лечения: TR; TR=1 для лечения и TR=0 для контроля

Алгоритм обучения модели:

Шаг 1.Подберите модель M1 (регрессия/классификация), в которой заданный вектор признаков X для клиента предсказывает фактический результат Y, используя только контрольные данные (т. е. TR = 0). Выход модели Y_pred
(i) — прогнозируемое значение Y, когда Y ∈ R
(ii) P(Y=1), когда Y ∈ [0,1]
Шаг 2. Сгруппируйте каждого клиента в один из 10 децилей таким образом, чтобы
E[Y_pred|Децильᵢ] ‹ E[Y_pred|Дециль_ᵢ₊₁]
Шаг 3:Для каждого децилясоздайте эмпирические показатели прироста, где
прирост = P(Y_pred|TR=1) — P(Y_pred|TR=0)
на загрузочный df_train для получения нескольких наблюдений для данного дециля.
Это делается для уменьшения систематической ошибки в модели
Шаг 4:Подбор другой модели (регрессии) M2, которая отображает P(Y_pred|TR=0 ) для повышения на основе данных, сгенерированных на шаге 3.

Алгоритм оценки модели:

Шаг 1. Для набора данных df_test используйте модель M1 и вектор признаков X, чтобы предсказать Y_pred_test для каждого клиента
Шаг 2. Используйте модель M2, чтобы сопоставить Y_pred_test, чтобы получить прогнозируемый подъем

Реализация CHUC в Python

Пакет CHUC Python — это оболочка для Xgboost и Pylift, которая реализует описанный выше алгоритм и предоставляет дополнительные диагностические данные. Этот раздел посвящен основным функциям и реализации пакета. Пакет использует Xgboost для всех задач прогнозирования регрессии и классификации и полагается на Pylift для его превосходной реализации подпакетов оценки и визуализации Uplift.

Установка

Пакет можно найти по адресу https://github.com/sabarna/chuc и установить с помощью следующей команды:
pip install git+https://github.com/sabarna/chuc. .git»

Обучение

Загрузить данные

filePath='/../USConversions'
df=pd.read_pickle(filePath+'df_train.pkl')
df.shape

Объект вычисления может быть реализован как

import chuc
u=chuc.Uplift(df, treatmentLabel='testgroup', outcome='converted')

Пакет автоматически определяет характер результата (двоичный/непрерывный) и реализует соответствующий алгоритм (классификатор/регрессор).

* Чтобы создать экземпляр объекта для обучения с помощью настройки гиперпараметров

p_={'max_depth':list(range(2,15,1)),
    'min_child_weight':list(range(10,300)), 
    'n_estimators':list(range(50,400)), 
    'gamma':sc.stats.uniform(0.1,0.9),
    'subsample':sc.stats.uniform(0.6,0.4)}
u=chuc.Uplift(df, treatmentLabel='testgroup', outcome='converted, 
              param_search_space=p_)

Затем модель необходимо обучить с помощью

u.fit()

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

u.getDiagnostics()

Мы могли бы также визуализировать поезд Цини как

u.plotQiniTrain()

Прогнозирование

Чтобы предсказать подъем на новом тестовом наборе

uplift=u.predictUplift(df_test)

использованная литература

[1] Атей С. и Имбенс Г. В. (2015). Методы машинного обучения для оценки гетерогенных причинных эффектов. stat, 1050(5).
[2]Николас Дж. Рэдклифф и Патрик Д. Сарри. Моделирование поднятия в реальном мире с деревьями поднятия на основе значимости. Информационный документ TR-2011–1, Стохастические решения, 2011 г.
[3] Гутьеррес П. и Жерарди Дж. Ю. (2017 г., июль). Причинно-следственный вывод и моделирование подъема: обзор литературы. В Международной конференции по прогностическим приложениям и API (стр. 1–13).
[4] Петр Жепаковский и Шимон Ярошевич. Деревья решений для моделирования подъема с одной и несколькими обработками. Знания и информационные системы, 32(2):303–327, 2012
[5] Лео Гельман, Монтсеррат Гильен и Ана М. Перес-Марин. Поднимайте случайные леса. Кибернетика и системы, 46(3–4):230–248, 2015.

Благодарности

Большое спасибо Роберту Йи и Уиллу Фросту за их пакет (Pylift) и наши обсуждения, которые помогли мне лучше понять моделирование Uplift. Также спасибо Kaashyap Thiyagaraj, который помог мне протестировать CHUC и предоставить важные отзывы.