Overview
1. Developed LTV prediction models, increasing revenue by 12% through enhanced user segmentation and retention
Проект: Прогнозирование LTV с кластеризацией и LightGBM
Цель:
Увеличить доход на 12% за счет точного прогнозирования Lifetime Value (LTV) игроков, сегментации аудитории и оптимизации ретеншен-стратегий.
1. Этапы реализации
1.1. Подготовка данных
Источники данных:
- Логи игровых сессий (активность, время в игре).
- Платежи (суммы, частота, история транзакций).
- Демография (регион, устройство, возраст аккаунта).
- Участие в ивентах (прогресс, награды).
ETL-процесс:
- Инструменты:
Python (Pandas, PySpark), SQL (PostgreSQL).
- Шаги:
- Агрегация сырых данных в признаки на уровне пользователя (RFM-метрики):
Пример реализации:
features = df.groupby('user_id').agg({
'session_duration': 'sum',
'payment_amount': ['sum', 'count', 'max'],
'last_login': 'max',
'event_participation': 'mean'
})
1.2. Кластеризация игроков (K-means)
Цель- Сегментировать игроков на однородные группы для персонализации стратегий.
Метод:
- Алгоритм: K-means (Scikit-learn).
- Определение числа кластеров: Метод локтя (Elbow Method) по SSE (Sum of Squared Errors).
Пример реализации:
from sklearn.cluster import KMeans
sse = []
for k in range(1, 10):
kmeans = KMeans(n_clusters=k, random_state=42).fit(features)
sse.append(kmeans.inertia_)
plt.plot(range(1, 10), sse, marker='o')
plt.xlabel('Количество кластеров')
plt.ylabel('SSE')
Оптимальное число кластеров — 5 (точка изгиба на графике).
Результат кластеризации:
Кластер | Характеристики |
1 | Высокодоходные, редкие платежи (киты) |
2 | Частые, но мелкие платежи (постоянные) |
3 | Новые игроки с низкой активностью |
4 | Возвращающиеся, средние платежи |
5 | Неплатящие, но активные |
1.3. Прогнозирование LTV (LightGBM)
Цель: Предсказать LTV для каждого кластера.
Модель:
- Алгоритм: LightGBM (градиентный бустинг).
- Признаки:
- RFM-метрики (Recency, Frequency, Monetary).
- Активность за последние 7/30 дней.
- Участие в ивентах.
- Целевая переменная: Сумма платежей за 90 дней.
Обучение:
Пример реализации:
import lightgbm as lgb
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(features, target, test_size=0.2)
model = lgb.LGBMRegressor(n_estimators=500, learning_rate=0.05)
model.fit(X_train, y_train, eval_set=[(X_test, y_test)], early_stopping_rounds=50)
Метрики:
- RMSE: 120 (руб)
- R²: 0.89
1.4. Автоматизация и мониторинг
Airflow:
- Даг: Еженедельный перерасчет LTV.
Пример реализации:
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
def update_ltv():
# Загрузка данных, кластеризация, прогноз
pass
dag = DAG('ltv_prediction', schedule_interval='0 3 * * MON', start_date=datetime(2023, 1, 1))
task = PythonOperator(task_id='run_ltv', python_callable=update_ltv, dag=dag)
Zeppelin:
- Дашборды:
1. Распределение LTV по кластерам (столбчатая диаграмма).
2. Динамика LTV (график за 6 месяцев).
3. Ретеншен по кластерам
2. Результаты
- +12% к доходу: За счет таргетированных промо для кластеров 1 и 2.
- Рост ретеншена на 7%: Персонализированные push-уведомления для кластера 3.
- Сокращение CAC: Исключение неперспективных сегментов (кластер 5) из рекламных кампаний.
2. Designed promotion strategies that increased participant engagement by 37%
Проект: Оптимизация промо-стратегий для роста вовлеченности на 37%
Цель: Увеличить вовлеченность игроков на 37% через персонализированные промо-кампании на основе A/B-тестов,
предсказательного моделирования и динамического ценообразования.
1. Этапы реализации
1.1. Сбор и подготовка данных
Источники данных:
- Игровая аналитика:
- Логи сессий (длительность, частота, активность в ивентах).
- Взаимодействие с промо-предложениями (клики, конверсия).
- Платежи: История транзакций, чувствительность к скидкам.
- Демография: Регион, платформа, возраст аккаунта.
ETL-процесс:
- Инструменты: Python, SQL (Hive).
- Ключевые метрики:
Пример реализации:
user_engagement = df.groupby('user_id').agg({
'sessions': 'count',
'session_duration': 'mean',
'promo_clicks': 'sum',
'payment_amount': 'sum'
})
1.2. Сегментация аудитории
Методы:
1. RFM-анализ (Recency, Frequency, Monetary):
- Recency: Дата последней сессии.
- Frequency: Количество сессий за 30 дней.
- Monetary: Сумма платежей.
2. Кластеризация (Gaussian Mixture):
- Выбрана вместо K-means из-за неравномерного распределения данных.
- 5 сегментов: Киты, постоянные плательщики, новички, возвращенцы, "спящие".
1.3. A/B-тестирование промо-механик
Гипотезы:
- Вариант A: Скидка 20% на первый платеж.
- Вариант B: Бесплатный эксклюзивный предмет за 3 сессии.
- Вариант C: Персонализированный бонус (на основе LTV-модели).
Реализация:
- Инструменты: Python (SciPy), Airflow для управления тестами.
- Распределение трафика: 30% A, 30% B, 40% C (фреймворк Celery для балансировки).
- Метрики:
- Конверсия в платежи.
- Retention на 7-й день.
Результаты:
- Вариант C дал +15% к конверсии vs A/B.
- Лучший Retention у B (+22% для новичков).
1.4. Динамическое ценообразование:
Алгоритм:
1. Predictive Model (CatBoost):
- Предсказывает вероятность покупки для каждого пользователя.
- Признаки: Активность, история платежей, реакция на прошлые промо.
2. Оптимальная скидка:
- Максимизация прибыли: argmax_discount (P(purchase | discount) * (price - cost)
- Диапазон скидок: 5–30%.
Пример работы:
- Для "китов": Фиксированный бонус (не скидка).
- Для новичков: Скидка 25% + бесплатный предмет.
2. Результаты
- +37% к вовлеченности (метрика: сессии/неделю).
- +12% конверсии в платежи для целевых сегментов.
- Снижение CAC на 20% за счет исключения "холодных" пользователей из рекламы.
3. Проблемы и решения
- Проблема: Шум в данных из-за ботов. Решение: Фильтрация через порог активности (HWID + поведенческие паттерны).
- Проблема: Задержки в расчетах LTV. Решение: Предрасчет признаков в Hive Materialized Views.
3. Анализ твинков
Цель: Исследование поведения игроков, использующих несколько аккаунтов (твинков), для оптимизации монетизации и удержания аудитории.
Ключевые задачи и выводы:
Доля твинков: 50% твинкующих игроков используют два аккаунта, среднее число твинков на игрока — 3.
Платежи: Твинки из прошлого месяца (old) приносят больше дохода (ARPPU NDA руб) по сравнению с новыми (ARPPU NDA pуб).
Отток: Ежемесячно теряется 30% твинков, но 25% остаются в игре.
Компенсация аудитории: Новые игроки и возвраты компенсируют сокращение core-аудитории (коэффициент сокращения — 0.67).
Техническая реализация:
Источники данных: Логи игровых сессий, платежи, регистрация аккаунтов, HWID (идентификаторы устройств).
Инструменты:
Python (Pandas, NumPy, Scikit-learn): Для анализа данных, кластеризации игроков (например, выделение твинков по HWID) и прогнозирования LTV.
SQL: Для агрегации данных (например, подсчет уникальных аккаунтов, платежей).
Airflow: Для автоматизации ETL-процессов (ежедневное обновление метрик).
Метрики:
Удержание (retention) по типам твинков (new, old, reactivation).
ARPU/ARPPU, доля платящих игроков.
Визуализация: Power BI для отчетов по динамике твинков и их вкладу в revenue.
4.Анализ ивента Top Gun (WFWFW)
Цель: Оценка эффективности ивента для вовлечения игроков, монетизации и удержания новых пользователей.
Ключевые задачи и выводы:
Участие: 12% MAU на RU, 5% на West. 56% участников — твинки.
Новички: 47% совершили первый платеж во время ивента, 44% остались в игре.
Вовлеченность: Среднее время жизни (Life Time) — 14 дней (RU), 16 дней (West).
Жетоны: Только 36% игроков обменяли жетоны на награды (чаще из-за высокого порога — 20 жетонов за предмет).
Техническая реализация:
Источники данных: Логи ивента (задачи PvP/PvE), транзакции, сессии, регистрации.
Инструменты:
Python (Matplotlib, Seaborn): Для анализа воронок (например, прогресс в бонусных заданиях) и когортного анализа (Retention по дням).
SQL: Агрегация данных по игрокам (например, распределение по типам квестов).
Airflow: Планирование отчетов (ежедневный мониторинг DAU участников).
Метрики:
Retention (1-day, 7-day), конверсия в платежи, среднее количество сессий.
Распределение жетонов по предметам (частота обмена).
Визуализация: Графики в Jupyter Notebook для презентации маркетингу.
5. Оптимизация монетизации через динамическую балансировку внутриигровых цен
Цель: Увеличить ARPPU (Average Revenue Per Paying User) на 18% за счет адаптивного ценообразования,
учитывающего поведенческие и платежные паттерны игроков.
1. Проблема и гипотезы
Проблема:
- Статичные цены на внутриигровые товары не учитывают различия между игроками (например, "киты" готовы платить больше, а новички чувствительны к цене).
- Низкая конверсия в платежи у новых пользователей из-за высокого порога входа.
Гипотезы:
1. Динамическое ценообразование (на основе LTV, активности и истории платежей) увеличит ARPPU.
2. Персонализированные скидки снизят отток среди новых игроков.
2. Методы и реализация
2.1. Анализ ценовой эластичности
Задача: Определить, как изменение цены влияет на спрос.
Инструменты:
- Python (StatsModels, Pandas) – регрессионный анализ.
- SQL – агрегация данных о покупках.
Метрики:
- Коэффициент эластичности спроса по цене:
\[ E = \frac{\% \Delta Q}{\% \Delta P} \]
где:- Q – количество покупок,
- P – цена.
Выводы:
- Для "китов" спрос неэластичен (|E| < 1) – можно повышать цены.
- Для новичков спрос эластичен (|E| > 1) – скидки увеличат конверсию.
2.2. Сегментация игроков для динамического ценообразования
Метод: Кластеризация (K-means + RFM-анализ).
Признаки:
- Recency: Последняя покупка.
- Frequency: Частота платежей.
- Monetary: Суммарные траты.
Кластеры:
1. Киты (Whales): Высокий Monetary, низкая Frequency.
2. Постоянные плательщики: Средние RFM.
3. Новички: Низкий Monetary, высокая активность.
4. Спящие: Нет платежей >30 дней.
Динамические правила ценообразования:
Кластер | Стратегия |
Киты | +NDA к цене, эксклюзивные предложения |
Новички | Скидка NDA на первый платеж |
Постоянные | Пакетные предложения (3 предмета по цене 2) |
Результаты
1. +18% ARPPU за счет роста среднего чека у "китов".
2. +5% Retention среди новичков (скидки снизили барьер входа).
3. Автоматизированная система динамического ценообразования, интегрированная в продакшен.
6. Прогнозирование оттока (Churn Prediction) с ML
Цель: Снизить churn rate на 15% за счет предиктивного анализа и персонализированных интервенций.
Постановка проблемы и гипотезы
Проблема
- Высокий уровень оттока (churn rate) среди игроков, особенно после первой недели.
- Стандартные методы удержания (общие рассылки) неэффективны.
- Реклама для возврата ушедших игроков (ретаргетинг) слишком дорогая.
Гипотезы
1. Игроки с высокой вероятностью ухода могут быть выявлены за 2-3 дня до оттока.
2. Персонализированные бонусы (на основе их поведения) снизят churn rate.
3. Автоматизация удержания (push-уведомления, email) уменьшит затраты на ремаркетинг.
Методы и реализация
Сбор данных и feature engineering
Источники данных:
- Логи активности (время в игре, завершенные квесты, PvP/PvE активность).
- Платежи (история, частота, средний чек).
- Прогресс в ивентах (участие, награды).
- Социальные взаимодействия (гильдии, чаты).
Ключевые признаки (features):
Тип признака | Примеры |
Активность | Сессии за 3 дня, время в игре, завершенные квесты |
Монетизация | Общая сумма платежей, частота, последний платеж |
Прогресс | Уровень, участие в ивентах, достижения |
Социальные | Количество друзей, активность в гильдии |
Построение модели Churn Prediction
Целевая переменная:
- Churn = 1 (игрок не заходил 7+ дней)
- Churn = 0 (активен)
Алгоритм: XGBoost (градиентный бустинг) – выбран из-за высокой интерпретируемости и работы с несбалансированными данными.
Метрики качества:
- AUC-ROC: 0.89 (хорошее разделение классов)
- Precision (точность): 0.82
- Recall (полнота): 0.75
Интерпретация модели - SHAP-анализ
Выводы:
- Наибольшее влияние на отток:
1. Снижение активности (число сессий за 3 дня).
2. Отсутствие платежей в последние 7 дней.
3. Низкий прогресс в ивентах.
Результаты
Эффективность модели
- 23% игроков из "группы риска" остались в игре после интервенций.
- Снижение churn rate на 15% (с 25% до 21.25%).
Экономический эффект
- Снижение затрат на ретаргетинг на 30% (меньше ушедших → меньше расходов на рекламу).
- Рост LTV на 12% за счет удержания платящих пользователей.
7. Атрибуция рекламных каналов
Проблема и цели
Исходные данные:
Маркетинговый бюджет $NDA/мес распределен между 10+ каналами
CPA (Cost Per Acquisition) превышает плановый на 25%, LTV/CAC = 1.2 (при целевом ≥ 1.5).
Нет понимания, какие каналы реально приводят платящих игроков.
Цели:
Снизить CPA на 20% за счет перераспределения бюджета.
Повысить LTV/CAC до 1.5+ через отсев неэффективных каналов.
Определить вклад каждого канала в конверсию (атрибуция).
Методология
Сбор данных
Источники:
Рекламные платформы (Facebook Ads, TikTok For Business, AppsFlyer).
Игровая аналитика (SDK Firebase, внутренние логи).
Платежи (Stripe, App Store Connect).
Модель атрибуции (Shapley Value)
Почему Shapley Value?
Учитывает вклад каждого канала в цепочке взаимодействий (не только last-click).
Работает с коалициями (например, TikTok → Facebook → Конверсия).
Реализация:
from itertools import permutations
import numpy as np
def shapley_value(user_journeys, conversions):
channels = set([c for journey in user_journeys for c in journey])
shapley = {c: 0 for c in channels}
for channel in channels:
for journey, conv in zip(user_journeys, conversions):
if channel in journey:
idx = journey.index(channel)
marginal_gain = conv - (conv * 0.5 if idx > 0 else 0) # Упрощенный расчет
shapley[channel] += marginal_gain / len(user_journeys)
return shapley
Расчет LTV/CAC по кластерам
Кластеризация игроков:
Кластер 1: "Киты" (LTV $NDA, CAC $NDA).
Кластер 2: "Середняки" (LTV $NDA, CAC $NDA).
Кластер 3: "Новички" (LTV $NDA, CAC $NDA).
Оптимизация:
Увеличить бюджет на каналы, привлекающие Кластер 1.
Исключить каналы с CAC > LTV .
Действия по каналам
Chanel 1:
Увеличение бюджета на 36%.
Запуск креативов с упором на социальные взаимодействия (гильдии, PvP).
Chanel 2:
Снижение бюджета на 18%, фокус на ретаргетинг.
Chanel 3:
Полный отказ от 3 из 5 сетей (экономия $NDA/мес).
Итог:
- Перераспределение бюджета в пользу NDA (+15% к конверсии).
- Отказ от неэффективных партнерских сетей.
- Эффективность каналов после оптимизации - (CPA -23%, LTV +42%, Конверсия +15%)