История вопроса
Крупные продукты постоянно внедряют новые точки входа для контента — персонализированные блоки, AI-рекомендации или альтернативные навигационные паттерны. Без анализа каннибализации команда может ошибочно приписать успех новой фиче, тогда как на самом деле произошёл лишь переток пользователей между экранами без роста общей выручки.
Проблема
Необходимо отделить инкрементальный эффект (новые транзакции, которые не произошли бы без нового блока) от каннибализации (транзакции, которые переместились из старых категорий в новый блок). Стандартный A/B-тест на уровне пользователя не решает эту задачу, так как пользователь видит оба канала одновременно, и выбор между ними создаёт эндогенность.
Решение
Используем Geo-experiment с синтетическим контролем или кластеризованную рандомизацию по сессиям. Мы случайным образом назначаем географические регионы в тест и контроль, измеряем изменение GMV не только на уровне всей платформы, но и дизагрегируем по категориям навигации. Применяем метод Difference-in-Differences с категориями как панельными данными, чтобы вычесть каннибализированную выручку из общего прироста.
Описание проблемы
В мобильном приложении e-commerce запустили новый блок «Подобрано для вас» на базе TensorFlow-моделей ранжирования. Через месяц метрика кликов в категории упала на 25%, а общий GMV вырос всего на 5%. Продуктовая команда спорила: это каннибализация или реальная оптимизация пути пользователя? Необходимо было определить, сколько из 5% — истинный прирост, а сколько — переток существующего спроса.
Рассмотренные решения
Решение первое: Простое сравнение «до/после» по общему GMV. Этот подход предполагает, что без нового блока показатели остались бы неизменными. Плюсы: максимальная скорость, не требует инфраструктуры экспериментов. Минусы: игнорирует сезонность, маркетинговые кампании и органический тренд роста, что даёт смещённую оценку в 15-20%.
Решение второе: Классический A/B-тест на уровне user_id с 50/50 сплитом через Splitting-сервис. Здесь предполагается, что если скрыть блок для контрольной группы, разница в GMV покажет истинный эффект. Плюсы: простота реализации, привычная статистика. Минусы: пользователи в тесте всё равно могут найти товары через поиск или категории, создавая прямую каннибализацию внутри тестовой группы, а контрольная группа без блока генерирует меньше данных для сравнения категорий.
Решение третье: Гео-эксперимент с синтетическим контролем (SCM). Мы выбрали 20 городов с похожей динамикой GMV, рандомизировали 10 в тест (блок включён), 10 в контроль (блок не показывается). Для контроля построили взвешенную сумму городов, максимально приближённую к тестовым городам «до» периода. Плюсы: позволяет измерить эффект на уровне агрегированных рынков, естественно учитывая каннибализацию между категориями внутри города. Минусы: требует большой выборки (города), чувствителен к региональным акциям, сложность в вычислении ошибки второго порядка.
Выбранное решение и обоснование
Остановились на третьем варианте — гео-эксперименте с Synthetic Control Method. Ключевым фактором стала невозможность измерить каннибализацию внутри одного пользователя через обычный A/B-тест, так как даже в контрольной группе без блока мы не видим «контрфактуальную» судьбу тех транзакций, которые в тестовой группе перетекли бы в блок. Гео-уровень позволил увидеть, как меняется структура покупок по категориям в целом.
Результат
Выявили, что из 5% общего прироста GMV 3.2% составляла каннибализация (переток из длинного хвоста категорий в топ-3 товара из блока), а только 1.8% — истинно инкрементальный эффект. На основе этих данных скорректировали алгоритм ранжирования, добавив пенализацию за популярные товары, что подняло чистый прирост до 4.1%.
Вопрос 1: Почему нельзя просто посмотреть корреляцию между кликами в новый блок и падением кликов в категории на уровне пользовательской сессии?
Ответ заключается в эндогенности самоотбора. Пользователи, кликающие в новый блок, обладают иной структурой намерений (высокое намерение купить vs. браузинг), чем те, кто идёт в категории. Прямая корреляция приведёт к эффекту Симпсона: в агрегированных данных может казаться, что блок «украл» трафик, но на уровне когорт с высоким намерением мы увидим, что они бы всё равно купили, просто быстрее. Необходимо использовать Causal Forest или Propensity Score Matching, чтобы сравнивать пользователей с одинаковой историей поведения «до» экспозиции блока.
Вопрос 2: Как рассчитать минимально значимый эффект (MDE) для эксперимента с каннибализацией, если эффект может быть отрицательным для одних категорий и положительным для других?
Здесь кандидаты ошибаются, применяя стандартную формулу для среднего эффекта. В случае каннибализации дисперсия между категориями возрастает, так как мы имеем дело с дисбалансом: одни категории теряют, другие выигрывают. Нужно использовать Linear Mixed Models с рандомным эффектом категории и рассчитывать мощность для комбинированной метрики: общий GMV минус взвешенное падение GMV в каннибализированных категориях с коэффициентом компенсации риска.
Вопрос 3: В чём принципиальная разница между экспериментальным измерением каннибализации в продукте и решением проблемы interference в социальных сетях?
В продуктовой аналитике каннибализация — это форма «перетока спроса» внутри одного субъекта (пользователя), который редко моделируется как interference между юнитами. В социальных сетях (например, Facebook) interference — это spillover между пользователями через социальный граф. Для борьбы с каннибализацией мы используем кластеризацию по времени или типу поведения, а не графовую рандомизацию. Важно понимать, что здесь treatment assignment — это exposure к новому UI, а не коммуникация между пользователями, поэтому методы вроде Ego-cluster randomization не применимы; вместо этого используем Switchback experiments на уровне пользовательских сегментов.