一、协同过滤算法简介
协同过滤算法是一种常见的推荐系统方法,它的核心思想是“物以类聚,人以群分”。也就是说,如果两个用户在过去对某些物品的兴趣相似,那么他们对其他物品的兴趣也很可能相似。换句话说,用户的行为和偏好可以相互参考。
通俗理解:
就像你会向朋友请教电影推荐:如果你和朋友过去喜欢的电影很接近,那么朋友喜欢的新电影,你也有很大概率会喜欢。协同过滤算法正是利用这种“群体智慧”来预测和推荐。
二、问题动机
在推荐系统中,常见的挑战是:用户只对一小部分物品打过分,而大部分物品的评分是缺失的。比如图中展示的电影评分表:
Alice 喜欢浪漫题材的电影,对《Love at last》给了 5 分,但对动作片《Swords vs. karate》给了 0 分。
Bob 的偏好与 Alice 类似。
Carol 和 Dave 则更喜欢动作片,对浪漫片打了低分甚至 0 分。
问题是,很多位置都是 问号(未知评分),我们想要预测这些缺失值,从而推荐用户可能喜欢的电影。
为了解决这个问题,算法引入了 向量表示:
每个电影用一个特征向量表示,比如用两个维度:浪漫 (romance) 和动作 (action)。
每个用户用一个权重向量表示,刻画他们对不同特征的偏好。
这样,用户对某部电影的预测评分可以表示为:
其中 w(j) 是用户向量,x(i) 是电影特征向量,b(j) 是偏置项。
直观理解:如果用户 Alice 的偏好是“浪漫 5 分,动作 0 分”,而电影《Love at last》的特征是“浪漫强,动作弱”,那么两者的点积会得到一个较高的预测评分。