推荐系统项目基础(二)协同过滤
基于相似度的协同过滤算法
用户协同过滤User-based CF
从上图可以看出User-based CF的计算过程为:
- 维护一张用户之间的相似表
- 计算每个用户之间的相似度
- 得到最接近的用户
- 得到所有接近用户的购买数据
- 根据购买数据推荐没有购买过的物品
商品协同过滤Item-based CF
基于商品过滤的不同点在于获取的是物品的相似表,根据物品的相似度进行推荐。
Item-based CF的计算过程为:
- 维护一张物品之间的相似表,物品之间的相似度表示公式:(同时喜欢物品I与J的人数交集)/(喜欢物品I与J的人数并集)
- 计算每个物品之间的相似度
- 得到最接近的物品列表
- 去除用户的购买物品
- 根据得到的物品中筛选出没有购买过的物品
计算相似度
余弦相似度
余弦相似度通过计算两个向量的夹角的余弦值来度量它们之间的相似性,在计算文档相似度中应用非常广泛,计算公式如下:
皮尔逊相似度
余弦相似度中没有将维度进行考虑,即没有进行中心化处理,数据会受到某些维度的较高值影响,需要对维度中的值进行去中心化处理。相对于余弦相似度,皮尔逊更适合于计算相似度。
Jarccard相似度
Jaccard相似度的定义很简单,两个向量的词汇的交集除以两个向量的并集。适用于已经进行onehot编码后的数据,只有0和1
基于Jarccard相似度计算例子
1、根据上面的数据计算得出用户之间的相似度,与物品之间的相似度。
2、分别根据用户协同过滤,物品协同过滤进行计算。
(用户2与用户1相似度 * 用户2对物品5的评分 + 用户3与用户1相似度 * 用户2对物品5的评分)/(用户2与用户1相似度+用户3与用户1相似度)
(物品A与物品E相似度 * 用户1对物品A的评分 + 物品D与物品E相似度 * 用户1对物品D的评分)/(物品A与物品E相似度 + 物品D与物品E相似度)