点击上方“蓝字”关注我们
协同过滤( Collaborative Filtering)
Mar 26, 2020
本期介绍推荐系统中的协同过滤方法。
本文约3k字,预计阅读18分钟。
「基于用户行为」设计的推荐算法,即协同过滤,从字面上理解,包括协同和过滤两个操作。所谓协同就是利用群体的行为来做决策(推荐)。对于推荐系统来说,通过用户的持续协同作用(与网站不断进行互动),最终给用户的推荐会越来越准确。而过滤,就是从可行的决策(推荐)物品中将用户喜欢的物品找(过滤)出来。
具体来说,协同过滤的思路是通过群体的行为来找到某种相似性(用户之间的相似性或者物品之间的相似性),通过该相似性来为用户做决策和推荐。
协同过滤有「基于邻域的方法(neighborhood methods)」、「隐语义模型(latent factor model)」、「基于图的随机游走方法(random walk on graph)」等。基于邻域应用最为广泛,主要包含两种算法:
基于用户的协同过滤算法:给用户推荐和他兴趣相似的其他用户喜欢的物品(图左)
基于物品的协同过滤算法:给用户推荐和他之前喜欢的物品相似的物品(图右)
因此协同过滤的核心是怎么计算物品之间的相似度以及用户之间的相似度。相似度系数可以衡量用户或物品之间的相似度。
基于物品的协同过滤
基于用户的协同过滤算法的简单定义:在一个在线个性化推荐系统中,当一个用户A需要个性化推荐时,可以先找到和他有相似兴趣的其他用户,然后把那些用户喜欢的、而用户A没有听说过的物品推荐给A。
故该算法主要分为两个步骤:
找到和目标用户兴趣相似的用户集合;
找到这个集合中的用户喜欢的,而目标用户没有听说过的物品推荐给目标用户;
用户相似度计算
可以利用「Jaccard公式」和「Cosine相似度」来简单的计算用户 和 之间的相似度,另外相似度系数常用的还有「Pearson相关性系数(Pearson Correlation)」。
Jaccard系数用于计算两个集合之间的相似度,比较适合隐式反馈类型的用户行为。
Cosine相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性"。
Pearson相关性系数是衡量向量相似度的一种方法。输出范围为[-1, +1], 0代表无相关性,负值为负相关,正值为正相关。
以隐式反馈为例, 表示用户 用过正反馈的物品集合, 表示用户 用过正反馈的物品集合,公式如下:
Jaccard:
Cosine相似度:
物品得分计算
得到用户之间的兴趣相似度后,算法会给用户推荐和他兴趣最相似的K个用户喜欢的物品。如下公式度量了用户 对物品