问题标签 [mahout-recommender]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
404 浏览

mahout - PlusAnonymousUserDataModel 的使用

以下代码有什么问题,为什么它没有为匿名用户提供建议?
我无法弄清楚出了什么问题,但我无法使用 PlusAnonymousUserDataModel 获得匿名用户的建议。这是示例代码,它不显示对匿名用户的推荐,但为模型中具有完全相同偏好的用户提供推荐:

此代码产生的输出如下: Neighborhood=100

匿名推荐:

user_id=1680604 的推荐:RecommendedItem[item:1701, value:24.363672] ... 等等。所以没有对匿名用户的推荐!:(

事实证明,要获得推荐,您必须使用不是“真实的”(在我的情况下是基于文件的)持久性 DataModel 模型,而是使用 PlusAnonymousUserDataModel plusAnonymousModel 来构建相似性、邻域和推荐器!
因此,关于 Mahout 的基本文档(https://builds.apache.org/job/Mahout-Quality/javadoc/org/apache/mahout/cf/taste/impl/model/PlusAnonymousUserDataModel.html)是错误的ItemSimilarity similarity = new LogLikelihoodSimilarity(realModel); // not plusModel

早些时候,SO 上的其他人也遇到了同样的问题,在这里没有得到任何答案:Model creation for User User collaborative filtering 所以我想我应该去那里回答他。Sean Owen,感谢您的关注,您能确认我找到的解决方案是正确的吗?

0 投票
3 回答
3188 浏览

java - NoClassDefFoundError 使用 mahout

我开始学习 mahout,但在第一步中,我的程序中出现了一个奇怪的错误。我正在尝试用几行代码构建一个简单的推荐器:

但我得到这个错误

这段代码有什么问题?我是从书上抄来的!


但是使用所有这些 jar 文件我得到以下错误:

我在使用额外的 jar 文件吗?

0 投票
1 回答
674 浏览

preferences - 我可以使用 Apache Mahout Taste 进行用户偏好匹配吗?

我正在尝试根据预定义的用户偏好匹配对象。一个简单的例子是寻找最匹配的车辆。

假设用户“汤姆”根据他的预定义偏好提供了一辆出租车辆用于旅行。在这种情况下,预定义的用户首选项将是 -

** Tom 的预定义用户偏好:

** 而 10 辆可用的车辆是 -

我要做的就是 - 为汤姆选择最符合他的喜好的车辆,并且也可能按顺序给他选择,即最佳匹配优先。

我的问题:

  1. 这可以用 Mahout Taste 完成吗?
  2. 如果是的话,有人可以指点我一些可以快速开始的示例代码吗?
0 投票
1 回答
297 浏览

hadoop - Mahout RecommenderJob 未收敛

这是我的第一个 SO 帖子,所以如果我错过了任何重要的事情,请告诉我。我是 Mahout/Hadoop 初学者,正在尝试组合一个分布式推荐引擎。

为了模拟在远程集群上的工作,我在我的机器上设置了 hadoop 以与同样位于我的机器上的 Ubuntu VM(使用 VirtualBox)通信,该机器上安装了 hadoop。此设置似乎运行良好,我现在尝试在(非常!)小型试验数据集上运行 Mahout 的“RecommenderJob”作为测试。

输入由一个.csv文件(保存在 hadoop dfs 上)组成,其中包含大约 50 个用户首选项,格式为:userID, itemID, preference... 我正在运行的命令是:

whereTestRatings.csv是包含首选项的文件,并且output是所需的输出目录。

起初,这项工作看起来运行良好,我得到以下输出:

但是最后三行无限期地重复(我把它留了一夜......),两行:

每十二行重复一次。

我不确定我的输入是否有问题,或者试验数据的微小尺寸是否把事情搞砸了。任何有关解决此问题的最佳方法的帮助和/或建议将不胜感激。

ps 我试图按照https://www.box.com/s/041rdjeh7sny128r2uki的说明进行操作

0 投票
3 回答
996 浏览

mahout - Apache Mahout Distributed Recommender 推荐已评分的项目

我已经使用 10M movielens 数据集尝试了基于项目的分布式推荐作业。一切正常。我的问题是,在查看针对用户的推荐时,我发现在推荐项目列表中,有些项目已经被用户评分。更加具体:

假设用户 ID:4 的用户观看了以下 ID 的电影:[123,543,234,567,324],然后在推荐列表中再次出现 543 和 234。我只是查看 Mahout in Action 以了解该算法,我找不到在生成 TopK 列表之前消除已评级项目的代码段。我错过了什么,还是它推荐已经评分的项目是正常的?

如果正常,是否可以从候选项目中消除这些项目?

PS:在产生推荐后过滤掉推荐对我的情况来说效率不高,因为我想要的推荐数量是 100,在过滤某些用户后,这个数字会减少到 30 等等。

提前致谢。

0 投票
2 回答
333 浏览

mahout - 如何在 Mahout 中使用 startPhase

我正在从 Mahout 0.7 运行一些基于 RecommenderJob (org.apache.mahout.cf.taste.hadoop.item.RecommenderJob) 的作业,并注意到有诸如 startPhase 和 endPhase 之类的选项。我猜这些只是运行管道的一部分,假设您有来自先前运行的必要输入数据。但是我很难理解 RecommenderJob 中有哪些阶段。我正在阅读源代码,但看起来需要一段时间。与此同时,我想知道是否有人可以阐明如何在 RecommenderJob 类中使用这些选项(尤其是 startPhase)?

0 投票
1 回答
419 浏览

slf4j - Mahout movieLens 推荐器,输出文件在哪里?

在命令之后成功构建之后,我正在运行位于 mahout wiki stater 中的 mahout Recommender:

我看到了这个日志文件,但找不到任何输出:

[信息] --------------------------------------------- ------------------------- [INFO] 总时间:20 秒 [INFO] 完成时间:Fri Jan 04 14:47:33 PST 2013 [ INFO] 最终内存:31M/697M [INFO] ---------------------------------------- ---------------------------------

日志/输出在哪里?如何启用日志?建议在哪里?难道我做错了什么?

0 投票
1 回答
750 浏览

mahout - 如何在 Mahout 中生成共现矩阵(仅)

在 Mahout 中给定首选项输入文件(userID、itemID 和可选评级),我找不到仅生成共现矩阵的方法。那可能吗?我所能找到的只是生成推荐输出,并且似乎删除了共现矩阵。

0 投票
1 回答
3418 浏览

mahout - Mahout 推荐器 - 将基于内容的相似性添加到基于项目的推荐器中

我有一个非常标准的基于 Mahout 项目的新闻文章推荐器(使用点击数据,所以首选项是布尔值):

我正在尝试将基于内容的知识注入推荐器,这样我就可以最强烈地推荐不仅在正常协同过滤意义上相似的文章,而且在它们共享许多共同术语的意义上也相似。

文章内容相似度(TF-IDF 向量的余弦相似度)使用 Mahout 批处理进行预计算并从数据库中读取。但是,会有很多文章对没有相似度数据。这有两个原因:

  • 文章内容相似度数据的更新频率将低于用户项目偏好数据模型,因此在计算新文章的内容相似度之前会有延迟。

  • 理想情况下,我想将所有内容相似度数据加载到内存中,因此我只会存储每篇文章的前 20 个相似度。

因此,对于给定的一对文章,我有:

  • 项目相似度 (Tanimoto) 0 <= s1 <= 1
  • 内容相似度(余弦)0 <= s2 <=1(可能为空)

在内容相似度不为空的情况下,我想用它的值来加权项目相似度,以便对内容相似的文章进行提升。

我的问题是:

  • 尝试结合这些措施是否合理,还是我在尝试一些疯狂的事情?
  • 将这两个值组合成一个相似度分数的合理公式是什么?
  • 这最好是作为自定义ItemSimilarity还是作为Rescorer?
0 投票
0 回答
198 浏览

mahout - 在 Mahout 中,如何在矩阵乘法中生成 itemId 以及 userId 和偏好值

我们有两个矩阵:

  • U->用户特征,包含用户根据项目的 20 个特征的评分(比如电影是项目,它的特征可能是动作、悲剧......) 6x20。
  • M->项目特征(包含项目的特征评级(如果行动,那么它的评级,如果悲剧......)10x20)。

使用 Mahout 算法 matrixmult 取两者的点积。对于每个项目,它都显示相应的 userId 和 prefValue。我们还需要与它们一起生成 ItemId。输出是这样的:

其中有 6 个用户和 10 个项目。这里,对于每个项目,显示用户 id n 偏好值,但不显示项目 id