探讨基于用户协同过滤(User-CF)的推荐算法-success

提纲

  1. 数学必备知识(向量)
  2. 构建矩阵模型
  3. User-CF的思想和计算

问题域

在一个个性化推荐系统中,当一个用户A需要个性化推荐时,可以先找和他有相似兴趣的其他用户,然后把那些用户喜欢的、而用户A没有听说过的物品推荐给A。这种方法成为基于用户的协同过滤算法(User-CF)

探讨基于用户协同过滤(User-CF)的推荐算法-success_第1张图片

向量

根据问题域中构建出来的用户-行为评分矩阵(图1-1),我们可以构建出用户的向量.首先,把每一个用户用一个向量表示,每个向量里有6个数字,分别代表该用户对6本书喜爱程度的评分.0代表用户没看过这本书.图示:
探讨基于用户协同过滤(User-CF)的推荐算法-success_第2张图片

余弦相似度

接下来,计算俩个用户的相似性,这里使用的指标叫作余弦相似度,计算公式如下:

image

其中,分子部分a·b表示两个向量的点积,计算方法就是两个向量对应元素先相乘再求和,比如:

用户a=[4 3 0 0 5 0]和用户b=[5 0 4 0 4 0]

a·b=4x5+3x0+0x4+0x0+5x4+0x0=40

分母部分的||a||就是代表向量a的模长,||a||||b||就是a,b两个向量模长的乘积.向量模长的计算方法就是把向量

中的每个元素平方后再求和最后再开根号.

vert vert a vert vert =  sqrt{4^2+3^2+0^2+0^2+5^2+0^2}

vertvert b vertvert=sqrt{5^2+0^2+4^2+0^2+4^2+0^2}

于是,第一个用户和第二个用户的相似度就可以进行如下计算:

探讨基于用户协同过滤(User-CF)的推荐算法-success_第3张图片

余弦相似度的值在[0,1]闭区间内,值越大说明越相似,值越小说明越不相似.根据上面的计算公式,分别计算小白和其他5个同事的相似度,然后根据从大到小的顺序排列.可以看到小白和前俩个同事相似度高而和最后一个同事完全不相似.

探讨基于用户协同过滤(User-CF)的推荐算法-success_第4张图片

 User-CF的思想和计算

===============

比如,和小白最相似的两个同事的阅读列表编号有1,3,4,5共4本书.其中1,5这两本书小白已经看过,3,4这两本书哪本可能更适合小白的口味呢?

可以计算这两个同事对这两本书的加权评分并作为小白的可能评分,权重就是他们之间的相似度,具体计算如

下图.通过计算可以看出编号为3的书可能更适合小白的口味.

探讨基于用户协同过滤(User-CF)的推荐算法-success_第5张图片

计算步骤:

  1. 先确定第一个同事拥有的阅读列表的图书编号为1,3,5
  2. 再确定第二个同事拥有的阅读列表的图书编号为1,3,4,5
  3. 小白自己已经拥有的阅读的图书列表是1,2,5[这也是打叉的意义,自己已经有的,不需要再推荐给自己了]
  4. 最后剩余的只有编号为3和编号为4的两本书了
  5. 计算公式说明,0.75和0.63代表权重,也就是相似值.4,3,5代表的是该用户对这本书的评分.

适用场景

  1. 性能:适用于用户较少的场合,如果用户过多,计算用户相似度矩阵的代价较大
  2. 领域:实效性要求高,用户个性化兴趣要求不高
  3. 实时性:用户有新行为,不一定需要推荐结果立即变化
  4. 冷启动:在新用户对少的物品产生行为后,不能立即对他进行个性化推荐,因为用户相似度是离线计算的 

新物品上线后一段时间,一旦有用户对物品产生行为,就可以将新物品推荐给其他用户

你可能感兴趣的:(人工智能,算法)