基本思想

假设对用户U进行推荐一些物品,此算法的基本思想则如下:

  1. 找到与用户U具有类似兴趣的用户群体
  2. 找到该用户群体喜欢的物品,在这些物品中把没有购买过的物品推荐给用户U

实验过程

1. 计算用户之间的相似度

  • Jaccard公式

基于用户的协同过滤算法 - 图1

  • 余弦相似度

基于用户的协同过滤算法 - 图2

2. 选出K个与用户U相似度最高的用户

3. 给用户推荐感兴趣的物品

计算用户对该物品该兴趣的程度公式:

  • S表示和用户U兴趣最接近的K个用户
  • N(i)表示对物品i有过行为的用户集合
  • W表示用户u和用户v之间的相似度
  • r表示用户v对物品的感兴趣程度

基于用户的协同过滤算法 - 图3

评价指标

R表示对用户u推荐的n个物品集合 T表示用户u在测试集上喜欢的物品集合

  • 准确率: 基于用户的协同过滤算法 - 图4,描述的是推荐的物品中有多少比例是用户已经关注的
  • 召回率:基于用户的协同过滤算法 - 图5,描述已经关注的物品有多少比例包含在最终的推荐列表中
  • 覆盖率:基于用户的协同过滤算法 - 图6, 覆盖率越高,说明推荐算法越能够将长尾中的物品推荐给用户.此指标反省了该算法发掘长尾的能力.
  • 流行度:如果推荐出的物品都很热门,那么推荐的新颖度较低.

编码实现