Исторический контекст. В классическом онлайн-ритейле отсутствие товара в заказе (out-of-stock) традиционно решалось через отмену позиции или ручной звонок менеджера, что критично снижало конверсию и удовлетворенность. С развитием ML-рекомендательных систем стало возможным предлагать замены в реальном времени на основе семантической близости, ценового паритета и истории замен. Однако простое сравнение заказов с заменами и без них дает смещенную оценку, так как сам факт наличия замены коррелирует с первоначальным дефицитом товара, а пользователи, согласные на автозамены, систематически отличаются от тех, кто их запрещает.
Постановка проблемы. Ключевая сложность заключается в эндогенности самоотбора: лояльные пользователи чаще разрешают автозамены, а случайный дефицит поражает выборку неравномерно по категориям (скоропорт vs техника). Кроме того, внедрение происходит на уровне складов, что исключает классическое A/B-тестирование на уровне пользователей из-за контаминации через общий инвентарь. Необходимо изолировать чистый эффект качества ML-подстановки от базового негатива отсутствия товара и учесть гетерогенность по категориям.
Подробное решение. Оптимальный подход — комбинация Difference-in-Differences (DiD) на уровне складов и Causal Forest для оценки гетерогенности эффекта. Для складов с внедрением ML-замен (treatment) подбирается контрольная группа через Synthetic Control Method, используя склады без автозамен с похожей структурой спроса и сезонностью. Для пользователей внутри treatment-складов применяется Propensity Score Matching, чтобы сопоставить принимающих и отклоняющих замены по историческим признакам (частота заказов, средний чек, категорийные предпочтения). Эффект оценивается как Conditional Average Treatment Effect (CATE) с разбивкой по категориям заменяемости (высокая/средняя/низкая), что позволяет отделить технологический эффект от селекционного.
Компания «ПродуктПлюс» внедряла систему умных замен для отсутствующих позиций в онлайн-заказах. Проблема состояла в том, что 15% заказов содержали out-of-stock позиции, что приводило к оттоку пользователей. Аналитикам нужно было измерить, действительно ли ML-замены снижают негативный эффект дефицита или просто маскируют проблемы закупок.
Первый вариант — классическое A/B-тестирование по пользователям с разделением на группу «автозамена включена» и «выключена». Плюсы: простая интерпретация и прямая сравнимость метрик конверсии. Минусы: невозможен на практике, так как один склад обслуживает обе группы, и если товар закончился, его нельзя «вернуть» для контрольной группы, создавая логистический коллапс и контаминацию.
Второй вариант — сравнение «до и после» на тех же складах без контрольной группы. Плюсы: простота расчета и отсутствие необходимости в синхронизации с другими складами. Минусы: сезонность спроса на продукты и изменение ассортиментной матрицы искажают результат, невозможно отделить эффект функции от общего роста базы.
Третий вариант — квазиэкспериментальный дизайн Difference-in-Differences с использованием городских микроскладов как единиц рандомизации, где treatment-склады получали ML-модель, а контрольные — оставались на ручном согласовании. Плюсы: устраняет систематические тренды и сезонность, позволяет использовать статистически значимые выводы. Минусы: требует строгого предположения о параллельных трендах и достаточного количества однородных складов для построения синтетического контроля.
Выбранное решение: команда выбрала третий вариант с дополнительным применением Causal Forest для сегментации пользователей по склонности принимать замены. Это позволило изолировать эффект для «консерваторов» и «ранних последователей» отдельно, корректируя на предшествующую историю заказов через Propensity Score Matching.
Итоговый результат: удалось установить, что ML-замены увеличивают retention на 12% только для категорий с высокой заменяемостью (молочка, бакалея), но снижают удовлетворенность на 8% для нишевых товаров (крафтовое пиво, органика), где замены воспринимаются как навязчивые. Компания ограничила автозамены категориями с высокой скоррелированностью предпочтений, что привело к росту NPS на 0.4 пункта и снижению операционных издержек на ручной пересорт на 23%.
Как различить эффект самой технологии автозамен от эффекта качества конкретной ML-модели и избежать ошибки выживания (survivorship bias)?
Ответ. Кандидаты часто смешивают технологический эффект (возможность замены как таковой) с качественным (точность подбора аналога). Для разделения необходимо построить дозово-ответную функцию (dose-response function), где «дозой» является вероятность релевантности замены по метрике модели (NDCG@1). Используя Fuzzy Regression Discontinuity вокруг порога acceptance rate модели (например, замены с confidence > 0.8 vs 0.6), можно изолировать чистый эффект качества от эффекта наличия функции. При этом важно учитывать survivorship bias: пользователи, получившие плохие замены в первом заказе, могут отключить функцию навсегда, искажая выборку в пользу успешных кейсов. Для коррекции применяется Heckman selection model, моделирующий уравнение отбора (вероятность остаться в выборке после первого опыта) и уравнение результата (удовлетворенность) совместно.
Как учесть перекрестное загрязнение (spillover) между категориями, когда неудачная замена в одной категории влияет на восприятие всего заказа и отмену других позиций?
Ответ. Стандартный подход оценивает эффект категории изолированно, игнорируя negative spillover на корзину. Для учета межкатегориальных эффектов необходимо моделировать заказ как систему взаимозависимых товаров, используя Graph Causal Models или Structural Equation Modeling (SEM). Конкретно: строится граф зависимостей категорий (например, замена йогурта влияет на восприятие мюсли), и эффект оценивается через Total Treatment Effect с контролем ковариат соседних позиций. Альтернативно, применяется Mediation Analysis, где медиатором является «флаг разочарования» (удаление других товаров из корзины после показа замены). Это позволяет декомпозировать общий эффект на прямой (в категории) и косвенный (через изменение корзины), избегая завышенной оценки пользы от замен.
Как корректно интерпретировать результаты, если ML-модель демонстрирует динамическое обучение (learning effects), и качество замен улучшается со временем, создавая временной тренд в treatment-группе?
Ответ. Начинающие аналитики игнорируют non-stationarity эффекта, предполагая константный ATE на всем горизонте наблюдения. При динамическом обучении модели эффект «сегодня» систематически отличается от эффекта «месяц назад», нарушая предположение Stable Unit Treatment Value Assumption (SUTVA) о временной стабильности. Решением является применение Time-Varying Coefficient Models или Bayesian Structural Time Series (BSTS) с моделированием тренда эффекта как латентной переменной. В рамках DiD необходимо включить взаимодействие времени и treatment (event study design), проверяя гипотезу о параллельных трендах для каждого временного среза. Если эффект растет, важно различать learning curve самой модели (улучшение алгоритма) от user adaptation (привыкание пользователей к функции), используя разные когорты пользователей и когорты версий модели для декомпозиции.