使用不同相似度计算方式实现协同过滤
-
如果 买/没买 点/没点数据 0/1 适合使用杰卡德相似度
-
-from sklean.metrics import jaccard_similarity_score
-jaccard_similarity_score(df['item A'],df['item B'])
-
一般使用评分去做协同过滤 推荐使用皮尔逊相关系数
- 评分预测
-
基于用户和基于物品的协同过滤 严格来说 属于两种算法
,实践中可以都做出来,对比效果,选择最靠谱的。
协同过滤 基于模型的算法
- 用户-物品矩阵比较稀疏的时候 直接去取物品向量 用户向量计算相似度 不太合适
- 基于模型的方法可以解决用户-物品矩阵比较稀疏的问题
-
矩阵分解
- 把大矩阵拆成两个小的用户矩阵 物品矩阵
- 大矩阵 约等于 用户矩阵 乘 物品矩阵
- 使用als 交替最小二乘法来优化损失
- 优化之后的用户矩阵 取出用户向量
- 优化之后的物品矩阵 取出物品向量
- 用户向量点乘物品向量 得到最终评分预测