Собесов

Babbel — активация подписчиков и engagement в первые недели

Кейсы и метрикиEngagement / ActivationСложнаяMiddle

Условие

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 (минуты).

Вопросы:

  1. Как операционализировать «успешную активацию» пользователя?
  2. Как ранний engagement-journey различается между сегментами?
  3. Как Live-классы используются вместе с другими learning experiences? Отличается ли поведение Live-подписчиков от Core?
  4. Команда хочет 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 среди сессий первой недели.
  • Финальный «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».

Риски:

  1. Goodhart: оптимизация прокси не = оптимизация настоящей цели. Surrogate должен валидироваться периодически на фактическом retention.
  2. Novelty effect: 2 недели — короткий горизонт, эффект может быть завышен.
  3. Multiple testing: каждые 2 недели — новый тест, FPR раздувается. Нужна поправка или sequential testing (Always Valid p-values, mSPRT).
  4. Heterogeneous treatment effect: surrogate может работать на одних сегментах и не работать на других — следить отдельно.
  5. Сезонность по неделе: тест должен покрывать минимум недельный цикл.
  6. Carry-over между итерациями: если меняем сразу после теста, старый и новый дизайн пересекаются для одних пользователей.

Рекомендация: surrogate-метрику валидировать раз в квартал «long-test» (полные 8 недель) и корректировать.

Подводные камни

  1. Выживший выбирает своё: Live-подписчики уже сделали upgrade — это лояльные. Сравнение с Core без контроля по mat. показателям — confounded.
  2. session_ended_as = missing — что это? Если это технический NULL, отдельно посчитайте долю и не агрегируйте «как aborted».
  3. Время в локальном TZ vs UTC — сезонность по часу/дню недели считается в session_local_started_at.
  4. Пользователь без сессий в датасете — отсутствует или есть с 0 сессий? Активация для них = 0 по определению, но их вообще нужно учитывать в знаменателе.
  5. Selection bias по motivation: те, кто заполнил мотивацию, могут отличаться от тех, кто пропустил.

Эталонный ответ

Каркас:

  1. Активация = ранний поведенческий сигнал, статистически предсказывающий 8-недельное удержание (валидируется логистикой / ROC).
  2. Сегменты: geo, age, motivation, OS, subscription, language → retention/engagement curves.
  3. Live vs Core — описательно, не каузально.
  4. Для итеративного A/B — surrogate (week-1 lessons count), валидируемый против ground truth раз в квартал; sequential testing для многократных пик.

Хочешь увидеть разбор?

Зарегистрируйся бесплатно — откроется развёрнутое решение этой задачи и ещё 4 на выбор.

Зарегистрироваться и увидеть разбор
Уже есть аккаунт? Войти