0

我已使用以下内容修改了AbstractSimilarity类/ UserSimilarity方法:

Collection c = multiMap.get(user1);
if(c.contains(user2)){
result = result+0.50;
}

我使用具有两个文件的 epinions 数据集。一个具有 userid、itemid、rating 和一个存储在上面的 multimap 中的信任网络 user-user。评级集在数据模型上。

最后:如果他在请求推荐的用户的信任网络上,我想为用户添加一个值(例如+0.50)。

使用两个数据模型会更好吗?

纳克斯

4

1 回答 1

0

您在推荐器中遇到了一个非常有趣的主题:多模式或多动作推荐器。它们解决了同一用户有多个操作的问题,以及如何使用数据来推荐使用所有可用数据的主要操作。例如,如何使用购买和页面浏览数据推荐购买。

使用 epinions 对您来说是一种很好的直觉。问题是个人用户的信任和评级之间可能没有相关性。您在此处使用的一般技术是通过使用多动作指示器来关联这两位数据。仅添加权重可能几乎没有影响,并且在您自己的真实数据中甚至会产生负面影响。

快照 Mahout 1.0 有一个新的 spark-itemsimilarity CLI 作业(您也可以像库一样使用它),它采取两个动作并将第二个动作与第一个动作相关联,产生两个“指标”输出。主要操作是您要推荐的操作,在这种情况下推荐个人可能喜欢的人。次要动作可以是任何东西,但必须具有共同的用户 ID,在 epinions 中它是信任动作。epinions 数据实际上是用来测试这种技术的。

运行这两个输入spark-itemsimilarity将产生一个“指标矩阵”和一个“交叉指标矩阵”,这些是任何“共现”推荐器的核心。如果您想了解有关此技术的更多信息,我建议您将其添加到 Mahout 邮件列表中:user@mahout.apache.org

于 2014-08-06T16:37:53.670 回答