Что сложного в оценке качества рекомендательных систем (часть 2)
Статистическая значимость
В прошлый раз мы закончили на том, что для оценки эффекта от внедренных в онлайн-ритейле рекомендательных систем начали проводить А/В тесты. Казалось бы, что может быть проще: разделил пользователей на две группы, измерил выручку в каждой, где денег больше - там и лучше. Оказалось, что проблемы подстерегали повсюду.
Начнем с того, что если в группе А заработано $50129, а в группе B - $51104, не очевидно, что с одним и тем же подходом к рекомендациям мы не получили бы такое же различие - нам могло просто повезти получить такое случайное отклонение. Все зависит от того, сколько было сделано покупок в каждой группе, какие чеки были в этих покупках, были ли выбросы вроде супердорогих товаров, покупка которых может сразу перекосить всю статистику в пользу одной из групп.
Чтобы как-то уберечь себя от принятия случайного отклонения в группах за реальный эффект, начали оценивать статистическую значимость результата - грубо говоря, воспроизводимость эффекта при повторных замерах.
Деление на группы
На этом беды не заканчиваются: увы, мы можем неверно разбить пользователей на группы А и В. Если в группе В было больше состоятельных клиентов, не удивительно, что и результат там будет лучше. Вы скажете: "Ну надо же случайно делить на группы!" Но в том-то и подвох, что на бытовом уровне "случайность" все понимают по-своему. Частая история - относить клиента к той или иной группе по последней цифре номера телефона (например, четные в одну группу, нечетные - в другую). К сожалению, распределение по этим цифрам обычно далеко не равномерное, поэтому такой подход часто приводил к перекосам в группах и невалидным А/В тестам. В частности, я видел такую грубую ошибку в инструментах для А/В тестирования даже в очень технологичных коммерческих компаниях (причем не в одной!).
Так как это все влияет на оценку качества рекомендаций?
Оказывается, в А/В тестировании не все метрики качества одинаково быстро "красятся" - показывают статзначимое отличие в группах. Эмпирическое правило - чем интереснее метрика бизнесу и ближе к конечному результату, тем хуже будет "прокрашиваться". Различие в кликах быстрее красится, чем в добавлениях в корзину. Добавления в корзину - быстрее, чем покупки. А деньги? А деньги вообще часто не значимы, сколько не мучайся, из-за большого разброса в ценах товаров.
Конечно, здесь есть миллион оговорок и, например, таргетируя рекомендации только на определенный сегмент без большого разброса цен, получить статзначимость бывает проще (если сокращение количества наблюдений оказалось менее драматичным, чем сокращение разброса цен). Зато покупки и деньги с блока по last/first click attribution красятся "на ура" - по этому показателю эффект часто на порядок больше, чем "реальный" (без учета каннибализации), заметить его проще. Поэтому даже в условиях, когда все знают про существование А/В тестов, от нехватки данных можно все равно начать измерять "кривые" метрики.
Обычно стараются зафиксировать иерархию метрик (например - деньги -> покупки -> корзины -> клики -> клики/покупки с блока) и стараться получить эффект по самой близкой бизнесу метрике из тех, которые прокрашиваются. Стоит заметить, что тут тоже важно не переусердствовать - есть такая вещь в статистике как множественная проверка гипотез, неправильное выполнение которой легко приведет к тому, что вы будете находить эффект там, где его нет.
Звучит это все довольно безрадостно, но это мы еще не поговорили о том, как измеряют качество модели на исторических данных. До внедрения модель же надо как-то разрабатывать и на чем-то обучать. Вот тут уж такой безысходностью повеет, что мало не покажется. Об этом - в следующей части.
Статистическая значимость
В прошлый раз мы закончили на том, что для оценки эффекта от внедренных в онлайн-ритейле рекомендательных систем начали проводить А/В тесты. Казалось бы, что может быть проще: разделил пользователей на две группы, измерил выручку в каждой, где денег больше - там и лучше. Оказалось, что проблемы подстерегали повсюду.
Начнем с того, что если в группе А заработано $50129, а в группе B - $51104, не очевидно, что с одним и тем же подходом к рекомендациям мы не получили бы такое же различие - нам могло просто повезти получить такое случайное отклонение. Все зависит от того, сколько было сделано покупок в каждой группе, какие чеки были в этих покупках, были ли выбросы вроде супердорогих товаров, покупка которых может сразу перекосить всю статистику в пользу одной из групп.
Чтобы как-то уберечь себя от принятия случайного отклонения в группах за реальный эффект, начали оценивать статистическую значимость результата - грубо говоря, воспроизводимость эффекта при повторных замерах.
Деление на группы
На этом беды не заканчиваются: увы, мы можем неверно разбить пользователей на группы А и В. Если в группе В было больше состоятельных клиентов, не удивительно, что и результат там будет лучше. Вы скажете: "Ну надо же случайно делить на группы!" Но в том-то и подвох, что на бытовом уровне "случайность" все понимают по-своему. Частая история - относить клиента к той или иной группе по последней цифре номера телефона (например, четные в одну группу, нечетные - в другую). К сожалению, распределение по этим цифрам обычно далеко не равномерное, поэтому такой подход часто приводил к перекосам в группах и невалидным А/В тестам. В частности, я видел такую грубую ошибку в инструментах для А/В тестирования даже в очень технологичных коммерческих компаниях (причем не в одной!).
Так как это все влияет на оценку качества рекомендаций?
Оказывается, в А/В тестировании не все метрики качества одинаково быстро "красятся" - показывают статзначимое отличие в группах. Эмпирическое правило - чем интереснее метрика бизнесу и ближе к конечному результату, тем хуже будет "прокрашиваться". Различие в кликах быстрее красится, чем в добавлениях в корзину. Добавления в корзину - быстрее, чем покупки. А деньги? А деньги вообще часто не значимы, сколько не мучайся, из-за большого разброса в ценах товаров.
Конечно, здесь есть миллион оговорок и, например, таргетируя рекомендации только на определенный сегмент без большого разброса цен, получить статзначимость бывает проще (если сокращение количества наблюдений оказалось менее драматичным, чем сокращение разброса цен). Зато покупки и деньги с блока по last/first click attribution красятся "на ура" - по этому показателю эффект часто на порядок больше, чем "реальный" (без учета каннибализации), заметить его проще. Поэтому даже в условиях, когда все знают про существование А/В тестов, от нехватки данных можно все равно начать измерять "кривые" метрики.
Обычно стараются зафиксировать иерархию метрик (например - деньги -> покупки -> корзины -> клики -> клики/покупки с блока) и стараться получить эффект по самой близкой бизнесу метрике из тех, которые прокрашиваются. Стоит заметить, что тут тоже важно не переусердствовать - есть такая вещь в статистике как множественная проверка гипотез, неправильное выполнение которой легко приведет к тому, что вы будете находить эффект там, где его нет.
Звучит это все довольно безрадостно, но это мы еще не поговорили о том, как измеряют качество модели на исторических данных. До внедрения модель же надо как-то разрабатывать и на чем-то обучать. Вот тут уж такой безысходностью повеет, что мало не покажется. Об этом - в следующей части.