Проблема оценки качества поисковой выдачи сопряжена с фундаментальным парадоксом наблюдений: мы видим клики только на тех позициях, которые пользователь увидел, но вероятность просмотра экспоненциально падает с рангом. Классические работы Joachims et al. по position bias и Richardson по examination hypothesis заложили основу для понимания того, что клик не равен релевантности. В контексте продуктовой аналитики это приводит к необходимости отделения истинного предпочтения пользователя от артефактов интерфейса, особенно когда изменение алгоритма ранжирования затрагивает всю пользовательскую базу одновременно.
При глобальном обновлении поискового движка наблюдаемые метрики (CTR, глубина просмотра, конверсия) изменяются под влиянием двух конфаундеров: изменения самого порядка документов и изменения вероятности их осмотра. Без возможности разделить пользователей на контрольную и тестовую группы классическое A/B-тестирование невозможно, а сезонные колебания создают временные тренды, коррелирующие с моментом релиза. Задача аналитика состоит в изоляции чистого эффекта ранжирования от этих шумов при ограниченности данных.
Оптимальный подход комбинирует методы квазиэкспериментов и корректировки на смещения. На первом этапе применяется Difference-in-Differences с синтетическим контролем: строится взвешенная комбинация исторических периодов или сегментов товаров, минимизирующая pre-treatment ошибку прогноза метрик. Для корректировки position bias используется Inverse Propensity Weighting (IPW), где propensity scores оцениваются через вероятность просмотра позиции на основе прошлых рандомизированных логов или через Expectation-Maximization алгоритм с допущением Examination-Cascade Model. Дополнительно, для нелинейных эффектов применяются Causal Forests, позволяющие моделировать гетерогенность эффекта по категориям товаров и сегментам пользователей.
В маркетплейсе электроники команда поиска заменила BM25 на нейросетевой BERT-based ranker, оптимизированный под маржинальность. Через две недели после релиза метрика GMV на поисковую сессию выросла на 18%, но глубина просмотра упала на 25%. Бизнес сомневался, связан ли рост с алгоритмом или с началом распродаж, совпавших с релизом, а также беспокоился о деградации пользовательского опыта на длинном хвосте запросов.
Первым вариантом рассматривалось простое сравнение метрик до и после релиза через t-test. Преимуществом была оперативность и отсутствие необходимости в сложной инфраструктуре. Однако минусы очевидны: невозможность отделить сезонный эффект распродаж от эффекта алгоритма, игнорирование position bias (новый алгоритм мог показывать дорогие товары выше просто потому, что они приносят больше денег, а не потому что они релевантнее), и отсутствие учета общей инфляции спроса в период акций.
Вторым вариантом являлся Interrupted Time Series (ITS) анализ с сезонной декомпозицией через Prophet или SARIMA. Это позволило бы учесть тренды и сезонность, построив контрфактуальное прогнозное значение метрик без релиза. Плюсы включали статистическую строгость и возможность моделирования автокорреляций. Минусы же заключались в чувствительности к точке разрыва (если релиз был постепенным), сложности интерпретации коэффициентов для бизнеса и предположении линейности трендов, которое часто нарушается в e-commerce во время массовых промо-кампаний.
Третьим вариантом стала разработка Synthetic Control Method на уровне категорий товаров: создание взвешенной корзины из незатронутых запросов или категорий, где алгоритм не изменялся (например, из-за технических ограничений на отдельных локалях), как контрольной группы для сравнения. Преимущества заключались в визуальной наглядности и интуитивности для стейкхолдеров, а также в меньшей чувствительности к предположениям о форме распределения ошибок. Недостатки включали необходимость идентификации подходящих контрольных единиц с похожей динамикой (что сложно при глобальном релизе) и риск overfitting при подборе весов.
В итоге была выбрана гибридная методология: Diff-in-Diff с синтетическим контролем на уровне категорий товаров, скомбинированная с IPW-корректировкой на позицию показа. Это позволило отделить эффект изменения ранжирования от сезонных всплесков и скорректировать искажение, вносимое тем, что дорогие товары теперь показывались на верхних позициях чаще. Выбор обусловлен необходимостью одновременно учесть временную структуру данных и структурные смещения в экспозиции.
Результатом стало установление, что 14% из 18% роста GMV объясняются именно алгоритмом, а оставшиеся 4% — сезонностью. При этом выяснилось, что на head-запросах (топ-20% по частоте) конверсия выросла на 22%, тогда как на tail-запросах упала на 15%, что компенсировалось ростом среднего чека. Это привело к решению внедрить гибридную схему: нейросетевой ранкер для популярных запросов и классический для редких, что сбалансировало метрики.
Как корректно учитывать position bias при отсутствии рандомизированного эксперимента?
Без специальных рандомизированных показов оценить propensity можно через Expectation-Maximization алгоритм, предполагая, что клик = examination × relevance. Кандидаты часто предлагают просто добавить позицию как фичу в регрессию, но это игнорирует нелинейное взаимодействие между позицией и релевантностью. Правильный подход — использовать Click Models (Cascade Model или DBN — Dependent Click Model) для оценки examination probability, а затем взвешивать наблюдения обратно пропорционально этой вероятности (IPW). Без этого оценка эффекта ранжирования будет смещена в сторону top-heavy результатов.
Почему простое сравнение кликов до и после изменения алгоритма дает смещенную оценку даже при учете сезонности?
Помимо position bias, существует эффект exploration vs exploitation и user learning. Новый алгоритм может исследовать (explore) меньше, предлагая более предсказуемые результаты, что снижает engagement в краткосрочной перспективе. Или, наоборот, пользователи могут адаптироваться к новой структуре выдачи, изменяя паттерны прокрутки (scrolling behavior), что нарушает stationarity предположений time-series анализа. Кандидаты упускают необходимость проверки parallel trends assumption в Diff-in-Diff на pre-period данных и важность лагов в агрегации (нельзя сравнивать день к дню из-за day-of-week эффектов, нужна минимум недельная агрегация).
Как различать эффект улучшения matching'а запрос-товар от эффекта изменения ассортиментного состава топа выдачи?
Это различие критично для понимания долгосрочного влияния на LTV. Если новый алгоритм просто смещает выдачу в сторону дорогих товаров (assortment shift), а не лучше понимает намерение пользователя (relevance improvement), рост конверсии может быть краткосрочным из-за эффекта новизны. Для разделения нужно использовать Causal Forests или Meta-learners (S-Learner, T-Learner) с фиксированными эффектами товаров (product fixed effects), чтобы сравнивать один и тот же товар в разных позициях до и после изменения. Если эффект наблюдается только за счет смены состава товаров в топе (например, исчезновение бюджетных опций), это требует другой продуктовой реакции, чем если улучшился CTR на фиксированных позициях для данного товара.