我正在构建一个推荐器,其中实际的相似性计算是使用 ItemSimilarityJob 完成的,然后通过 FileItemSimilarity 加载到非分布式推荐器中。
到目前为止,所有这些都有效(2),但有一件事我有点困惑。
在实例化推荐器(GenericItemBasedRecommender)时,我必须传递一个数据模型 - 在我的例子中是 FileDataModel,但由于相似性计算已经发生,我真的不知道什么数据我应该传递到模型中吗?
显然,该模型用于确定最大和最小偏好值以及项目 ID 和用户 ID。关于用户,我计划只拥有匿名的“个人资料”——那么传递虚假数据可以吗?
这如何支持工作 - Mahout 示例 (1) 和 MiA 书没有对此给出任何答案,但两者都表明预计算是可行的方法:(
<小时/>(1) 我正在 Mahout 0.7 上运行,但也已经研究过 trunk 了。
(2) 当然,我必须自己将生成的相似度矩阵转换为文本格式。
最佳答案
您应该传递用于相似性计算的相同DataModel
。推荐器的输出当然是相似性的函数,但是,当然也是原始数据!这就是为什么它是一个输入。
理论上,您可以使用与实际提出建议的数据不同的 DataModel
来构建相似性。这是可能的,并且在某些情况下可能有意义,但不正常。
关于java - Mahout 中 DataModel 与 FileItemSimilarity 的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17389468/