基于mahout的协同过滤项目 - 无需隔离用户

时间:2014-12-05 15:04:48

标签: mahout mahout-recommender collaborative-filtering

在mahout中,实现了基于项目的协作过滤方法,称为itemsimilarity

在理论中,项目之间的相似性应仅针对对两个项目进行排名的用户进行计算。在测试期间,我意识到在mahout中它的工作方式不同。

在下面的例子中,第11项和第12项之间的相似性应该等于1,但是mahout输出是0.36。

示例1。项目为11-12

项目之间的相似性:

101     102     0.36602540378443865

带偏好的矩阵:

    11  12
1       1
2       1
3   1   1
4       1

看起来mahout将null视为0。

示例2。项目为101-103。

项目之间的相似性:

101     102     0.2612038749637414
101     103     0.4340578302732228
102     103     0.2600070276638468

带偏好的矩阵:

    101 102 103
1       1   0.1
2       1   0.1
3       1   0.1
4   1   1   0.1
5   1   1   0.1
6       1   0.1
7       1   0.1
8       1   0.1
9       1   0.1
10      1   0.1

项目101和102之间的相似性应该仅使用用户4和5的等级来计算,而对于项目101和103(应该基于理论)则相同。这里(101,103)比(101,102)更相似,它不应该是。

两个示例都在没有任何其他参数的情况下运行。

这个问题在某种程度上解决了吗?有什么想法吗?

来源:http://files.grouplens.org/papers/www10_sarwar.pdf

1 个答案:

答案 0 :(得分:0)

那些用户并不完全相同。协作过滤需要具有同时发生的度量,并且相同的项目不会在这些用户之间共存。同样,这些项目并不相同,它们各自都有不同的用户。

数据变成“稀疏矩阵”,其中仅记录非零值。其余的被视为0值,这是预期和正确的。算法将0视为无偏好,而不是否定偏好。

这是正确的事情。