问题标签 [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 投票
1 回答
437 浏览

machine-learning - Apache Mahout 样本数据培训与实际数据实施

场景是这样的:

我正在尝试使用 apache mahaout 创建推荐器,并且我有一些样本偏好(用户、项目、偏好值)数据用于生成相似度矩阵并确定项目相似度。但实际偏好数据远大于样本偏好数据。实际偏好数据中存在的项目 ID 列表也都存在于样本偏好数据中。但是样本数据中的用户 ID 比实际数据要少得多。

现在,当我尝试在实际数据上运行推荐器时,它一直给我错误,用户 ID 不存在,因为它不存在于示例数据中。如何在 mahout 的推荐器中注入新的用户 ID 和他们的偏好,以便它可以根据项目相似度为任何用户动态生成推荐?或者,如果有任何其他方式可以为新用户生成推荐,那么请提出建议。

谢谢。

0 投票
1 回答
411 浏览

machine-learning - 为什么 Apache Mahout 的 Recommender.recommend() 函数很慢?

我在 400 个项目和 500 万用户的数据集上使用具有项目相似性的 Apache Mahout Item Based Recommender。我正在使用TanimotoCoefficientSimilarityGenricItemBasedRecommender.

但是当我调用函数recommender.recommend 时,每个用户大约需要1500 毫秒来生成5 个项目的推荐。我也尝试过缓存相似性和推荐,但没有任何帮助。apache mahout 0.8 是否存在性能问题,需要很长时间才能生成推荐?

请提出优化方法。

谢谢。

0 投票
1 回答
1768 浏览

mahout - 在 Mahout 中实现 SVD 推荐器

我有一个包含 5000 万用户偏好的数据集,其中包含 800 万不同的用户和 180K 不同的产品。我目前正在使用一个布尔数据模型,并且有一个基本的基于 tanimoto 相似性的推荐器。我正在尝试探索不同的算法以获得更好的建议,并从带有 ALSWR 分解器的 SVD 开始。我使用了 mahout 中提供的基本 SVD 推荐器,如下所示。

DataModel dataModel = new FileDataModel("/FilePath");

ALSWRFactorizer factorizer = new ALSWRFactorizer(dataModel, 50, 0.065, 15);

recommender = new SVDRecommender(dataModel, factorizer);

根据我的基本理解,我相信分解是离线进行的,它会创建用户特征和项目特征。而实际请求是通过对用户向量和所有可能的项目向量进行点积来计算用户的顶级产品来服务的。

我对这种方法有几个疑问:-

  1. 选择分解参数的最佳方法是什么?分解通常需要多长时间?我尝试使用上述参数,分解本身运行了 30+ 分钟。
  2. 有没有办法更快地处理实时请求,因为采用所有可能的项目向量的点积会导致请求时间长?有离线 SVD 之类的东西吗?
  3. 查看我拥有的数据集的大小,我应该尝试其他一些分解器吗?
0 投票
0 回答
180 浏览

mahout - Mahout 上具有伪推荐器作业的基于通用用户的推荐器

我正在尝试在 Mahout 上使用基于通用用户的推荐器运行伪推荐器。但它给出了 IllegalStateException>。我发现可能是因为 Pseudo Recommender 需要仅使用 DataModel 作为参数的类,而 GenericUserbasedRecommender 需要 Datamodel、邻域、相似性参数。那么,任何人都可以帮助我了解如何在 Mahout 上使用 GenericUserbasedRecommender 和 PseudoRecommenderJob。

0 投票
1 回答
164 浏览

mahout - 我们的 Hadoop 集群中的数据过多而机器不足,无法用于基于 Mahout 项的 CF

在工作中,我正在尝试基于 Mahout 的基于 Item 的 CF 包构建基于 Item 的推荐系统。这是我们正在处理的问题:

用户数量:6,000,000 项目数量:200,000 偏好:10,000,000,000

如果我们的 Hadoop 集群中有数百台机器,我们可能能够在几个小时内完成 RecommenderJob。但是,问题在于,因为我们是一家小型初创公司,我们的 Hadoop 集群现阶段只有大约 10 台机器。理想情况下,我们希望每隔几天运行一次推荐作业。

为了了解问题的规模,我们在一小部分数据上应用了 Mahout 的基于项目的 CF:

用户数量:100,000 项目数量:80,000 偏好:3,000,000

在我们的 Hadoop 集群上,RecommenderJob 花费的时间大约是 10 分钟。

我的问题是,鉴于我们的硬件限制(短期内不太可能改变),我们可以做些什么来加快 Mahout 的基于 Item 的 CF 的速度?

0 投票
1 回答
523 浏览

mahout - 未登录/访客/匿名用户的 Mahout 推荐

通常,Mahout 的数据模型在文件中包含 UserId、ItemId、Prefs,它转换为已登录/注册的用户。但大多数情况下,我们有未登录/匿名用户,查看我们的项目,
例如在 IMDB 中,您无需登录即可观看电影详细信息。
对于这种情况,我需要实施“查看此内容的用户也查看了该内容”的建议。
任何人都可以建议,如何使用 Mahout 实现这一目标?

PS:对于我的系统,对于每个视图,我都存储了用户的 IP 地址,可用于与 itemId 关联。

0 投票
1 回答
262 浏览

java - 无法导入 GenericBooleanPrefItemBasedRecommender

我正在尝试编译一个示例 Mahout 代码。但是我在导入 GenericBooleanPrefItemBasedRecommender 时遇到问题。当我检查我的系统时,找到了库并且目录中的其他库导入没有问题。有人可以指出我的错误吗?下面是我的代码片段和结果输出。谢谢。

[INFO] 正在扫描项目...

[信息]

[信息] --------------------------------------------- -------------------------

[INFO] 建筑 mahoutrec 1.0-SNAPSHOT

[信息] --------------------------------------------- -------------------------

[信息]

[信息] --- maven-resources-plugin:2.4.3:resources (default-resources) @ mahoutrec ---

[INFO] 使用 'UTF-8' 编码复制过滤的资源。

[INFO] 跳过不存在的资源目录 /Users/name/Downloads/mahout/trunk/mahoutrec/src/main/resources

[信息]

[信息] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ mahoutrec ---

[INFO] 将 1 个源文件编译到 /Users/name/Downloads/mahout/trunk/mahoutrec/target/classes

[信息] --------------------------------------------- --------------

[错误] 编译错误:

[信息] --------------------------------------------- --------------

[错误] /Users/name/Downloads/mahout/trunk/mahoutrec/src/main/java/com/unresyst/UnresystBoolRecommend.java:[45,8]

找不到标志

符号:变量推荐器

位置:类 com.unresyst.UnresystBoolRecommend

[错误] /Users/name/Downloads/mahout/trunk/mahoutrec/src/main/java/com/unresyst/UnresystBoolRecommend.java:[45,26] 找不到符号

符号:类 GenericBooleanPrefItemBasedRecommender

位置:类 com.unresyst.UnresystBoolRecommend

[错误] /Users/name/Downloads/mahout/trunk/mahoutrec/src/main/java/com/unresyst/UnresystBoolRecommend.java:[50,48] 找不到符号

符号:变量推荐器

位置:类 com.unresyst.UnresystBoolRecommend

[信息] 3 个错误

[信息] --------------------------------------------- --------------

[信息] --------------------------------------------- -------------------------

[信息] 构建失败

[信息] --------------------------------------------- -------------------------

[INFO] 总时间:3.628s

[INFO] 完成时间:2014 年 1 月 13 日星期一 15:27:22 EET

[INFO] 最终内存:10M/81M

[信息] --------------------------------------------- -------------------------

[错误] 无法执行目标 org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project mahoutrec: Compilation failure: Compilation failure:

[错误] /Users/name/Downloads/mahout/trunk/mahoutrec/src/main/java/com/unresyst/UnresystBoolRecommend.java:[45,8] 找不到符号

[ERROR] 符号:变量推荐器

[错误] 位置:com.unresyst.UnresystBoolRecommend 类

[错误] /Users/name/Downloads/mahout/trunk/mahoutrec/src/main/java/com/unresyst/UnresystBoolRecommend.java:[45,26] 找不到符号

[错误] 符号:类 GenericBooleanPrefItemBasedRecommender

[错误] 位置:com.unresyst.UnresystBoolRecommend 类

[错误] /Users/name/Downloads/mahout/trunk/mahoutrec/src/main/java/com/unresyst/UnresystBoolRecommend.java:[50,48] 找不到符号

[ERROR] 符号:变量推荐器

[错误] 位置:com.unresyst.UnresystBoolRecommend 类

[错误] -> [帮助 1]

[错误]

[错误] 要查看错误的完整堆栈跟踪,请使用 -e 开关重新运行 Maven。

[错误] 使用 -X 开关重新运行 Maven 以启用完整的调试日志记录。

[错误]

[错误] 有关错误和可能的解决方案的更多信息,请阅读以下文章:

[错误] [帮助 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

0 投票
1 回答
735 浏览

java - 使用 MAHOUT 使用不同的数据集进行测试和训练

抱歉,如果这是一个菜鸟问题,但我是 MAHOUT 的新手,我必须对 MovieLens 数据集进行一些测试。我想知道是否可以用 u1base.csv 训练推荐器,并用 u1test.csv 测试推荐器以确定准确率和召回率?

我发现的关于评估的例子他们只漏掉了数据,但我想用 u1base 来训练和 u1test 来测试。

u1base.csv 和 u1test.csv 具有相同的格式“UserId,Item,Rating”。

我有的java代码:

任何帮助都感激不尽

0 投票
2 回答
759 浏览

mahout - 如何使用 mahout 结果?

我想建立一个基本的电影推荐系统。我搜索并找到了 apache mahout。我使用了一些方法,但我不知道如何使用这些结果。

和这样的结果

2014 年 3 月 3 日下午 2:06:44 org.slf4j.impl.JCLLoggerAdapter 信息信息:为文件 u1.base 创建 FileDataModel 2014 年 3 月 3 日下午 2:06:44 org.slf4j.impl.JCLLoggerAdapter 信息信息:读取文件信息... 2014 年 3 月 3 日下午 2:06:44 org.slf4j.impl.JCLLoggerAdapter 信息信息:读取行:80000 2014 年 3 月 2:06:44 PM org.slf4j.impl.JCLLoggerAdapter 信息信息:已处理 943 个用户2014 年 3 月 3 日下午 2:06:44 org.slf4j.impl.JCLLoggerAdapter 信息信息:使用 FileDataModel[dataFile:C:\Users\HydrojaN\Documents\NetBeansProjects\JavaApplication1\u1.base] 的 0.7 开始评估] 2014 年 3 月下午 2:06:44 org.slf4j.impl.JCLLoggerAdapter 信息信息:已处理 943 个用户 Şub 03, 2014 2:06:44 PM org.slf4j.impl.JCLLoggerAdapter 信息信息:开始评估 941 个用户 Şub 03, 2014 2: 06:44 PM org.slf4j.impl.JCLLoggerAdapter 信息信息:4 个线程中 941 个任务的开始时间 Şub 03, 2014 2:06:45 PM org.slf4j.impl.JCLLoggerAdapter 信息信息:每个推荐的平均时间:193ms Şub 03, 2014 2:06:45 PM org.slf4j.impl。 JCLLoggerAdapter 信息信息:使用的近似内存:86MB / 276MB Şub 03, 2014 2:06:45 PM org.slf4j.impl.JCLLoggerAdapter 信息信息:在 29 种情况下无法推荐

Şub 03, 2014 2:07:49 PM org.slf4j.impl.JCLLoggerAdapter info INFO:评估结果:1.0364950141746245 BUILD SUCCESSFUL(总时间:1 分 5 秒)

0 投票
1 回答
306 浏览

mahout - Mahout 中基于项目的推荐器的性能问题

我正在尝试在 mahout 中使用基于项目的推荐器。它包含 250 万用户,项目交互,没有偏好值。大约有 100 个项目和 10 万用户。推荐大约需要 10 秒。而对于相同的数据,当我使用基于用户的推荐器时,它只需要不到一秒钟的时间。

我阅读了@Sean 的答案之一,他建议将上述参数用于 SamplingCandidateItemsStrategy。但我不确定它到底做了什么。

编辑:2.5 M 是总用户-项目关联,有 100K 用户,项目总数为 100。