协同过滤(CF)有两种 base:
- Memory-based:
- Model-based:
- 用户一般会喜欢与自己喜欢物品相似的物品。(item-based)
- 用户一般会喜欢与自己相似的其他用户喜欢的物品。(user-based)
##基于用户的协同过滤
一些网购网站的“看了该物品的用户还看了以下物品”,采用的是 user-based 的思想。
###算法过程
-
找到与目标用户兴趣相似的用户集合
通常使用 Jaccard 或余弦相似度计算两个用户之间的相似度。
为了一下子计算所有用户之间的相似度:建立“物品-用户”的倒排,然后建立“用户-用户矩阵”,矩阵中值为用户喜欢相同物品的个数。
最后用余弦相似度计算用户的相似度:w(A,B)=A 和 B 喜欢相同物品的个数/(根号)(A 喜欢物品个数*B 喜欢物品个数) -
推荐物品
从上述相似用户矩阵中,找到和目标用户 u 最相似的 k 个用户,将这 k 个用户喜欢的物品全部提取出来,并去除 u 已经喜欢的物品,计算 u 到每个候选物品的感兴趣程度。
基本算法是:p(u,i)=(用户 u 和 v 的相似程度*用户 v 对物品 i 的感兴趣程度)对每个喜欢 i 且和用户 u 相似的用户 v 求和。
###特点:
- 算法过程简单,结果易于解释
- 数据稀疏,导致算法很难需找偏好相似的用户。
- 算法扩展性差,若用户及物品数量增加,导致矩阵变大,复杂度高
##基于物品的协同过滤
网易云音乐采用的就是 item-based,会根据你听过的音乐,推荐相似的音乐。
###算法过程
- 计算物品之间的相似度
一般采用的方法有:基于余弦的相似度、基于关联的相似度、调整余弦相似度(考虑打分) - 预测值计算
一般采用的方法有:加权求和(已打分物品分数*和目标物品相似度)、回归
###特点:
- Item-based 算法预测结果要比 user-based 算法质量高一些
- 由于 Item-based 可以离线计算物品的相似度
- 使用数据的小部分子集也可以得到高质量的结果
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于