改进Mahout建议

改进Mahout建议,mahout,autosuggest,mahout-recommender,Mahout,Autosuggest,Mahout Recommender,我正在寻找使用“外部”数据集改进Mahout建议(基于表单项的推荐者,数据集最初是用户/项/权重)的方法 假设我们已经有了建议:一些用户被建议的项目数量 但是,也有可能从这些建议用户那里收到二进制形式的反馈:“不,不适合我”和“是的,我被建议是因为我知道项目”;通过这种方式,每个建议的用户可以使用1/0 使用此类数据的更好和正确的方法是什么?是否有任何内置的Mahout方法?如果没有,什么方法适合培训数据集并在下一轮中使用该信息?获得明确的用户反馈不是很理想,因为用户反馈为0-1(强烈不同意-强

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

假设我们已经有了建议:一些用户被建议的项目数量

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


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

获得明确的用户反馈不是很理想,因为用户反馈为0-1(强烈不同意-强烈同意),否则反馈可以被视为输入中的任何其他用户评分。 无论如何,您可以在初始训练集中引入此用户反馈,并将
推荐分数
('1'反馈)或
1-推荐分数
('0'反馈)作为权重,重新训练您的模型


最好添加一个不起任何作用的第三选项“中立”,以避免数据中的噪音(例如,建议分数为0.5,用户不同意,不管怎样,您仍然会将其添加为0.5…)和模型过度拟合。

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

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

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

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


该方法需要Mahout、Spark、Hadoop和Solr等搜索引擎。这里有解释:在如何使用多个用户操作下

是的,布尔数据集并不理想,但即使我们假设我们有一个“正常”权重(比如1到5)作为用户反馈,这仍然不能回答我们在即将到来的建议结果评估中如何使用数据的问题。有什么想法吗?谢谢。请看一下Jawaheer的“在线音乐推荐服务的隐性反馈和显性反馈的比较”。我在上面建议的是将你的隐式反馈转化为显式反馈,并重新训练你的模型。同时看一下关于“消除用户反馈噪声”的演示。谢谢,非常感谢。