改善Mahout建议

时间:2014-09-29 13:16:44

标签: mahout autosuggest mahout-recommender

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

添加一个没有做任何事情的第3选项'中性'会很好,以避免数据中的噪音(例如推荐得分为0.5而用户不同意,你仍然会将其添加为0.5,无论...... )和模型超过拟合。

答案 1 :(得分:1)

布尔数据是理想的,但你有两个动作:"喜欢"并且"不喜欢"

使用此方法的最新方法是使用指标和交叉指标。您想要推荐喜欢的内容,以便为您创建指标的数据。然而,用户很可能不喜欢"不喜欢"可以用来推荐喜欢,为此你需要创建一个交叉指标。

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

通过使用交叉指示器,您可以开始使用用户在您的应用中执行的许多不同操作。创建交叉指标的过程将发现两个行动之间的重要相关性。换句话说,它会发现"不喜欢"导致特定的"喜欢"。您可以对页面视图,应用标签,查看类别,几乎任何录制的用户操作执行相同的操作。

该方法需要Mahout,Spark,Hadoop和像Solr这样的搜索引擎。这里解释:如何使用多个用户操作

下的http://mahout.apache.org/users/recommender/intro-cooccurrence-spark.html