协同过滤推荐算法原理

协同过滤推荐算法原理-传播蛙

协同过滤(Collaborative Filtering)是推荐系统中最经典的技术,核心逻辑只有一句话:利用群体的历史行为数据,发现用户或物品之间的相似性,以此预测用户可能喜欢的内容。它不需要理解物品本身的属性(比如文本、图片),只依赖“谁给什么打了分”这类交互数据。

一、核心思想

“人以群分,物以类聚”。

如果 A 和 B 过去喜欢的物品高度重叠,那么 A 喜欢但 B 没见过的东西,大概率也适合 B(用户视角)。

如果商品 X 和 Y 总是被同一批人喜欢或讨厌,那么它们性质相似(物品视角)。

二、基于用户的协同过滤(User-based CF)

思路:找到和目标用户兴趣相似的一群人,把他们喜欢的东西推给目标用户。

构建矩阵:建立一个表格,行代表用户,列代表物品,单元格里是评分(或点击、购买等行为值)。

计算相似度:计算目标用户和其他所有用户的相似程度。常用方法有余弦相似度(把用户的评分记录看作向量,计算夹角)或皮尔逊相关系数(消除评分尺度差异,比如有人习惯打高分,有人习惯打低分)。

寻找邻居:选出与目标用户相似度最高的 K 个用户,称为“邻居”。

预测评分:将邻居们对某件未接触过物品的评分,按照相似度加权平均,得出目标用户对该物品的预测评分。
生成推荐:按预测评分从高到低排序,取前 N 个推荐给用户。

例子:用户 A 喜欢《科幻小说》和《摇滚乐》,用户 B 也喜欢这两样,且还喜欢《电子游戏》。系统就会把《电子游戏》推荐给用户 A。

三、基于物品的协同过滤(Item-based CF)

思路:先计算物品之间的相似度,然后推荐用户历史上喜欢过的物品的相似物品。这是目前工业界应用更广泛的方法。

构建矩阵:同上。

计算相似度:这次是计算物品之间的相似度。看哪些物品总是被同一批用户喜欢(或讨厌)。

推荐物品:对于目标用户,找出他历史行为中评分高的物品,找到这些物品的相似物品,根据相似程度和历史评分进行加权汇总,预测用户对候选物品的喜好程度。

生成推荐:排序输出。

例子:用户买了“笔记本电脑”,系统发现买“笔记本电脑”的人通常也会买“无线鼠标”,于是推荐“无线鼠标”。
优势:相比用户相似度,物品相似度更稳定,计算量更小,且解释性强(“因为你买了X,所以推荐Y”)。

四、矩阵分解(隐语义模型,CF 的进阶)

传统的基于邻域的方法(User-based/Item-based)面临一个大问题:数据非常稀疏。很多用户只和极少数物品有过交互,导致很难找到准确的相似关系。

矩阵分解是解决这一问题的核心技术:

它将巨大的“用户-物品”评分矩阵分解为两个小矩阵:一个是“用户-隐特征”矩阵,一个是“隐特征-物品”矩阵。
这里的“隐特征”是算法自动学习出来的,比如“喜剧度”、“烧脑程度”、“性价比”等,无需人工定义。

每个用户和每个物品都被映射到一个多维空间中的一个点(向量)。

预测评分 = 用户向量与物品向量的点积。

训练过程就是通过梯度下降等方法,不断调整这两个向量,让预测结果尽量接近真实评分。

这种方法极大地缓解了数据稀疏问题,是现代推荐系统的基石。

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧