天天看点

协同过滤相似度

使用不同相似度计算方式实现协同过滤

  • 如果 买/没买 点/没点数据 0/1 适合使用杰卡德相似度

    -

    from sklean.metrics import jaccard_similarity_score

    -

    jaccard_similarity_score(df['item A'],df['item B'])

    -
  • 一般使用评分去做协同过滤 推荐使用皮尔逊相关系数

    - 评分预测

    协同过滤相似度
  • 基于用户和基于物品的协同过滤 严格来说 属于两种算法

    ,实践中可以都做出来,对比效果,选择最靠谱的。

协同过滤 基于模型的算法

  • 用户-物品矩阵比较稀疏的时候 直接去取物品向量 用户向量计算相似度 不太合适
  • 基于模型的方法可以解决用户-物品矩阵比较稀疏的问题
  • 矩阵分解

    - 把大矩阵拆成两个小的用户矩阵 物品矩阵

    - 大矩阵 约等于 用户矩阵 乘 物品矩阵

    - 使用als 交替最小二乘法来优化损失

    - 优化之后的用户矩阵 取出用户向量

    - 优化之后的物品矩阵 取出物品向量

    - 用户向量点乘物品向量 得到最终评分预测

继续阅读