Условие
Babbel — сервис изучения языков по подписке. Доступны разные learning experiences: Lessons, Review, Audio (Podcasts), Games, Live Classes. Доступ к Live имеет только подписка типа Live, остальные доступны на Core.
Команда хочет понять, как новые подписчики вовлекаются в первые 8 недель после оформления подписки, и предложить идеи активации. Дан датасет learning_sessions.csv (одна строка = одна learning-сессия) с полями: uuid, subscription_started_at, age (бакет), motivation, subscription_type (Core/Live), geo_area (ESM/GSM/FIM/SPM/USA), learning_activity, learning_os, learning_language, session_ended_as (completed/aborted/missing), session_started_at (UTC), session_local_started_at, time_spent (минуты).
Вопросы:
- Как операционализировать «успешную активацию» пользователя?
- Как ранний engagement-journey различается между сегментами?
- Как Live-классы используются вместе с другими learning experiences? Отличается ли поведение Live-подписчиков от Core?
- Команда хочет A/B-тестировать experimental learning path для активации в первые 3 недели и итерироваться каждые 2 недели — то есть нельзя ждать 3-недельный лагированный отклик. Какую метрику и какие риски порекомендуете?
Решение
1. Операционализация активации
«Активация» — момент, когда пользователь продемонстрировал поведение, сильно коррелирующее с долгосрочным удержанием и LTV. Подходящий каркас:
- Берём проксирующую метрику долгосрочного успеха: например, N+8 недель удержания (есть подписка / делает сессии).
- Ищем ранние действия (1–7 дни), которые лучше всего предсказывают её. Стандартный подход — лог-регрессия / decision tree на бинарную «remained ≥8 weeks», ROC-AUC, lift по перцентилям.
- Конкретные кандидаты:
- ≥ X completed-сессий за первую неделю (классика:
Magic Number— пробуют 3, 5, 7, 10). - ≥ X минут общего
time_spentза неделю. - Использовал ≥ 2 разных
learning_activity(multi-feature adoption — сильный сигнал). - Завершённость: доля
session_ended_as = completedсреди сессий первой недели.
- ≥ X completed-сессий за первую неделю (классика:
- Финальный «activation moment» = пересечение порогов, выбранных по максимизации recall@precision (бизнес-кост ошибки).
2. Различия по сегментам
Декомпозиция по geo_area, age, motivation, learning_language, learning_os, subscription_type. Метрики на сегмент:
- WAU (week 1, week 2 ... week 8), retention curve.
- Среднее
time_spentна пользователя. - Распределение по
learning_activity. - Доля aborted/missing.
Ожидаемые наблюдения: Live-юзеры имеют более высокий retention (selection bias — платят больше), GSM/FIM могут учить дольше, мобильные платформы — короче сессии.
3. Live vs Core
- Сравнение долей
learning_activity(Lessons / Review / Games / Audio / Live) на пользователя. - Корреляция
Live-сессии за неделюс retention к 8 неделе среди Live-подписчиков. - Важно: сравнение «Live vs Core» не каузально — это разные подписки и разные пользователи. Можно лишь сказать «Live-юзеры дополнительно используют другие experiences чаще/реже». Чтобы оценить эффект Live, нужен либо причинный дизайн (matching по pre-period), либо рандомизированный.
4. A/B-тест с 2-недельной итерацией
Проблема: основная метрика «retention к концу 3 недели» не доступна за 2 недели — рискуем выкатывать решения по преждевременным сигналам.
Подход: использовать surrogate / leading indicator — раннюю метрику, которая сильно коррелирует с 3-week retention, но измеримая в первые 7 дней. Например, «количество completed lessons в первую неделю» или «session count week 1 ≥ 3».
Риски:
- Goodhart: оптимизация прокси не = оптимизация настоящей цели. Surrogate должен валидироваться периодически на фактическом retention.
- Novelty effect: 2 недели — короткий горизонт, эффект может быть завышен.
- Multiple testing: каждые 2 недели — новый тест, FPR раздувается. Нужна поправка или sequential testing (Always Valid p-values, mSPRT).
- Heterogeneous treatment effect: surrogate может работать на одних сегментах и не работать на других — следить отдельно.
- Сезонность по неделе: тест должен покрывать минимум недельный цикл.
- Carry-over между итерациями: если меняем сразу после теста, старый и новый дизайн пересекаются для одних пользователей.
Рекомендация: surrogate-метрику валидировать раз в квартал «long-test» (полные 8 недель) и корректировать.
Подводные камни
- Выживший выбирает своё: Live-подписчики уже сделали upgrade — это лояльные. Сравнение с Core без контроля по mat. показателям — confounded.
session_ended_as = missing— что это? Если это технический NULL, отдельно посчитайте долю и не агрегируйте «как aborted».- Время в локальном TZ vs UTC — сезонность по часу/дню недели считается в
session_local_started_at. - Пользователь без сессий в датасете — отсутствует или есть с 0 сессий? Активация для них = 0 по определению, но их вообще нужно учитывать в знаменателе.
- Selection bias по
motivation: те, кто заполнил мотивацию, могут отличаться от тех, кто пропустил.
Эталонный ответ
Каркас:
- Активация = ранний поведенческий сигнал, статистически предсказывающий 8-недельное удержание (валидируется логистикой / ROC).
- Сегменты: geo, age, motivation, OS, subscription, language → retention/engagement curves.
- Live vs Core — описательно, не каузально.
- Для итеративного A/B — surrogate (week-1 lessons count), валидируемый против ground truth раз в квартал; sequential testing для многократных пик.