Рубрики
Без рубрики

Алгоритмы систем рекомендаций

Целью написания этой статьи является обмен и суммирование некоторых алгоритмов систем рекомендаций …. Tagged с помощью машинного обучения, Python, новичков.

Целью написания этой статьи является обмен и суммирование некоторых алгоритмов систем рекомендаций. Эти алгоритмы являются «традиционными» методами машинного обучения, а не глубоким обучением. Цель системы рекомендаций состоит в том, чтобы предсказать и ранжировать список элементов (или документов), как правило, на основе предпочтений пользователя из данных, генерируемых пользователем. Вот некоторые алгоритмы систем рекомендаций:

  • Совместная фильтрация
  • Байесовский
  • К ближайший сосед
  • Логистическая регрессия
  • Дерево решений и случайный лес

Алгоритм совместной фильтрации фокусируется на общем интересе, это может быть ориентирован на пользователя или элемент (это также документы, продукты или фильмы). Предположение о совместной фильтрации заключается в том, что если пользователь U имеет аналогичный интерес пользователя V , и если пользователь V имеет интерес к пункту J , мы также можем рекомендовать пункт J пользователю U Анкет Таким образом, мы можем сделать прогноз, по каким элементам пользователю могут нравиться или не любить, ссылаясь на группу похожих пользователей и антипатий.

Матрица сходства построить предмет для предметов

Это подход, ориентированный на элемент, где мы рассчитываем коэффициент корреляции между элементами. sim (i, j) вычисляет сходство между элементом я и пункт J , где V. я вектор с множеством пользователей в элементе i . Вектор V Содержит либо 1, либо 0, независимо от того, купил ли пользователь в индексе вектора (или нажимал или добавил в корзину) элемент. Формула ниже использует сходство косинуса с расчетом коэффициента корреляции, но оценка корреляции также может быть рассчитана с помощью Пирсона и многих других методов. Читать больше и пример в Википедия: Наклон один Анкет

Поиск элемента j для пользователя u

Оценка (u, i) является оценкой предпочтения элемента я пользователю U и rec (u, j) это найти совместную оценку элемента J пользователю u . Что мы хотим сделать, так это забить весь набор предметов J этот пользователь U не купил и оценил список самых высоких статей для совместной работы J пользователю.

Теорема Байеса о поиске условных вероятностей события A происходит, когда событие B Происходит, обозначенный как P (a | b) Анкет Например, когда пользователь входит (или нажимает) в определенную категорию или в магазине, мы ссылаемся из списка предметов, которые пользователь приобрел в этой категории или магазине. Наша проблема здесь P (J | U) , который должен вычислять вероятность пользователя U Покупка товар J :

Поскольку пользователь купил n Предметы Я , мы представляем список элементов как {i 1 В я 2 , …, я n } Из магазина или категории, и мы рассчитываем вероятность всех предметов я с пунктом J всеми пользователями:

P (J) вероятность элемента J приобретается до того, сколько раз это было выявлено всеми пользователями:

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

Из -за редкого появления предметов, приобретенных вместе, мы можем добавить минимальное количество покупок в 10. Если это менее 10, будет использовать процент пользователей, которые покупают товар я вместо.

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

К ближайший сосед (KNN) – это поиск k количество объектов, которые наиболее близки к объекту интереса. Опять же, это может быть ориентировано на пользователя или ориентирован на элемент.

Если мы хотим объединить подобные предметы вместе, мы хотим искать k Количество предметов, которые наиболее похожи на этот элемент i . Элементы могут быть группировкой по его сходству, основываясь на их атрибутах.

В качестве альтернативы, это может быть ориентирован на пользователя, где мы используем поведение пользователей, чтобы найти подобные элементы. Элементы могут быть группируются по частоте, часто щелкнувшись в пределах сеанса, или предметы, часто покупаемые вместе, и мы можем создавать встроенные элементы, используя DeepWalk обучать предметы встраивания. Так что, если пользователь нажал на элемент я , мы также могли бы рекомендовать k предметы, которые связаны. Используйте Jaccard для расчета коэффициента корреляции между кликами пользователей, добавьте в корзину или покупки. Вектор всех элементов для пользователя, когда пользователь U нажал на элемент i , я Индекс элемента является значением 1, в противном случае это 0. Тогда мы сможем узнать сходство между 2 списками элементов Я между пользователем U и v .

Дал пользователь U , найти k Количество пользователей, которые имеют аналогичную историю покупки (или кликов) как пользователь U Анкет Удалить элементы, которые пользователь U купил, а затем выберите Top k Наиболее популярные (самая высокая частота) приобретенные товары пользователю u .

Есть несколько методов расчета расстояния между векторами:

  • Евклидово расстояние
  • Манхэттенское расстояние
  • Chebyshev Distance
  • Коэффициент Jaccard
  • Косинус сходство
  • Коэффициент Пирсона

Этот метод популярен для системы рекомендации построения с моделью скорости просмотра кликов. Цель модели – оптимизировать W и b Для каждой функции и прогнозируйте ценность Y (От 0 до 1), что является вероятностью, когда пользователь щелкнет по конкретному элементу.

Где x это функции входного вектора модели, W это вектор веса. W я представляет вес функции x я Анкет

Построить функции пользователя и элемента

Особенности могут быть категориальными или дискретными. Пользовательскими функциями могут быть возраст (или возрастная группа), пол, уровень мощности покупки (на основе прошлых покупок), а функции товара могут быть категории, цена (или ценовая группа), продажи за 30 дней. Внедрения, такие как предпочтения категорий пользователя или встроенные элементы, также могут быть полезны, и эти встраивания могут быть построены с DeepWalk.

Соберите историческую экспозицию пользователя и нажмите данные

Это учебные данные для модели, где каждый образец представляет пользователя, подвергающегося воздействию элемента. Размеры должны включать идентификатор пользователя , Идентификатор элемента , ярлык Нажат ли элемент (0 или 1), набор Пользовательские функции и набор элементы функции .

TrainingsampleId | метка (нажмите или нет) | userid | itemid | возрастная группа | userpurchaselevel | itemprice | itemsoldCount | …

Одна горячая кодировка и нормализация.

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

Тренироваться

Тренировать модель. Оптимизировать W и b Для каждой функции с градиентным происхождением со следующей функцией потери поперечной энтропии:

Счет

Рекомендовать из набора предметов кандидата Я пользователю U , используйте обученную модель, чтобы забить все элементы в Я с пользователем u . Оцените оценки от модели в порядке убывания и рекомендуйте 20 лучших элементов пользователю u .

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

Создайте функции для моделирования

  • Получить данные пользователей: подготовить данные пользователей, такие как возрастная группа, пол, город, уровень мощности приобретения (на основе прошлых транзакций)
  • Получить данные.
  • Получите данные о покупке (или кликах): объедините пользователей с категориями, если пользователь приобретен в этой категории.
  • Конструкция перекрестных функций: определите функции модели генерации перекрестных правил между пользовательскими функциями с функциями категории, пример Пол с Основная категория категории и Покупать силу с Категория i d

Случайный лес

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

Оригинал: “https://dev.to/jinglescode/recommendation-systems-algorithms-3dh2”