问题标签 [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.
mahout - Mahout 预计算项目-项目相似度 - 慢速推荐
我在 Mahout 中遇到与预先计算的项目相似性的性能问题。
我有 400 万用户,他们的项目数量大致相同,大约有 1 亿个用户项目偏好。我想根据文档的 TF-IDF 向量的余弦相似度做基于内容的推荐。由于动态计算速度很慢,我预先计算了前 50 个最相似文档的成对相似性,如下所示:
- 我曾经
seq2sparse
生成 TF-IDF 向量。 - 我曾经
mahout rowId
制作过驯象师矩阵 - 我使用 mahout
rowSimilarity -i INPUT/matrix -o OUTPUT -r 4587604 --similarityClassname SIMILARITY_COSINE -m 50 -ess
生成了前 50 个最相似的文档
我使用 hadoop 预先计算所有这些。对于 400 万个项目,输出仅为 2.5GB。
然后我将reducers生成的文件的内容加载到Collection<GenericItemSimilarity.ItemItemSimilarity> corrMatrix = ...
使用docIndex
解码文档的ID中。它们已经是整数,但是 rowId 已经从 1 开始解码它们,所以我必须将其取回。
对于建议,我使用以下代码:
我正在尝试使用有限的数据模型(160 万个项目),但我在内存中加载了所有项目-项目成对相似性。我设法使用 40GB 将所有内容加载到主内存中。
当我想为一位用户做推荐时
推荐过程的经过时间是554.938583083
秒,而且它没有产生任何推荐。现在我真的很担心推荐的表现。我玩过 和 的数字CandidateItemsStrategy
,MostSimilarItemsCandidateItemsStrategy
但性能没有任何改进。
预计算所有东西的想法难道不是为了加快推荐过程吗?有人可以帮助我并告诉我我做错了什么以及我做错了什么。另外,为什么在主内存中加载 parwise 相似性会呈指数级增长?Collection<GenericItemSimilarity.ItemItemSimilarity>
在mahout 矩阵的 40GB 主内存中加载了 2.5GB 的文件?我知道文件是使用IntWritable
, VectorWritable
hashMap 键值序列化的,并且对于ItemItemSimilarity
矩阵中的每个向量值都必须重复该键,但这有点太多了,你不觉得吗?
先感谢您。
hadoop - how can I compile/using mahout for hadoop 2.0?
The latest release mahout 0.9 is only built on hadoop 1.x. (mvn clean install) How can I compile mahout for hadoop 2.0.x?
Because When I was running the commands:
hadoop jar mahout-examples-0.9-SNAPSHOT-job.jar org.apache.mahout.cf.taste.hadoop.item.RecommenderJob -s SIMILARITY_COOCCURENCE -i test -o result
I always got the error message
IncompatibleClassChangeError: Found interface org.apache.hadoop.mapreduce.JobContext, but class was expected.
Thanks!
mahout - Myrrix 中的重叠模型
我目前正在使用 Myrrix 获得以下建议:
但我想添加如下推荐功能:
( sCollection
组在哪里Item
——我可以称之为专辑和歌曲,但是是的,实际用例确实有意义......)
现在,Myrrix 中的多个模型的答案表明我应该拆分多个 Myrrix 实例,如果可能的话我宁愿不这样做(内存开销是一个小问题)。
碰巧Collection
Id 被保证在长范围的上半部分,而User
Id 在下半部分,即它们不能重叠。这是否意味着只要我使用 rescorer 将这两种类型分开,我就可以将所有内容放在一起,而不会出现两组建议重叠的情况?
或者,如果这是一个愚蠢的差事,那么只采用两个 Myrrix 方法会更有效吗?
mahout - Myrrix 标记 API 来表示/加权父/子项关系
我一直在使用 Tagging API 来标记我的项目,以便计算项目-项目的“相似性”分数,因此:项目 1 被标记为 {UK, MALE, 50},项目 2 被标记为 {FRANCE, MALE, 22},那种东西。这一直很好。
我想做的是表示项目-项目“关系”,所以如果我的应用程序说 1 是 2 的父级(只是为了让事情更复杂一点,这是多层次的),我想能够告诉 Myrrix 将这两个项目拉近一点。
我的第一个解决方案是为每个 Item 添加一个“PARENT_[name]”标签,并为其拥有的每个父项添加一个“PARENT_[parentname]”标签,随着层次结构的上升,权重较低。这确实成功地拉近了父母和孩子的距离。
不幸的是,建议的整体质量似乎有所下降,结果似乎越来越多变,例如再次运行导入,结果似乎完全随机。这是可以在功能/ lambda 级别修复的东西吗?
我仍然不太清楚“功能”代表什么,但我怀疑通过大量增加可能的标签数量,我需要以非常不同的方式配置模型......
java - Mahout - 推荐器评估器返回 0.0
好吧,我对 Mahout 和 java 很陌生。我正在尝试评估推荐者,下面的代码每次返回 0.0,无论我使用的距离度量或集群大小。显然,它根本没有拆分训练和测试数据,我不知道为什么。
对此代码的任何帮助表示赞赏!
谢谢!
machine-learning - 有没有办法为具有一对多关联的实体执行推荐?
我正在为用户和项目是一对多关联的特定用例尝试推荐系统(学术练习)。假设在给定时间,特定项目只能由一个用户拥有。用户一次可以拥有多个项目。任何特定项目都有许多可能让拥有用户感兴趣的类似项目。我想找到一个项目并将其推荐给用户。通常在基于用户的推荐中,实体会有多对多的关联。如果用户 U1 拥有项目 I1、I2、I3 并且用户 U2 拥有项目 I1、I2、I3、I4,我们会向 U1 推荐 I4。在我的情况下,一件物品在给定时间只能由一个用户拥有。在这种情况下如何进行推荐。是否可以执行基于用户的推荐?
machine-learning - 为基于内容的推荐定制基于 mahout 项目的推荐器
我正在尝试为我的电子商务网站(布料/三通销售)做推荐。该网站不涉及评论或评级。用户可以通过在他们的个人资料偏好中添加关键字(例如:圆领、马球、休闲装、牛仔裤、派对装等)来喜欢产品并自定义他们的偏好。
我正在尝试自定义基于 mahout 项目的推荐器,以在计算相似度时包含用户的产品偏好。ItemSimilarity 接口具有仅用于在项目之间进行比较的方法。我需要我们正在计算相似度的用户信息/属性,以便如果用户偏好与产品属性匹配,我可以添加一些提升。基本上我想匹配用户属性和产品属性并做一些计算来改变相似度值。?是否有任何文章或教程解释相同?如果有人解释如何通过使用 mahout 来实现这一点,那将非常有帮助。有没有其他基于内容推荐的图书馆?提前谢谢了。
text - 使用 Lucene/solr/mahout 进行文本推荐
我正在做一个需要实现文章/新闻推荐引擎的项目。我正在考虑组合不同的方法(基于项目、基于用户、模型 CF),并且对要使用的工具有疑问。
从我的研究来看,Lucene 绝对是文本处理的工具,但对于推荐部分,它不是很清楚。如果我想在基于文本相似性的文章上实现项目 CF: - 我已经看到使用 Mahout 和 solr 的案例研究(http://fr.slideshare.net/lucenerevolution/building-a-realtime-solrpowered-recommendation-引擎),因为它真的很接近搜索问题,所以我认为 solr 可能更好,对吗?- 这两种工具在时间处理方面有什么区别(我认为 Mahout 更多的是批处理和 solr 实时)?- 我可以直接从 Lucene 获得文本距离吗(我不太清楚 solr 与 Lucene 相比的附加值是多少)?- 对于更高级的方法(基于矩阵分解的模型),我会使用 Mahout,但 solr 中是否有任何类似 SVD 的功能用于概念/标签发现?
谢谢你的帮助。
web-services - 将 Mahout 推荐器公开为 Web 服务
我正在构建一个应该向用户推荐项目的 asp.net 应用程序。我决定使用 Mahout 是因为它很受欢迎,但我现在想将 Mahout 推荐器作为 Web 服务公开,这样我就可以在我的 Web 应用程序或以后可以开发的任何移动应用程序中使用它。
在 Mahout 文档(https://cwiki.apache.org/confluence/display/MAHOUT/Recommender+Documentation)中,我发现了这个
Mahout 推荐器也可以作为外部服务器运行,这可能是非 Java 应用程序的唯一选择。它可以通过 org.apach.mahout.cf.taste.web.RecommenderServlet 公开为 Web 应用程序,然后您的应用程序可以通过简单的 HTTP 请求和响应访问推荐。见上文,有关详细信息,请参阅 javadoc。
为了能够将 mahout 公开为 Web 服务,我应该怎么做?我在这个领域或 Java servlet 方面没有任何知识,但我编写了 Java SE。你能帮我吗 ?
注意:我不想使用 Hadoop,因为我不会与数百万用户打交道,而且这是我的毕业项目,不是商业产品。
mahout - mahout 的推荐评估器的工作原理
谁能告诉我 mahout 的 RecommenderIRStatsEvaluator 是如何工作的?更具体地说,它如何随机分割训练和测试数据以及结果与哪些数据进行比较?根据我的理解,您需要某种理想/预期结果,您需要将其与推荐算法的实际结果进行比较,以找出 TP 或 FP,从而计算精度或召回率。但看起来 mahout 提供的精确度/召回率分数没有理想/结果。