【问题标题】:Improve Mahout suggestions改进 Mahout 建议
【发布时间】:2014-09-29 13:16:43
【问题描述】:

我正在寻找使用“外部”数据集改进 Mahout 建议(形成基于项目的推荐器,数据集最初是用户/项目/权重)的方法。

假设我们已经有了推荐:根据项目数量推荐了一些用户。

但是,也可以从这些建议用户那里收到二进制形式的反馈:“不,不适合我”和“是的,我被建议是因为我知道项目”;每个建议的用户都以这种方式 1/0。

使用此类数据的更好和正确的方法是什么? Mahout 有内置的方法吗?如果否,哪种方法适合训练数据集并在下一轮使用该信息?

【问题讨论】:

    标签: mahout autosuggest mahout-recommender


    【解决方案1】:

    将明确的用户反馈设为 0-1(非常不同意 - 非常同意)并不理想,否则反馈可能会被视为输入中的任何其他用户评分。 无论如何,您可以在初始训练集中引入此用户反馈,使用recommended score('1' 反馈)或1 - recommended score('0' 反馈)作为权重并重新训练您的模型。

    添加一个不做任何事情的第三个选项“中性”会很好,以避免数据中的噪音(例如,推荐的分数是 0.5 并且用户不同意,您仍然可以将其添加为 0.5 无论如何... ) 和模型过度拟合。

    【讨论】:

    • 是的,布尔数据集并不理想,但即使我们假设我们有一个“正常”权重(比如说从 1 到 5)作为用户的反馈,这仍然没有答案关于我们在即将到来的建议结果评估中如何使用数据的问题。有什么想法吗?谢谢。
    • 请查看 Jawaheer 的“在线音乐推荐服务的隐式和显式反馈的比较”。我上面的建议是将您的隐式反馈转换为显式反馈并重新训练您的模型。
    • 还可以看看这个关于“去噪用户反馈”的演示文稿slideshare.net/xamat/…
    • 谢谢,非常感谢。
    【解决方案2】:

    布尔数据是理想的,但您有两个操作:“喜欢”和“不喜欢”

    最新的使用方法是使用指标和交叉指标。您想推荐喜欢的东西,因此为这些数据创建一个指标。然而,用户的“不喜欢”模式很可能可以用来推荐喜欢,为此您需要创建一个交叉指标。

    最新的 Mahout SNAPSHOT-1.0 在“*spark-itemsimilarity”中有您需要的工具。它可以采取两个动作,一个主要的,另一个次要的,并将创建一个指标矩阵和一个交叉指标矩阵。您可以索引和查询这些使用搜索引擎,其中查询是用户的喜欢和不喜欢的历史记录。搜索将返回一个有序的推荐列表。

    通过使用交叉指标,您可以开始使用用户在您的应用中执行的许多不同操作。创建交叉指标的过程将发现两个行动之间的重要关联。换句话说,它将找到导致特定“喜欢”的“不喜欢”。您可以对页面查看、应用标签、查看类别以及几乎所有记录的用户操作执行相同操作。

    该方法需要 Mahout、Spark、Hadoop 和 Solr 等搜索引擎。这里解释:http://mahout.apache.org/users/recommender/intro-cooccurrence-spark.htmlHow to use Multiple User Actions

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-20
      • 2015-12-31
      • 1970-01-01
      • 2012-02-15
      • 1970-01-01
      • 2013-12-23
      • 2017-09-14
      • 2013-05-10
      相关资源
      最近更新 更多