Рекомендации между вертикалями в супераппе
В супераппе 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 пользователей ранжируй по ожидаемой инкрементальной пользе с учетом ограничений.