В настоящее время все игроки рынка электронной коммерции (помимо прочего) постоянно стремятся обеспечить наилучший клиентский опыт. Один из вариантов, как этого достичь, — это возможность рекомендовать продукты клиентам индивидуально и, в идеале, в режиме реального времени. В предыдущей статье мы обсуждали, почему индивидуальная рекомендация ОБЯЗАТЕЛЬНА.
Было показано, что использование самой последней информации из сеанса пользователя (т. е. то, что пользователи сейчас просматривают, нажимают и т. д.) может значительно улучшить результирующую рекомендацию продукта (см., например, исследование, посвященное оценке алгоритмов рекомендаций на основе сеансов здесь ). Более того, благодаря такому подходу товары рекомендуются покупателю постепенно в соответствии с его текущим поведением на сайте. И последнее, но не менее важное: часто долгосрочные данные могут полностью отсутствовать, что может разрушить многие модели, которые выигрывают только с этой точки зрения. Короче говоря, краткосрочное намерение клиента очень важно для рекомендации.
Поэтому в этой статье мы сосредоточимся на моделях, которые могут эффективно использовать информацию из текущей сессии пользователя и сравним разные алгоритмы. Кроме того, будет показан пример, когда модель с лучшими показателями точности не обязательно означает, что она является победителем. Статья будет разделена на две части. Давайте погрузимся в это!
- Часть 1. В первой части рассматриваются основы рекомендательных моделей и в основном объясняется сеансовый подход на примерах нескольких алгоритмов.
- Часть 2 — во второй части будут представлены конкретные результаты экспериментов на реальных данных.
Быстрый полет по миру рекомендаций
Чтобы понять концепцию подхода на основе сеансов и все важные результаты экспериментов, которые мы собираемся здесь показать, крайне важно наметить основные концепции рекомендательных систем. Не стесняйтесь пропустить эту часть, если вы уже были специалистом по рекомендациям.
Что такое рекомендательная задача? Бьюсь об заклад, вы, должно быть, уже были частью некоторых рекомендательных систем. Неважно, слушаете ли вы музыку на Spotify, смотрите фильмы на Netflix или покупаете что-то на Amazon. Вы наверняка замечали такие фразы, как: «Контент для вас», «Вам это тоже может понравиться» или «Другие клиенты покупают». Они подают вам продукты, которые вам точно нравятся больше всего. Как они это делают? У всех этих компаний есть собственный рекомендательный механизм, состоящий из некоторых рекомендательных моделей.
Определение такой рекомендательной системы (модели), сокращенно РС, может звучать так:
«RS — это система, предназначенная для рекомендаций пользователю, чтобы помочь ему или ей найти наиболее релевантные интересующие его элементы с помощью множества различных функций. Обычно он пытается узнать пользователя лучше, чем он сам».
RS учится на огромном количестве данных, а затем рекомендательная задача состоит в том, чтобы предсказать список элементов таким же образом, как задача классификации: модель будет успешной, если пользователю понравится этот список, и неудачной в противоположном случае.
Существует множество более или менее популярных способов решения рекомендательных задач. Вы можете подавать продукты клиентам в соответствии с:
1. популярные предметы,
2. последние просмотренные/покупаемые товары клиента,
3. взаимодействия, которые были сделаны другими клиентами и чем-то похожи* на этого клиента,
4. сходство товаров — также известный как подход контентной фильтрации: в результате отображаются товары, похожие на те, которые пользователь уже видел/покупал.
5. подход, основанный на последовательности/сеансах/сеансах (на котором мы сосредоточимся здесь),
6. гибрид любого из них.
*сходство можно измерять по-разному — например, по схожим взаимодействиям (тогда это называется подходом совместной фильтрации), по данным профиля клиента,…
Первые два метода просты для понимания и реализации. Основное различие между 3. и 4. можно прочитать на следующем рисунке:
В случае коллаборативной фильтрации для построения модели необходимы только действия других пользователей, и, наоборот, контентная фильтрация требует предоставления только характеристик элементов.
Чтобы сделать это не так просто, существует множество методов для работы с каждым из вышеперечисленных рекомендуемых методов, таких как машины (глубокой) факторизации, методы обучения без учителя, любая модель широкого или глубокого обучения и т. д.
Как измерить, хороша ли рекомендация?
В задачах прогнозирования ML обычно легко выбрать лучшие модели — в отношении базовых данных можно выбрать из хорошо известных показателей, таких как точность, AUC, ошибка прогнозирования, оценка F1 и т. д. Однако в рекомендательных моделях нет точной метрики. что вы можете выбрать и сказать, что ваша модель хороша или что в 95% она даст хорошую рекомендацию покупателю.
К счастью, многие известные метрики, применимые к рекомендательным задачам, уже введены. Возможно, вы слышали, например, об показатель попаданий или ndcg.
За исключением того, что каждый может создать свою метрику или изменить любую из существующих, мы можем разделить их на две основные категории, описанные ниже: точность и за пределами точности метрики. где @k означает, что метрика измеряется для первых k рекомендаций:
Точность:
- Hit rate (hit_rate@k) — сколько раз модель правильно рекомендовала хотя бы один элемент
- Кумулятивный показатель попаданий (cum_hit_rate@k) — сколько всего элементов было рекомендовано правильно.
- Средняя взаимная частота попаданий (arhr@k) — сколько пунктов о том, насколько хорошие позиции были рекомендованы правильно, всего
- Средняя точность (map@k) — сколько элементов из рекомендованных элементов были релевантными (в среднем).
- Средний взаимный ранг (mrr@k) — как и arhr, но заботится только о первом релевантном рекомендуемом элементе.
- Нормализованный дисконтированный совокупный выигрыш (ndcg@k) — насколько релевантные рекомендуемые товары отличаются от идеальной сортировки.
- …
За пределами точности:
- Покрытие (coverage@k) — сколько различных элементов из набора элементов рекомендует модель.
- Разнообразие брендов (brand_diversity_n@k) — сколько рекомендаций содержит больше уникальных брендов, чем n.
- Минимальное соотношение цены (min_price_ration_n@k) — сколько рекомендаций имели большое (больше, чем n) отношение min_price самого дорогого рекомендуемого товара к min_price самого дешевого рекомендуемого товара.
- Средняя популярность (avg_popularity@k) — насколько популярны рекомендуемые товары.
- …
Для целей оценки мы использовали более двадцати метрик. Более подробно вы можете прочитать в одной из предыдущих статей.
Достаточно ли этих показателей, чтобы сказать, что рекомендательная модель хороша? Ответ — нет, помимо этих числовых показателей есть еще один, но не менее важный фактор, который следует всегда учитывать — это качество рекомендуемых товаров — другими словами, будет ли каждый клиент постоянно доволен рекомендацией. . Несмотря на то, что это не выглядит так, почти невозможно легко измерить, нравится ли всем людям список рекомендаций, потому что как вы можете рассчитать этот уровень удовлетворенности каждого человека?
Тот факт, что пользователь нажмет/купит товар, который ему порекомендовали, не обязательно означает, что он ему понравился. Может быть, может быть предмет, который ему понравился бы гораздо больше, но поскольку он не был ему рекомендован/показан, мы никогда не могли знать, оценит ли он его больше.
И последнее, но не менее важное: мы можем измерять эффективность рекомендательных систем в двух разных состояниях: в автономном режиме или с помощью реального A/B-тестирования (с другими показателями, такими как доход за сеанс, CTR, средняя стоимость заказа или другие бизнес-KPI). Оба имеют свои плюсы и минусы. Но здесь следует упомянуть следующее: для разработки такой системы (и для поиска наиболее подходящей модели) у вас обычно нет другого выбора, кроме как полагаться на офлайн-оценку. Однако даже самая лучшая модель, разработанная на основе упомянутых выше офлайн-метрик, не означает победы, если вы не узнаете реальное влияние этой модели на реальных клиентах.
И что, это уже все?
Если вы создаетемодель для определенного сценария (например, для одного клиента), то обычно да. Но в целом этого еще недостаточно, такого рода измерения должны оцениваться на многих наборах данных.
Например, есть возможность сравнить результаты вашей модели с несколькими общедоступными наборами данных, ориентированными на RS, представленными на таких соревнованиях, как Kaggle или DrivenData.
Вы также можете рассмотреть возможность создания предварительно заданных сегментов данных, чтобы понять поведение вашей модели. К сожалению, этим часто пренебрегают в исследовательской сфере. Вы можете обнаружить, что у пользователей, просмотревших меньше элементов в сеансе, разные потребности в модели. И тогда, наверное, единственным решением будет создание гибридной модели.
Кроме того, потребности в производительности (такие как потребление памяти, время обучения и т. д.) могут быть другими параметрами, которые следует учитывать при реализации модели на веб-странице клиента.
И это, наконец, должно быть все. Итак, давайте приступим к самой важной части этой статьи, которую вы все так долго ждали.
Коротко о моделях на основе сеансов
Теория позади
Подход на основе сеанса относится к методам рекомендаций, которые полагаются исключительно на действия пользователя в рамках текущего сеанса и адаптируют свои рекомендации к действиям пользователя.
В отличие от традиционных методов, описанных выше, он включает упорядочение прошлых событий при прогнозировании следующих.
В последние годы наблюдается повышенный интерес к рекомендательным сценариям на основе сеансов. Многие алгоритмы, которые можно использовать для этой задачи, были разработаны довольно давно. По этой причине они часто имеют гораздо более тривиальный дизайн, но, несмотря на это, они могут превзойти более сложные современные подходы, основанные на глубоких нейронных сетях.
Кого-то могут смутить три термина, используемые в этом контексте и очень похожие по звучанию: с учетом последовательности, с учетом сеанса и на основе сеанса. Подход с учетом последовательности учится на исторических последовательностях пользовательских взаимодействий и пытается предсказать следующее вне зависимости от сеанса. Как на основе сеанса, так и на основе сеанса, как следует из их названий, сеанс рассматривается как ключевой параметр и является подклассом механизма, ориентированного на последовательность. Разница в том, что в тех случаях, когда у нас есть взаимодействия из предыдущих пользовательских сеансов, рекомендации могут быть персонализированы в соответствии с долгосрочными предпочтениями пользователей, которые мы называем рекомендациями с учетом сеанса. В сеансовом подходе для рекомендации используется только сеанс текущего пользователя.
Давайте посмотрим на картинку ниже, которая должна помочь с любыми проблемами в будущем:
Почему они хороши?/Могут ли они победить других?
Подводя итог, сеансовый подход имеет много преимуществ:
- Легко понять, нет черного ящика.
- Легко реализовать.
- Очень хорошая производительность, в конкретных случаях использования они могут превзойти современные глубокие нейронные сети.
- Не делает никаких предположений о базовых данных.
Сессионные алгоритмы
В оставшейся части статьи мы поговорим о подходе, основанном на сеансах, но то же самое относится и к подходу, учитывающему сеансы.
Вводный пример
Представьте, что пользователь Джон в данный момент просматривает Apple Watch Series 6 на веб-странице. Он также видел Apple iPhone 13 пять минут назад и Samsung Galaxy S20 FE десять минут назад. Итак, последовательность его пунктов выглядит так:
Для упрощения данные для обучения будут очень короткими — состоящими из 3-х пользователей и их сессий (элементы отсортированы в хронологическом порядке):
Основная цель, как и следовало ожидать, состоит в том, чтобы найти лучший следующий предмет для Джона, который заинтересует его больше всего. Существует множество различных алгоритмов, которые можно использовать для сеансового подхода.
Правила Алгоритмы
Правила ассоциации (AR)
Алгоритм правила ассоциации (также известный как анализ рыночной корзины) — это метод поиска скрытых ассоциаций часто покупаемых/просматриваемых предметов вместе. Более легко он изучает такие правила, как Клиент, который купил... также купил... Эти правила и их соответствующая важность «узнаются» путем подсчета того, как часто элементы A и B встречались вместе в сеансе любого пользователя. Они не обязательно извлекают пользовательские настройки, а скорее работают в режиме совместной фильтрации.
В нашем сеансовом подходе мы используем только правила размера два. Оценка такого правила (например: {A, B}) получается из количества совпадений элементов A и B во всех сеансах во всем наборе данных. Чем больше они встречаются вместе, тем выше оценка. И окончательный список рекомендаций длиной k, например, для элемента C состоит из k правил парных элементов, отсортированных по количеству баллов в порядке убывания.
Используя наш пример, мы изучим эти правила и соответствующие баллы через AR:
- {Apple Watch Series 6, Apple Watch Series 7}: 3
- {Apple iPhone 13, Apple iPhone 13 mini}: 1
- {Apple Watch Series 6, Apple Watch серии Nike}: 1
- {Samsung Galaxy S21, Samsung Galaxy S20 FE}: 1
- {Apple Watch Series 6, Apple iPhone 13 mini}: 2
Поскольку последним товаром, который Джон видел , были Apple Watch Series 6, список рекомендаций для него будет таким: Apple Watch Series 7 на первой позиции и Apple iPhone 13 mini. на второй позиции и Apple Watch Nike Series на третьей позиции.
Вы можете заметить, что, несмотря на то, что мы даем рекомендации только по последнему элементу сеанса, с помощью этого AR-алгоритма мы можем рекомендовать товары из разных категорий — не только какие-то другие часы, но и мобильные телефоны той же марки. Это происходит благодаря обучению на нескольких сессиях разных пользователей.
Последовательные правила
Алгоритм последовательных правил отчасти похож на AR — он также предназначен для поиска скрытых правил часто встречающихся элементов, но где также имеет значение порядок элементов в сеансе. Он в основном изучает частые последовательности, из которых происходит название алгоритма.
Мы создаем правило, когда элемент A появлялся после элемента B в сеансе, даже если другие события (просмотр/покупка предметов) происходили между A и B. В нашем примере с Джоном мы теперь изучаем эти правила и соответствующие оценки через SR:
- {Apple Watch Series 6-›Apple Watch Series 7}: 1
- {Apple iPhone 13, Apple iPhone 13 mini}: 1
- {Apple Watch Series 6, Apple Watch серии Nike}: 0,9*
- {Samsung Galaxy S21, Samsung Galaxy S20 FE}: 1
- {Apple Watch Series 6, Apple iPhone 13 mini}: 2
* Оценка чуть меньше единицы, потому что Apple Watch Nike Series не были сразу после Apple Watch Series 6.
Мы рекомендуем Джону: Apple iPhone 13 mini на первой позиции, Apple Watch Series 7 на второй позиции и Apple Watch Nike Series на третья позиция. Первые две позиции имеют разные порядки по сравнению с предыдущим алгоритмом AR. Кстати, какой список рекомендаций, по вашему мнению, лучше подходит для Джона? Мы поговорим об этом позже.
Примечание. Подмножество SR — это алгоритм цепочки Маркова, который работает более строго — правила создаются на основе того, как часто пользователи просматривали/покупали товар A сразу после просмотра/покупки. пункт Б.
КНН
KNN – это метод непараметрического контролируемого обучения, который также можно очень хорошо использовать для рекомендаций с учетом сеанса (или совместной фильтрации). Он находит K элементов, наиболее похожих на конкретный элемент, на основе заданной метрики расстояния (обычно косинусное сходство, евклидово расстояние и т. д.) и характеристик элемента.
Существуют различные модификации алгоритма KNN для нужд сеансового подхода:
Товар-KNN (i-KNN)
Эта версия рассматривает только последний элемент в данном сеансе, а затем возвращает те элементы в качестве рекомендаций, которые наиболее похожи на него с точки зрения их совместного появления в других сеансах.
Технически каждый элемент закодирован как двоичный вектор (это можно увидеть на рисунке ниже). сеансы (Сеанс 2 и Сеанс 3) некоторых людей).
Теперь, если мы собираемся порекомендовать элемент пользователю, который в данный момент просматривал Xiaomi Mi Watch Lite как свой последний элемент, поскольку вектор элемента: Apple Watch Series 6 больше всего похож на вектор Xiaomi Mi Watch Lite, и поскольку этот пользователь еще не видел этот элемент: мы рекомендуем ему именно этот элемент.
Сеанс-KNN (s-KNN)
Вместо того, чтобы рассматривать только последнее событие в текущем сеансе, метод s-knn сравнивает весь текущий сеанс с прошлыми сеансами других пользователей в обучающих данных, чтобы определить рекомендуемые элементы.
Когда у нас есть несколько текущих сеансов, мы можем получить правила, выполнив следующие шаги:
1. Определите Kнаиболее похожих сеансов (соседей), применив подходящую меру сходства сеансов.
2. Рассчитайте баллы по всем элементам на основе этих сеансов K следующим образом:
Может показаться сложным, но в основном это означает, что высокий балл будет иметь те элементы, которые встречаются во многих подобных сеансах, и даже выше, если эти сеансы наиболее похожи на тот, который мы даем рекомендацию.
Теперь, если мы собираемся порекомендовать товар пользователю, который уже просматривал Xiamoi Mi Watch Lite и Apple iPhone 12 128 ГБ (см. Сеанс 1), так как сеанс 3 больше всего похож на сеанс 1 пользователя и поскольку этот пользователь не видел элемент, встречающийся в сеансе 3: Apple Watch Series 6 –> i-knn рекомендует именно этот товар.
Мы также можем подумать о некоторых других модификациях этих двух — например, придать большее значение элементам, которые были замечены последними, и многим другим.
Рекуррентный NN (RNN)
Рекуррентные нейронные сети, способные учиться на последовательно упорядоченных данных, являются «естественным выбором» для решения этой задачи.
Опять же, здесь существует больше приспособлений. Например, подход GRU4REC, специально разработанный для рекомендаций на основе сеансов. Он моделирует сеанс пользователя с целью предсказать вероятность последующих событий, используя RNN с так называемыми Gated Recurrent Units. В вычислительном отношении это более сложный подход и требует довольно большого объема данных.
Другие алгоритмы: BERT4Rec, SASRec или BST.
Краткое содержание
В настоящее время это самые популярные алгоритмы, используемые для на основе сеанса (с учетом) подхода к рекомендациям, который был показан как важная часть любой системы рекомендаций. Мы наметили метрики, по которым мы можем измерить успешность такой созданной модели вместе с мыслью, что их самих недостаточно. И теперь возникает вопрос, какую модель из всех этих сеансовых моделей я должен использовать для своей цели? Какой из них лучший? Вы можете рассчитывать на это в нашей следующей части.
Соавтор Симона Навратилова https://www.linkedin.com/in/simona-navr%C3%A1tilov%C3%A1-7876a621b/