«Это 10-й день моего участия в ноябрьском испытании обновлений, ознакомьтесь с подробностями события:Вызов последнего обновления 2021 г."
С постепенным развитием и совершенствованием технологии машинного обучения рекомендательные системы постепенно используют идеи машинного обучения для выработки рекомендаций. Список вариантов применения машинного обучения к рекомендательным системам бесконечен. Ниже приводится грубая классификация алгоритма Model-Based CF:
- На основе алгоритма классификации, алгоритма регрессии, алгоритма кластеризации
- Рекомендация на основе матричной факторизации
- На основе алгоритма нейронной сети
- Алгоритмы на основе графовых моделей
Рекомендации по совместной фильтрации на основе K ближайших соседей
Рекомендация по совместной фильтрации на основе K ближайших соседей на самом деле является MemoryBased CF, но при выборе ближайших соседей добавляется ограничение K ближайших соседей.
Здесь мы напрямую реализуем код на основе MemoryBased CF
Измените следующие места
class CollaborativeFiltering(object):
based = None
def __init__(self, k=40, rules=None, use_cache=False, standard=None):
'''
:param k: 取K个最近邻来进行预测
:param rules: 过滤规则,四选一,否则将抛异常:"unhot", "rated", ["unhot","rated"], None
:param use_cache: 相似度计算结果是否开启缓存
:param standard: 评分标准化方法,None表示不使用、mean表示均值中心化、zscore表示Z-Score标准化
'''
self.k = 40
self.rules = rules
self.use_cache = use_cache
self.standard = standard
Измените коды всех мест, где выбраны ближайшие соседи, и выберите K ближайших соседей по сходству
similar_users = self.similar[uid].drop([uid]).dropna().sort_values(ascending=False)[:self.k]
similar_items = self.similar[iid].drop([iid]).dropna().sort_values(ascending=False)[:self.k]
Но так как сырых данных у нас меньше, эффект от нашего метода KNN здесь будет хуже, чем чистый MemoryBasedCF
Рекомендации по совместной фильтрации на основе регрессионной модели
Если мы будем рассматривать рейтинг как непрерывное значение, а не как дискретное значение, то мы можем использовать идею линейной регрессии, чтобы предсказать рейтинг целевого пользователя для элемента. Одна из стратегий реализации называется Baseline.
Базовый уровень: базовый прогноз
Идея базового дизайна основана на следующих предположениях:
- Некоторые пользователи обычно оцениваются выше, чем другие, а некоторые пользователи обычно оцениваются ниже, чем другие. Например, некоторые пользователи от природы склонны хвалить других, они мягкосердечны и легки в общении, а некоторые более суровы и всегда ставят не более 3 баллов (из 5 баллов).
- Некоторые элементы обычно оцениваются выше, чем другие, а некоторые, как правило, оцениваются ниже, чем другие. Например, некоторые предметы определяют свой статус сразу после их производства, некоторые пользуются большей популярностью у людей, а другие не нравятся.
Этот пользователь или элемент, как правило, выше или ниже средней разницы, мы называем смещение (bias)
Базовые цели:
- Найдите значение смещения, которое каждый пользователь обычно выше или ниже, чем другие
- Найдите значение смещения каждого элемента, как правило, выше или ниже, чем у других элементов
- Наша цель - найти лучшееи
Шаги по использованию идей алгоритма Baseline для прогнозирования результатов следующие:
-
Вычислить средний рейтинг всех фильмов(т.е. средний мировой рейтинг)
-
Рассчитать рейтинг каждого пользователя и средний рейтингзначение смещения
-
Рассчитать принятый рейтинг и средний рейтинг для каждого фильмазначение смещения
-
Предсказать рейтинг пользователей для фильмов:
\hat{r}_{ui} = b_{ui} = \mu + b_u + b_i