Комментарии 13
Учет сезонности — это хорошо. Но есть масса отраслей, где ваш подход не будет работать. Например, цикличность покупок: продукты питания, товары для дома, стройматериалы… А вы предлагаете из рекомендаций исключать то, что человек уже покупал. Еще есть отдельная тема рекомендовать то, что нужно побыстрее продать (в том числе со скидкой). Здесь алгоритмы коллобративной фильтрации работают плохо, они вообще изначально использовались в системах, где есть обратная связь (например, оценка покупки, заказа).
Это ниша интернет-магазинов, но в оффлайн торговле это работать не будет.
Цифр не привожу по двум причинам. Во-первых, используемую метрику сложно интерпретировать (в отличие от точности или полноты) и по ее величине сложно сказать, хороши ли рекомендации. Во-вторых, как я писал, у нас около 300 клиентов-магазинов, для какого-то конкретного из них приводить было бы странно, а усреднять по всем некорректно, потому что значения метрик могут отличаться на порядки в связи со спецификой магазинов.
Насчет шума — это неправда, мы проверяли различные вариации, все стабильно.
Про сравнение с тривиальными моделями, возможно, стоило написать, Вы правы. Могу сказать, что у них метрики были существенно ниже.
Масса отраслей, про которые вы говорите, относятся к FMCG. В силу ряда причин среди наших клиентов нет никого из этих отраслей, поэтому подход везде работает.
По поводу того, что нужно побыстрее продать — Вы правы, это отдельная тема. Поэтому у нас есть не один алгоритм рекомендаций, а около 20 — на все случаи жизни :)
А вот про офлайн Вы не правы — у нас многие клиенты работают в офлайне, и они тоже успешно используют наши рекомендации.
Выбрать метрику, которую сложно интерпретировать, по величине которой сложно сказать, хороши ли рекомендации — а для чего тогда выбирать такую метрику? Цифры ради цифр?
Приводить цифры — хороший тон (хотя бы диапазон). И обязательно точность и полноту. Тогда многое лично для меня прояснится. И пусть на одной-двух компаниях, не разглашая. Понимаете, если у вас тривиальная стратегия рекомендаций дает точность 10%, а ваш алгоритм — 15%, то это не окупится у заказчика никогда. Но заказчик это купит и будет считать, что рекомендации работают, не зная, что они чуть-чуть лучше системы, построенной на простых правилах. А когда товарных позиций тысячи, точность будет всегда низкая, либо все рекомендации будут крутиться около хитов продаж, тогда здесь снова тривиальная стратегия даст точность, близкую к коллобративной фильтрации. А если еще и ассортимент часто обновляется… Предсказывать конкретные товарные позиции в таких условиях нереально. Нужно подниматься на уровни выше, групп, подгрупп.
Повторюсь, исключение из рекомендации товаров, которые уже куплены, очень сужает область применения ваших алгоритмов. Система рекомендаций должна быть гибкой, сочетать как простые методы, так и ML, автоматически предлагая заказчику наиболее оптимальный вариант.
Метрика не ради цифр, метрика нужна чтобы сравнивать разные модели между собой — для этой цели наша метрика подходит.
Как Вы предлагаете считать точность и полноту рекомендаций? Это задача ранжирования, а не классификации.
Не могу с Вами согласиться, что поднятие метрики в полтора раза не окупится — как правило, магазины готовы платить даже за небольшое улучшение качества, потому что принесет оно существенно больше денег, чем стоит алгоритм.
Я согласен, что предсказать группу (категорию) товаров проще, чем конкретную позицию. Но человеку нужно предложить конкретный товар, чтобы вызвать интерес, поэтому приходится выкручиваться.
Как я уже писал, система у нас гибкая — есть много разных алгоритмов, не только этот. А по поводу исключения купленных товаров — рекомендую прочитать первый комментарий к статье :)
Что значит, как я предлагаю считать точность и полноту рекомендаций? Это стандартные метрики оценки качества рекомендаций: Prec@k, Rec@k и F1@k где k — число рекомендаций.
Если prec@5 = 20%, то я понимаю, что в среднем из 5 порекомендованных товаров 1 купили. Кстати, оптимальный размер k — то же вопрос, так же как и подбор длины окна прошлой корзины.
То, что человеку нужно предложить конкретный товар, это тоже заблуждение (так не везде). Если у меня высокая вероятность купить кроссовки, то как вы мне предложите конкретную модель? Есть такая поговорка: сколько людей — столько мнений. И никакой алгоритм не подберет мне нужную. Потому что я и сам не знаю и буду ориентироваться вначале на те модели, где есть скидка. Так может, мне в рекомендациях прислать купон на скидку на кроссовки?..
Гибкая система — та, которая позволяет автоматически провести на данных заказчика серию оффлайн-тестов, перебрать большое число стратегий: простых, с ML, комбинированных и предложить оптимальную. Или как вы предлагаете заказчику подбирать алгоритм? Самому? Или привлекать ваших аналитиков? Это существенное увеличение бюджета.
Проблема исключения купленных товаров лежит в том, что рекомендуются сами товары. Если рекомендовать на более высоком уровне, там такой проблемы нет.
В любом случае, все эти метрики искусственные, поэтому мы не ориентировались на них как на абсолютную оценку качества. Для абсолютной оценки мы проводим AB-тесты.
Насчет того, что предлагать человеку, наверное не стоит здесь дискутировать. Мы решили делать так и наши клиенты хорошо к этому отнеслись. Может быть, когда-нибудь мы сделаем возможность рекомендовать группы товаров, пока ее нет. Про скидки мы думаем, очень может быть, что одним из следующих наших алгоритмов как раз станет алгоритм расчета индивидуальных скидок.
Пока алгоритмы выбирают наши клиенты при помощи наших же менеджеров. Они прорабатывают множество кейсов, настраивают триггеры. Например, когда человек только зашел на сайт, ему рекомендуются популярные товары, когда посмотрел несколько товаров, рекомендуются похожие, когда добавил в корзину — сопутствующие. У каждого своя специфика и крайне сложно сделать хорошую систему, которая сама бы все учитывала и подбирала оптимальный набор алгоритмов. Но Вы правы, такая система нужна и когда-нибудь мы ее обязательно сделаем.
Если Вы мне скажете, что prec@5 = 3%, а тривиальная стратегия дает 2,5%, я скажу вам, что это плохо. Но ваш клиент будет думать, что это хорошо, потому что про 3% ему сообщат, а про 2,5% — нет :). Это рынок, нужно продавать услуги, я все понимаю. Но все же, когда Вы пишете статьи, нужно понимать, что их могут читать люди, которые хорошо погружены в тему. Так же как и не нужно писать, что среди ваших клиентов нет FMCG. Потому что статью может читать человек, который работал с компанией сегмента FMCG, у которой один из подрядчиков Mindbox.
А как вы интегрируетесь с магазином, чтобы забирать статистику, товары, а также как матчите разные данные аналитики (заказы, какие-то действия на сайте и тд)?
Как мы разрабатываем персональные товарные рекомендации