Назад к подготовке

Рекомендации между вертикалями в супераппе

В супераппе inDrive есть несколько вертикалей: такси, доставка, междугородние поездки, грузовые перевозки и курьеры. Как рекомендовать активному пользователю одной вертикали попробовать другую? Разберите метрики, данные, модель, offline-оценку и A/B-тест.

Ответить самому

Сначала сформулируйте ответ как на собеседовании, затем откройте разбор и оцените себя.

Загрузка

Короткий ответ

Это cross-sell/uplift ranking: выбираем допустимые пары пользователь-вертикаль, задаем метрики adoption/retention/GMV и guardrails, строим простые baseline, затем проверяем constrained ranking model в A/B-тесте.

Полный разбор

Начать нужно с продуктового действия: ранжируем кнопки вертикалей, отправляем push, показываем промо или выбираем аудиторию для кампании. Цель - ожидаемая инкрементальная польза от показа другой вертикали конкретному пользователю с учетом ограничений коммуникации, а не просто похожесть пользователей.

Данные: история пользователя по вертикалям, город, паттерны pickup/dropoff, частота и давность поездок/заказов, price sensitivity, app sessions, прошлые показы, промо, доступность вертикали и supply в регионе. Baseline: случайная допустимая вертикаль, популярность по городу/сегменту, collaborative filtering вроде ALS или LightFM.

Модели: multiclass next-vertical prediction, binary user-vertical propensity, learning-to-rank, sequence models и uplift models, если есть exposure logs. Offline-метрики: AUC/PR-AUC, Recall@K/NDCG@K, calibration, coverage. Online-метрики: первый заказ в новой вертикали, повторное использование, GMV/revenue, стоимость промо, отписки/усталость от уведомлений и влияние на основную вертикаль.

Теория

Рекомендация в супераппе - это intervention problem с ограничениями, а не только retrieval problem.

Типичные ошибки

  • Оптимизировать raw adoption без учета пользователей, которые и так бы попробовали вертикаль.
  • Игнорировать доступность вертикали и supply constraints в городе.
  • Свести всю модель к среднему embedding позитивных пользователей, хотя поведение может быть мультимодальным.

Как отвечать на собеседовании

  • Сначала уточни поверхность: ranking кнопок, push, promo или выбор аудитории.
  • Для top-100 пользователей ранжируй по ожидаемой инкрементальной пользе с учетом ограничений.