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

В данной статье, будут рассмотрены лайфхаки рекомендательных систем на основе реальных бизнес кейсов. Будет показано, какие метрики лучше использовать, и какую степень близости выбрать для предсказания.



В машинном обучении используется различные метрики для оценки работы алгоритмов. Но в бизнесе, основная метрика одна – сколько денег принесет внедрение решения. Исходя из этого, в наших кейсах, которые реализует команда Data4, мы стараемся увеличить общую выручку на пользователя.

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

Лайфхак №1


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

Каждому действию присвоим весовой коэффициент, и наша матрица получится более «плотной».

Но не все товары одинаково конверсионные. После открытия карточки человек может не продолжить покупку из-за «внутренних» свойств товара. Пример: элементы роскоши часто просматривают, но мало покупают.

Лайфхак №2


Давайте построим распределения по товарам для каждого этапа воронки, и уберем из рекомендаций по 5-10% самых низкоконверсионных товаров на каждом этапе. Главное, не «выплеснуть с водой ребенка». Оставшиеся товары будут обладать «внутренними» свойствами, не препятствующими совершению покупки. Пример внутреннего свойства – размеры одежды в наличии. Если товар хороший, но только одного размера, конверсия будет низкая.

С товарами разобрались, теперь давайте посмотрим на то, как измерять «похожесть» пользователя.

Существует много метрик схожести, начиная с косинусной близости, наименьших квадратов, и заканчивая экзотическими вариантами.

Лайфхак №3


Исходя из опыта Data4 построения рекомендательных систем для интернет магазинов, работа идет с разряженными матрицами. Для таких матриц наилучшим является использовать коэффициент близости – Жаккара. Это дает прирост метрик больше, чем смена алгоритмов.

Лайфхак №4


Прежде чем использовать нейросети, попробуйте SVD и факторизационные машины. Это работает.



Рис.1 Принцип работы факторизационных машин

Лайфхак №5


Распознавать похожие товары по изображению весело, но качество с использованием SVD на основе поведения — лучше.

Лайфхак №6


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



Лайфхак №7


Вносите разнообразие в рекомендации, никто не хочет открыв страницу, увидеть 10 одинаковых шуб, или только фильмы одного режиссера. Разнообразие контента повышает вероятность покупки.



Лайфхак №8


Выберите метрику, которую понимаете, как она работает. Пусть простая RMSE, но надежный результат, чем nDCG@K(эта метрика подходит), и случайный результат.

Лайфхак №9


Люди могут обидеться на рекомендации, так, не следует рекомендовать женщинам большие размеры одежды, если вы не знаете их размер.

Лайфхак №10


Только проведение A/B теста на пользователях, подскажет вам, как работает решение. Метрики качества – промежуточный результат, A/B тест – подтверждение, которое может вас разочаровать, но чаще радует.

Используя описанные приемы, наша команда Data4, осуществила несколько кейсов внедрения рекомендательных систем.

В статье мы поговорили, что для улучшения качества рекомендательной системы можно 1) учитывать промежуточные действия пользователей 2) Исключить низкоконверсионные товары 3) Использовать коэффициент Жаккара для разреженных матриц 4) Использовать SVD и факторизационные машины, если вы не Google 5) Осторожно подходить к поиску близости по изображению, если бюджет ограничен 6) Рекомендовать неочевидные товары старым пользователям из хвоста распределения популярности 7) Рекомендовать разнообразные товары 8) Использовать правильные метрики качества 9) Не обижать людей рекомендациями 10) Использовать A/B тест для проверки результата.

Комментарии (5)


  1. roryorangepants
    19.11.2019 12:29
    +1

    Лайфхак №1
    Давайте использовать в матрице товарных предпочтений не только покупки, но и промежуточные действия: клик на карточку, добавление в корзину, оформление заказа.

    Совет довольно очевидный. Обычно до этого люди доходят своим умом. Неочевидная часть, про которую интересно послушать — это как раз таки как конкретно сформировать эти самые «веса» для неявных реакций.

    Лайфхак №8
    Выберете метрику, которую понимаете, как она работает. Пусть простая RMSE, но надежный результат, чем nDCG@K(эта метрика подходит), и случайный результат.

    Очень странный лайфхак. Правильный, на мой взгляд, вариант — изучить метрики и подбирать по ситуации ту метрику, которая хорошо бы коррелировала с бизнес-метриками (а в идеале была бы ещё и хорошо интерпретируемой).
    RMSE — как раз в большинстве случаев неудачная метрика для рекомендаций / персонализации.


    1. kirillkosolapov Автор
      19.11.2019 12:41

      Вы правы, по Лайфхаку №1 можно использовать методы оптимизации для поиска весов, либо подобрать итеративно руками.

      По Лайфхаку №8, глубокое понимание необходимо, и нужно выбирать наиболее подходящую метрику, RMSE далеко не всегда подходит, и нужно отталкиваться от кейса, полностью с вами согласен.


  1. CrazyElf
    19.11.2019 12:55

    Насчёт «если вы не Google» — сейчас есть много библиотек, которые быстро считают всякие «метрики близости» для очень (ОЧЕНЬ!) больших матриц. Можно пробовать всякое интересное, что раньше нереально было из-за времени подсчёта.
    «A/B тесты» — это отлично, только очень редко бывает возможность снять метрики в идеально похожих условиях, различающихся только одним параметром. Там это целая наука — как в реальных условиях, когда действует сразу много факторов, сделать и правильно интерпретировать A/B тесты.


    1. kirillkosolapov Автор
      19.11.2019 13:07

      Пример с Google был про нахождение близких товаров по изображению. И там существуют отдельные проблемы из-за разных текстур, форм и т.д… Как правило, каждый кейс имеет много особенностей, и их учет в работе с изображениями занимает больше времени, чем работа с матрицами, а результат работы с матрицей товарных предпочтений получается лучше. Вы правы, сейчас обработка больших матриц не проблема. К сожалению, не у каждого клиента есть достаточно данных для успешного применения нейросетей и т.д.


  1. Sincous
    21.11.2019 22:01

    Изучал темы подбора похожих фильмов среди сайтов в РФ и США. На кинопоиске и в мобильных приложениях мне нужно оценить сначала огромное количество фильмов (коллаборативная фильтрация, как вы писали в первой статье),
    было бы интересно у вас узнать принципы рекомендаций на основе анализа самих фильмов (были даже мысли дать нейросети просмотреть разные фильмы, фиксировать образы героев, автомобилей например и т.д.).
    Пока я не встречал реализации, кроме как связывать фильмы по тегам и накапливать затем пользовательские данные. Приведу примеры от лучших к самым примитивным
    tastedive.com — подбор фильмов, книг, сериалов на основе коллаборативной фильтрации (но при этом учитывают теги фильма)
    movieslist.best — самый примитивный подбор по тегам с голосованием
    store.steampowered.com — исключительно подбор по меткам (тегам)

    Правильно ли я понимаю: необходимо либо располагать огромными ресурсами для анализа, либо огромной пользовательской базой? Я рассчитывал, что с развитием нейронных сетей в 2019 году с подбором дела обстоят гораздо лучше…