协同过滤算法
基本思想
协同过滤(Collaborative Filtering)推荐算法是最经典、最常用的推荐算法。核心思想为:物以类聚,人以群分
目前应用比较广泛的协同过滤算法是基于邻域的方法,主要有:
基于用户的协同过滤算法(UserCF):给用户推荐和他兴趣相似的其他用户喜欢的产品。 基于物品的协同过滤算法(ItemCF):给用户推荐和他之前喜欢的物品相似的物品。
找出最相似的人或物品:最相似的 TOP - N 根据相似的人或物品进行推荐
相似度算法
余弦相似度
不考虑长度,有时候会得到不是很靠谱的结果 两部电影,两个用户分别打分: ||m1|m2| |–|–|–| |u1|8|5| |u2|1|0.5|
余弦相似度很接近,但实际上一点也不相似
皮尔逊相关系数
也是一种余弦相似度,但是进行了向量中心化
杰卡德相似度
杰卡德相似度(Jaccard Similarity)是一种用于衡量两个集合相似度的指标,定义为两个集合交集的大小与并集的大小之比。其公式为:
其中
适用场景: 杰卡德相似度常用于处理 “是否发生” 这类的隐式反馈数据(如用户是否点击、是否购买等),特别适合用于布尔型(0-1)数据的相似度计算。
举例: 假设
总结: 杰卡德相似度越接近 1,表示两个集合越相似;越接近 0,表示越不相似。
Jaccard 相似度表示两个集合的交集元素个数在并集中所占的比例 ,所以适用于隐式反馈数据(0-1)。 余弦相似度在度量文本相似度、用户相似度、物品相似度的时候都较为常用。 皮尔逊相关度,实际上也是一种余弦相似度。不过先对向量做了中心化,范围在 − 1 −1 到 1 1。 相关度量的是两个变量的变化趋势是否一致,两个随机变量是不是同增同减。 不适合用作计算布尔值向量(0-1)之间相关度。