Разработка AI-системы предсказания оттока игроков
Churn prediction в игровой индустрии — фундамент retention-маркетинга. Мобильная игра теряет 70% новых игроков в первые 7 дней. Правильная модель позволяет выявить игроков на пороге отток до того, как они удалили приложение, и вернуть их через персонализированные retention мероприятия.
Специфика игрового churn
Определение оттока: В играх нет "контракта". Чёрно-белая метка "ушёл/остался" определяется через порог неактивности:
- Мобильные игры: 7-14 дней без логина
- MMORPG: 30 дней без входа
- Казуальные игры: 3-5 дней
Выбор порога влияет на баланс классов и timely intervention.
Early vs. Late churn:
- Early churn (D1-D7): проблемы с онбордингом, сложность tutorial, несоответствие ожиданиям
- Mid-term churn (D7-D30): падение интереса к контенту, нарушение progression
- Late churn (D30+): исчерпание контента, burnout, появление конкурентной игры
Каждый тип требует разной стратегии возврата.
Feature Engineering из игровых логов
Вовлечённость:
engagement_features = {
'sessions_last_7d': session_count_7d,
'avg_session_length_min': avg_session_duration,
'session_frequency_trend': sessions_last_3d / sessions_prev_3d,
'days_since_last_session': recency,
'total_days_played': frequency,
'total_revenue': monetary, # RFM
# Игровой прогресс
'player_level': current_level,
'level_progression_rate': levels_gained_per_day,
'progression_delta': level_now - level_7d_ago,
'features_unlocked': count(unlocked_features),
# Социальные
'guild_membership': bool,
'friends_count': friend_list_size,
'pvp_matches_7d': pvp_count,
'chat_messages_7d': messages_count
}
Монетизация:
monetization_features = {
'payer_flag': has_ever_paid,
'days_since_last_purchase': recency_purchase,
'ltv_to_date': total_revenue,
'purchase_count': total_transactions,
'avg_purchase_value': mean(transaction_values),
'subscription_active': bool,
'ad_views_7d': rewarded_ad_count # для free-to-play
}
Модели по сегментам
Не одна модель для всех — разные для разных сегментов:
- Payers (платящие): самый ценный сегмент. XGBoost с финансовыми фичами. Threshold ниже — не можем позволить терять.
- High-engagement non-payers: потенциальные конверсии. LightGBM с engagement фичами.
- Casual players: большинство. Более простая модель, высокая recall.
Cohort-aware модель: Поведение игрока на D7 нормализуем к когорте (средний D7 для данного acquisition channel, даты запуска):
features['d7_sessions_normalized'] = player_d7_sessions / cohort_avg_d7_sessions
Это убирает сезонность и различия между когортами.
Survival Analysis для игр
Альтернативная постановка: не "уйдёт ли в течение 14 дней", а "сколько дней до оттока":
from lifelines import WeibullAFTFitter
# AFT model: ускоренное время жизни
aft = WeibullAFTFitter()
aft.fit(player_data, duration_col='days_until_churn', event_col='churned')
# Медианное время до оттока для конкретного игрока
predicted_retention = aft.predict_median(player_features)
Это даёт более нюансированный сигнал: не просто риск, а ожидаемое время жизни.
Retention Actions
D0-D3 — Tutorial intervention: Если tutorial completion < 80% → push-notification с упрощённой помощью.
D1-D7 — Progression intervention: Если прогресс ниже медианы когорты → временный buff или подарок ресурсов.
D7-D30 — Engagement intervention:
- High-risk платящий: персональный email от "разработчиков" с уникальным бонусом
- High-risk freemium: рекламная кампания retargeting с deep link в игру
Win-back (после ухода):
- Email/push через 3/7/14/30 дней неактивности
- Специальные "Мы соскучились!" предложения
- Анонс нового контента через push
Lift Measurement и A/B
# Incrementality test
treatment = high_risk_players.sample(frac=0.5)
control = high_risk_players.drop(treatment.index)
# Через 14 дней
treatment_retention = treatment[treatment.is_active_14d_later].shape[0] / len(treatment)
control_retention = control[control.is_active_14d_later].shape[0] / len(control)
uplift = treatment_retention - control_retention
print(f"Retention uplift from intervention: {uplift:.1%}")
Сроки: базовая churn модель с логами (LightGBM) — 3-4 недели. Полноценная система с cohort-aware подходом, segmented models, survival analysis и A/B measurement — 3-4 месяца.







