Что такое Lift и Gain в аналитике
Что такое Lift
Lift, или подъём, — это метрика, показывающая, насколько сегмент, выбранный моделью, лучше случайно выбранного сегмента по целевому действию.
Простой пример. У вас 10000 пользователей, 1% из них обычно совершает покупку. Это 100 покупателей. Если случайно выбрать 1000 пользователей — среди них будет примерно 10 покупателей (та же 1% конверсия).
Теперь строим ML-модель, которая предсказывает вероятность покупки. Выбираем топ-1000 пользователей с самой высокой предсказанной вероятностью. Если среди них оказывается 50 реальных покупателей, модель поймала в 5 раз больше, чем случайный выбор.
Lift = 5x. Это показатель, насколько лучше работает модель по сравнению с baseline.
Формула
Lift = (доля target в выбранном сегменте) / (доля target в общей популяции).
Если общая конверсия 1%, а в вашем сегменте 5%, lift = 5. Чем больше — тем лучше модель различает таргет от нетаргет.
Что такое Gain
Gain — это сколько процентов total target мы поймали в выбранном сегменте. В предыдущем примере: 50 из 100 покупателей = 50%.
Формула: gain = target в сегменте / общий target × 100%.
Gain полезен для бизнеса: «насколько процентов задачи мы закрываем нашей моделью». Если с 10% пользователей ловим 50% покупателей, это хорошая модель.
Попробовать силы на подобных вопросах проще всего в тренажёре Карьерник — прямо в Telegram, без регистрации через сайт.
Lift chart и Gain chart
Классическая визуализация — разделение пользователей на децили (10 групп по 10%) от самого высокого предсказанного score к самому низкому.
Для каждого дециля считаем накопленный gain. Идеальная модель дала бы весь target в первых дециле. Случайная — равномерно (10% target в каждом 10% пользователей).
Lift chart — это y = lift, x = процент пользователей. Хорошая модель имеет lift > 1 в первых дециле и уменьшается к 1 (baseline) в последнем.
Gain chart — это y = cumulative gain, x = процент пользователей. Форма кривой показывает, насколько модель сосредоточивает target в топ-сегменте.
Пример в Python
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({
'score': predictions_proba, # из модели
'actual': y_true
}).sort_values('score', ascending=False).reset_index(drop=True)
df['decile'] = pd.qcut(range(len(df)), q=10, labels=False)
df['cumulative_target'] = df['actual'].cumsum()
total_target = df['actual'].sum()
total_users = len(df)
baseline_rate = total_target / total_users
gain_by_decile = df.groupby('decile').agg(
users=('actual', 'size'),
target_caught=('actual', 'sum')
).reset_index()
gain_by_decile['cumulative_users_pct'] = (gain_by_decile.index + 1) * 10
gain_by_decile['cumulative_target_pct'] = (
gain_by_decile['target_caught'].cumsum() / total_target * 100
)
gain_by_decile['lift'] = (
gain_by_decile['target_caught'] / gain_by_decile['users'] / baseline_rate
)
plt.plot(gain_by_decile['cumulative_users_pct'], gain_by_decile['cumulative_target_pct'])
plt.plot([0, 100], [0, 100], 'r--', label='Random')
plt.xlabel('% users')
plt.ylabel('% target caught')
plt.legend()Идеальная модель — почти вертикальная линия вверх, случайная — диагональ.
Практическое применение
Lift — главный инструмент оценки моделей в маркетинге. Представьте, у вас есть 1 млн пользователей, и вы хотите отправить email-кампанию. Расcылка на всех стоит 1 млн рублей, на 10% — 100 тысяч.
Модель с lift 5 в топ-10% позволяет отправить email только лучшим 10% и поймать 50% потенциальных покупателей. Бюджет в 10 раз меньше, результат — половина. Это огромная экономия.
В B2B sales: модель показывает, какие аккаунты стоит обзванивать. Вместо тысячи звонков — 200 с тем же количеством конвертаций. Lift 5 означает, что ваш sales-команда в 5 раз эффективнее.
Lift vs AUC
Lift и AUC (Area Under Curve) — обе оценивают качество модели, но отвечают на разные вопросы.
AUC глобальная метрика: насколько хорошо модель различает классы в среднем. Колеблется от 0.5 (случайная) до 1.0 (идеальная).
Lift — локальная: насколько хорошо модель в конкретной части рейтинга. Обычно показывают lift@10% — в топ-10% предсказаний.
Для бизнеса lift часто более полезен, чем AUC. «У нас lift 7 в топ-20%» — понятно. «AUC 0.75» — нужно объяснять.
Пройти 30–50 задач по теме за вечер можно в Telegram-тренажёре. Это то, что отличает «знаю» от «уверенно отвечу на собесе».
Lift для рекомендательных систем
В рекомендациях lift измеряет, насколько лучше работают персонализированные рекомендации по сравнению со случайными или с популярностью.
Например, случайная рекомендация даёт CTR 1%. Популярное — 3%. Персонализация — 5%. Lift персонализации = 5. Это сильное улучшение, оправдывающее сложность ML.
Ограничения
Lift сильно зависит от baseline. Если общая конверсия 50%, лифт больше 2 невозможен. Для сильно несбалансированных задач (0.1% conversion) лифт 50+ возможен.
Lift может врать на маленьких выборках. В топ-10% из 100 пользователей — это 10 человек. Случайность сильна. Доверительные интервалы обязательны.
Также lift per decile может быть оптимистичным. Если обучали модель на тех же данных, где считаем lift, — это обман. Нужен test set.
Читайте также
FAQ
Lift больше 10 — подозрительно?
Зависит от задачи. В fraud detection (очень несбалансированные классы) 10+ нормально. В conversion prediction — редко.
Lift или AUC для выбора модели?
AUC общая метрика. Lift — для конкретного decision threshold. Оба — плюс.
Как показать бизнесу качество модели?
Lift chart. Показывает, сколько target ловим в топ-X% — понятно для PM и CMO.
Lift работает для регрессии?
Нет. Lift — для классификации. Для регрессии есть R², MAE и другие метрики.