【问题标题】:DataModel usage with FileItemSimilarity in MahoutMahout 中 DataModel 与 FileItemSimilarity 的使用
【发布时间】:2013-07-01 01:29:48
【问题描述】:

我正在构建一个推荐器,其中使用 ItemSimilarityJob 完成实际相似度计算,然后通过 FileItemSimilarity 将其加载到非分布式推荐器中。

到目前为止,所有这些都有效(2),但有一件事我有点困惑。

在实例化推荐器 (GenericItemBasedRecommender) 时,我必须传递一个数据模型——在我的例子中是 FileDataModel,但由于相似度计算已经发生,我真的不知道什么数据我应该传入模型吗?

很明显,该模型用于确定最大和最小偏好值以及项目 ID 和用户 ID。关于我打算只拥有匿名“个人资料”的用户 - 那么传递虚假数据可以吗?

如何支持工作 - Mahout 示例 (1) 和 MiA 书没有对此给出任何答案,但都表示预计算是可行的方法:(


(1) 我在 Mahout 0.7 上运行,但也已经查看了主干。

(2) 当然,我必须自己将生成的相似度矩阵转换成文本格式。

【问题讨论】:

    标签: java mahout


    【解决方案1】:

    您应该传递与相似度计算相同的DataModel。推荐者的输出当然是相似度的函数,但是,当然也是原始数据!这就是为什么它是一个输入。

    理论上,您可以根据与您实际提出建议的数据不同的DataModel 建立相似性。在某些情况下这是可能的并且可能有意义,但不正常。

    【讨论】:

    • 因此,预先计算相似性然后“仅”减少我的推荐器的启动时间,但不会帮助我获得针对大量数据的推荐?
    • 不确定您的意思,如果您使用的是基于相似性的推荐器,则计算相似性作为任何推荐的一部分。无论您是预先计算还是其他什么都是正交问题。
    • 正如我所写...我确实使用 ItemSimilarityJob 来“准备”相似之处,我很想使用推荐器主要为匿名用户提供推荐(然后应该运行实时请求和不是预处理步骤) - 因此我想避免所有数据都必须再次加载到 DataModel 中......
    • 一般情况下,用户必须在DataModel 中分配给Recommender 才能为用户提出建议。你给ItemSimilarity 的东西实际上是分开的,尽管通常仍然是相同的数据。如果你想制作真正匿名的记录,你可能实际上想要一个最相似的项目方法,或者,看看PlusAnonymousUser* classes / hacks。但同样,您将主要数据提供给Recommender,以及相似度指标。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-27
    • 1970-01-01
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-02
    相关资源
    最近更新 更多