Как стать автором
Обновить

Комментарии 13

НЛО прилетело и опубликовало эту надпись здесь
Мы поняли это опытным путем еще до начала работы над этими рекомендациями
А какие сроки у вас занимает разработка?
Мы работаем итерациями по 1-3 недели, постепенно улучшая алгоритм. Разрабатывать начали немногим больше года назад, в общей сложности потратили около 3-4 месяцев
Спасибо за интересную статью. К сожалению, конкретных цифр по метрикам вы не привели (в отличие, скажем, от западных статей, где в обязательном порядке приводят величины полноты, точности и F1-меры). Потому что, если сама метрика маленькая, то ее рост в 6 раз это результат на уровне статистического шума. Но так не продать клиентам рекомендации, поэтому вы грамотно скрыли нюансы ;) Еще более интересно сравнивать прирост рекомендаций разработанного алгоритма по сравнению с тривиальными стратегиями, а там картинка будет еще более плачевная, особенно если под это дело подвести экономику (ведь за рекомендации ваш клиент будет платить, как за сервис).

Учет сезонности — это хорошо. Но есть масса отраслей, где ваш подход не будет работать. Например, цикличность покупок: продукты питания, товары для дома, стройматериалы… А вы предлагаете из рекомендаций исключать то, что человек уже покупал. Еще есть отдельная тема рекомендовать то, что нужно побыстрее продать (в том числе со скидкой). Здесь алгоритмы коллобративной фильтрации работают плохо, они вообще изначально использовались в системах, где есть обратная связь (например, оценка покупки, заказа).
Это ниша интернет-магазинов, но в оффлайн торговле это работать не будет.


amalrik1,
Цифр не привожу по двум причинам. Во-первых, используемую метрику сложно интерпретировать (в отличие от точности или полноты) и по ее величине сложно сказать, хороши ли рекомендации. Во-вторых, как я писал, у нас около 300 клиентов-магазинов, для какого-то конкретного из них приводить было бы странно, а усреднять по всем некорректно, потому что значения метрик могут отличаться на порядки в связи со спецификой магазинов.
Насчет шума — это неправда, мы проверяли различные вариации, все стабильно.
Про сравнение с тривиальными моделями, возможно, стоило написать, Вы правы. Могу сказать, что у них метрики были существенно ниже.

Масса отраслей, про которые вы говорите, относятся к FMCG. В силу ряда причин среди наших клиентов нет никого из этих отраслей, поэтому подход везде работает.
По поводу того, что нужно побыстрее продать — Вы правы, это отдельная тема. Поэтому у нас есть не один алгоритм рекомендаций, а около 20 — на все случаи жизни :)

А вот про офлайн Вы не правы — у нас многие клиенты работают в офлайне, и они тоже успешно используют наши рекомендации.
Благодарю за ответ. Не убедили, но мой опыт в основном с данными в FMCG.
Выбрать метрику, которую сложно интерпретировать, по величине которой сложно сказать, хороши ли рекомендации — а для чего тогда выбирать такую метрику? Цифры ради цифр?

Приводить цифры — хороший тон (хотя бы диапазон). И обязательно точность и полноту. Тогда многое лично для меня прояснится. И пусть на одной-двух компаниях, не разглашая. Понимаете, если у вас тривиальная стратегия рекомендаций дает точность 10%, а ваш алгоритм — 15%, то это не окупится у заказчика никогда. Но заказчик это купит и будет считать, что рекомендации работают, не зная, что они чуть-чуть лучше системы, построенной на простых правилах. А когда товарных позиций тысячи, точность будет всегда низкая, либо все рекомендации будут крутиться около хитов продаж, тогда здесь снова тривиальная стратегия даст точность, близкую к коллобративной фильтрации. А если еще и ассортимент часто обновляется… Предсказывать конкретные товарные позиции в таких условиях нереально. Нужно подниматься на уровни выше, групп, подгрупп.

Повторюсь, исключение из рекомендации товаров, которые уже куплены, очень сужает область применения ваших алгоритмов. Система рекомендаций должна быть гибкой, сочетать как простые методы, так и ML, автоматически предлагая заказчику наиболее оптимальный вариант.

Метрика не ради цифр, метрика нужна чтобы сравнивать разные модели между собой — для этой цели наша метрика подходит.


Как Вы предлагаете считать точность и полноту рекомендаций? Это задача ранжирования, а не классификации.


Не могу с Вами согласиться, что поднятие метрики в полтора раза не окупится — как правило, магазины готовы платить даже за небольшое улучшение качества, потому что принесет оно существенно больше денег, чем стоит алгоритм.


Я согласен, что предсказать группу (категорию) товаров проще, чем конкретную позицию. Но человеку нужно предложить конкретный товар, чтобы вызвать интерес, поэтому приходится выкручиваться.


Как я уже писал, система у нас гибкая — есть много разных алгоритмов, не только этот. А по поводу исключения купленных товаров — рекомендую прочитать первый комментарий к статье :)

Тогда это относительная метрика, но нужны и абсолютные. Вы их не приводите, скрываете, причина непонятна мне, догадки я озвучил.

Что значит, как я предлагаю считать точность и полноту рекомендаций? Это стандартные метрики оценки качества рекомендаций: Prec@k, Rec@k и F1@k где k — число рекомендаций.
Если prec@5 = 20%, то я понимаю, что в среднем из 5 порекомендованных товаров 1 купили. Кстати, оптимальный размер k — то же вопрос, так же как и подбор длины окна прошлой корзины.

То, что человеку нужно предложить конкретный товар, это тоже заблуждение (так не везде). Если у меня высокая вероятность купить кроссовки, то как вы мне предложите конкретную модель? Есть такая поговорка: сколько людей — столько мнений. И никакой алгоритм не подберет мне нужную. Потому что я и сам не знаю и буду ориентироваться вначале на те модели, где есть скидка. Так может, мне в рекомендациях прислать купон на скидку на кроссовки?..

Гибкая система — та, которая позволяет автоматически провести на данных заказчика серию оффлайн-тестов, перебрать большое число стратегий: простых, с ML, комбинированных и предложить оптимальную. Или как вы предлагаете заказчику подбирать алгоритм? Самому? Или привлекать ваших аналитиков? Это существенное увеличение бюджета.

Проблема исключения купленных товаров лежит в том, что рекомендуются сами товары. Если рекомендовать на более высоком уровне, там такой проблемы нет.
Метрики, про которые Вы говорите слишком упрощены — они не учитывают порядок рекомендаций. Кроме того, если я скажу, что prec@5 = 3%, сможете ли Вы понять, хорошо это или плохо? Вроде мало, но в денежном эквиваленте может быть совсем неплохо.
В любом случае, все эти метрики искусственные, поэтому мы не ориентировались на них как на абсолютную оценку качества. Для абсолютной оценки мы проводим AB-тесты.

Насчет того, что предлагать человеку, наверное не стоит здесь дискутировать. Мы решили делать так и наши клиенты хорошо к этому отнеслись. Может быть, когда-нибудь мы сделаем возможность рекомендовать группы товаров, пока ее нет. Про скидки мы думаем, очень может быть, что одним из следующих наших алгоритмов как раз станет алгоритм расчета индивидуальных скидок.

Пока алгоритмы выбирают наши клиенты при помощи наших же менеджеров. Они прорабатывают множество кейсов, настраивают триггеры. Например, когда человек только зашел на сайт, ему рекомендуются популярные товары, когда посмотрел несколько товаров, рекомендуются похожие, когда добавил в корзину — сопутствующие. У каждого своя специфика и крайне сложно сделать хорошую систему, которая сама бы все учитывала и подбирала оптимальный набор алгоритмов. Но Вы правы, такая система нужна и когда-нибудь мы ее обязательно сделаем.
О какой важности порядка рекомендаций идет речь, если мы предлагаем человеку, скажем, 2 товара (prec@2 и recall@2)? Он их либо купит, либо не купит.

Если Вы мне скажете, что prec@5 = 3%, а тривиальная стратегия дает 2,5%, я скажу вам, что это плохо. Но ваш клиент будет думать, что это хорошо, потому что про 3% ему сообщат, а про 2,5% — нет :). Это рынок, нужно продавать услуги, я все понимаю. Но все же, когда Вы пишете статьи, нужно понимать, что их могут читать люди, которые хорошо погружены в тему. Так же как и не нужно писать, что среди ваших клиентов нет FMCG. Потому что статью может читать человек, который работал с компанией сегмента FMCG, у которой один из подрядчиков Mindbox.

А как вы интегрируетесь с магазином, чтобы забирать статистику, товары, а также как матчите разные данные аналитики (заказы, какие-то действия на сайте и тд)?

Для интеграции с внутренней системой магазина у нас есть API. Мы предлагаем CDP (Customer Data Platform) — платформу для хранения данных клиентов, магазин присылает нам информацию обо всех действиях, совершенных пользователем: вход в лк, просмотр товара, оформление заказа и т.д. Даже если у магазина стоит 10 разных систем и каждая хранит какие-то свои данные, у нас все собирается в одном месте. Благодаря этому мы можем собирать статистику и делать продвинутую аналитику
Зарегистрируйтесь на Хабре, чтобы оставить комментарий