Mahout推荐算法之SlopOne
一、 算法原理 有别于基于用户的协同过滤和基于item的协同过滤,SlopeOne采用简单的线性模型估计用户对item的评分。如下图,估计UserB对ItemJ的偏好 图(1) 在真实情况下,该方法有如下几个问题: 1. 为什么要选择UserA计算? 2. 对大量稀疏的情况如何处理,而这种情况是最为普遍的。 图(2) Item1和item2的相似度:((5-3)+(3-4))/2=0.5 Item1和Item3的相似度:(5-2)/1=3 Lucy对Item1的评估预估计为:((2+0.5)*2+(3+5)*1)/(2+1)=4.333 Item3和Item1的相似度:(2-3)/1=-1 Item3和Item2的相似度:(5-2)/1=3 Make对item3的评分预估计为:((4+3)*1+(3-1)*1)/(1+1)=4.5 通过以上例子可以看出:需要计算item对之间的平均差别,以及item对之间的差别次数。 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