mahout推荐算法之slope one

原文http://books.dzone.com/articles/slope-one-recommender

http://en.wikipedia.org/wiki/Slope_One

mahout推荐算法之slope one_第1张图片

对于上面的数据,首先计算每个item之间的相似性,形成item-item之间的相似度关系。相似度的计算过程不是采用余弦相似度公式等方法,而是根据用户中共同评分的item的差值进行计算的。

相似度计算

例如,item 1与item 2的相似度为 (2+(-1))/2=0.5。但是item 2与item 1之间的相似度为-0.5,整个相似度矩阵不是对称矩阵。而是反对称矩阵。为了后续更新方便,可以将分子与分母分别存储,用的时候再计算相似度。同样的方法,可以计算item1与item 3之间的相似度3。

预测评分

预测的时候,简单的加权是对两个item共同评分的数量,例如item1与item2有2个user共同评分了,则权重是2,同样的item1与item3的权重是1。

Lucy对item 1的预测评分公式如下:

((2+0.5)*2+(3+5)*1)/(2+1)=4.33

在mahout中有这个方法的实现。

预处理阶段的伪代码如下

for every item i
  for every other item j
    for every user u expressing preference for both i and j
      add the difference in u’s preference for i and j to an average

推荐算法

for every item i the user u expresses no preference for
  for every item j that user u expresses a preference for
    find the average preference difference between j and i
    add this diff to u’s preference value for j
    add this to a running average
return the top items, ranked by these averages
mahout提供了两种加权的方式,其中一种就是上面的提到的基于参加评分的人数,另外一种就是标准方差。
标准方差越小,权重越大,方差越大,权重越小。
 

你可能感兴趣的:(mahout推荐算法之slope one)