推荐系统里用到了item-cf,系统总结下---
基于物品的协同过滤,就是item-cf。
===为什么没有用基于用户的协同过滤:相较于“物品”来说,用户量更大,将所有用户和推荐用户做对比,非常耗时。用户数远大于物品数,而且物品的变更频率不高,物品的相似度相对于用户的兴趣来讲比较稳定===
ItemCF不是基于物品本身属性来做推荐,而是基于用户行为记录。假如A和B在历史行为中被越多的用户共同喜欢,A和B相似程度越高
一般步骤:
1. 离线计算物品间的相似度
2. 根据用户历史行为物品推荐相似内容
物品相似度的计算
根据用户历史行为数据得出物品-用户的倒排表,建立物品的共现矩阵。为了惩罚热门物品,对矩阵进行归一化,得到相似矩阵
使用“余弦相似度”,从集合的角度来说,分母为两个用户分别交互的物品的乘积,分子为两个用户交互商品并集的数量
用户u对物品j的得分
N(u)为用户历史行为物品,s(j,k)为与物品j最相似的前k个物品,wij为物品i和j的相似度,rui为用户对i物品的打分(默认为1)。
相似度计算的优化
-
最大值归一化-惩罚热门物品
-
增加IUF参数-降低活跃用户的贡献