Что такое uplift-моделирование?

«Что такое uplift-моделирование?» — вопрос из категории A/B тестирование, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Uplift-моделирование (моделирование прироста) — это подход в машинном обучении, который оценивает причинно-следственный эффект какого-либо воздействия (например, маркетинговой рассылки, скидки) на конкретного пользователя. Вместо предсказания вероятности отклика (P(отклик | воздействие)), uplift-модель предсказывает прирост этой вероятности из-за воздействия: Uplift = P(отклик | воздействие) - P(отклик | отсутствие воздействия).

Основные методы:

  1. Мета-алгоритмы (Meta-learners):
    • S-Learner: Одна модель, куда воздействие включено как дополнительный признак.
    • T-Learner: Две отдельные модели для контрольной и тестовой групп.
    • X-Learner: Более сложный метод, особенно эффективный при несбалансированных группах.
  2. Деревья uplift: Специализированные алгоритмы, такие как Causal Forest, которые непосредственно оптимизируют разницу в исходах.

Пример применения в Python с библиотекой causalml:

from causalml.inference.meta import BaseXRegressor
from sklearn.model_selection import train_test_split
import pandas as pd

# Предположим, у нас есть данные эксперимента
# treatment - бинарный флаг воздействия (1/0)
# y - бинарный или непрерывный исход (например, конверсия)
data = pd.read_csv('experiment_data.csv')
X = data.drop(['treatment', 'y'], axis=1)
treatment = data['treatment']
y = data['y']

X_train, X_val, t_train, t_val, y_train, y_val = train_test_split(X, treatment, y, test_size=0.2)

# Обучение uplift-модели (X-Learner)
uplift_model = BaseXRegressor()
uplift_model.fit(X_train, t_train, y_train)

# Предсказание uplift-скоров для валидационной выборки
uplift_scores = uplift_model.predict(X_val)

# Сортировка пользователей по ожидаемому uplift
val_data = X_val.copy()
val_data['uplift'] = uplift_scores
val_data_sorted = val_data.sort_values('uplift', ascending=False)

Практическое применение: Таргетирование рекламных кампаний на пользователей, которые с наибольшей вероятностью отреагируют именно на воздействие (т.н. «убеждаемые»), что позволяет оптимизировать маркетинговый бюджет.