【问题标题】:Apache Mahout Item based Recommender基于 Apache Mahout 项目的推荐器
【发布时间】:2014-08-06 00:18:13
【问题描述】:

我是否可以在不重新计算相似度矩阵的情况下为具有相同项目集内项目偏好的新用户计算推荐,并根据先前存在的用户评分知道项目相似度矩阵?

【问题讨论】:

    标签: mahout-recommender


    【解决方案1】:

    不使用 Mahout 推荐器。他们不能为不在训练集中的用户或项目推荐。

    但是,您可以使用 Mahout 的 itemsimilairty 工作以及搜索引擎来完全按照您的描述进行操作。使用 itemsimilarity 创建 item-item 相似性的“指标”矩阵。使用 Solr 之类的东西来索引这些。我通过创建一个 (itemID0,itemID1 itemIDn...) 的 CSV 来做到这一点,每行都有一个 itemID 作为文档 ID 和一个空格分隔的 itemID 令牌列表。可能使用特定于应用程序的 ID,例如 SKU 或目录 ID。

    然后,对于搜索查询,使用新用户的历史记录,以项目 ID 标记(与您已编入索引的相同)表示。即使用户不在训练数据中,您也会得到一个有序的推荐项目列表。

    如果您使用 Mahout 1.0 快照,现在有一个 spark-itemsimilarity,它接受您的应用程序特定 ID,并以您将提供给搜索引擎的确切格式输出相同的 ID,因此您可能没有数据准备.但是通过一些准备和后期处理,您可以在 0.9 中使用 hadoop 版本的 itemsimilarity 来做同样的事情

    MapR 的 Ted Dunning 在“实用机器学习”中描述了这项技术。您可以在他们的网站上免费获得它的副本,或者在 user@mahout.apache.org 邮件列表上询问它。

    https://guide.finderbots.com 有一个使用此技术构建的演示站点。您可以通过注册并浏览培训师页面来查看它的工作原理,然后检查您自己的建议——在您的输入和获得您的推荐之间不会重新计算指标。

    【讨论】:

    • 这与编写自己的 map-reduce post item-similarity 计算相比如何,该计算使用相同的索引对新用户项目进行索引,并执行乘法运算。这不符合您可能拥有的自然生产流程吗?我看到的问题是相似度计算需要很长时间,并且随着项目数量的增加而变得更糟。这些相似性一旦计算(或偶尔更新一次)就不需要每次都重新计算。如果有一个RecommenderUpdater 方法会很好,它会采用现有的项目相似度并计算新的推荐。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    • 2012-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-16
    相关资源
    最近更新 更多