标签: mahout-recommender

基于项目和基于内容的协作过滤有什么区别?

我很困惑基于项目的推荐是什么,正如" Mahout in Action " 一书中所描述的那样.书中有算法:

for every item i that u has no preference for yet
  for every item j that u has a preference for
    compute a similarity s between i and j
    add u's preference for j, weighted by s, to a running average
return the top items, ranked by weighted average
Run Code Online (Sandbox Code Playgroud)

如何计算项目之间的相似度?如果使用内容,是不是基于内容的推荐?

recommendation-engine mahout mahout-recommender

22
推荐指数
2
解决办法
2万
查看次数

Spark - 如何在生产中使用经过培训的推荐模型?

我正在使用Spark来构建推荐系统原型.经过一些教程后,我能够MatrixFactorizationModel从我的数据中训练出来.

然而,Spark mllib训练的模型只是一个Serializable.如何使用此模型为真实用户推荐?我的意思是,如果用户数据增加,我怎样才能将模型保存到某种数据库中或更新它?

例如,由Mahout推荐库训练的模型可以存储到像Redis这样的数据库中,然后我们可以稍后查询推荐的项目列表.但是我们如何才能在Spark中做类似的事情呢?有什么建议吗?

recommendation-engine mahout mahout-recommender apache-spark

6
推荐指数
1
解决办法
2175
查看次数

如何使用辅助用户操作来改进Spark ALS的建议?

有没有办法在使用Spark Mllib ALS时使用从用户点击流派生的次要用户操作来改进建议?

我已经完成了这里提到的显式和隐式反馈示例:https://spark.apache.org/docs/latest/mllib-collaborative-filtering.html对train()和trainImplicit()使用相同的评级RDD方法.

这是否意味着我需要在每个次要用户操作的RDD(用户,项目,操作)的同一模型对象上调用trainImplicit()?或者训练多个模型,根据每个动作检索推荐,然后线性组合它们?

对于其他背景,问题的关键是Spark ALS是否可以模拟像Mahout的火花项目相似性工作这样的辅助操作.任何指针都会有所帮助.

mahout-recommender apache-spark apache-spark-mllib

5
推荐指数
1
解决办法
1071
查看次数

Mahout推荐器 - 为基于项目的推荐者添加基于内容的相似性

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

DataModel dataModel = new ReloadFromJDBCDataModel(
        new PostgreSQLBooleanPrefJDBCDataModel(localDB, ...)
);
ItemSimilarity itemSimilarity = new TanimotoCoefficientSimilarity(dataModel);
ItemBasedRecommender recommender = new GenericBooleanPrefItemBasedRecommender(dataModel, itemSimilarity);
Run Code Online (Sandbox Code Playgroud)

我正在尝试将基于内容的知识注入到推荐器中,因此我最强烈推荐的文章不仅在正常的协同过滤意义上是相似的,而且在他们共享许多常用术语的意义上也是相似的.

文章内容相似性(TF-IDF向量的余弦相似性)使用Mahout批次预先计算并从DB读取.但是,会有很多对没有相似性数据的文章.这有两个原因:

  • 文章内容相似性数据将比用户项目偏好的数据模型更新更少,因此在新文章计算其内容相似性之前将存在滞后.

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

所以,对于一对给定的文章,我有:

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

在内容相似性不为空的情况下,我想使用其值来加权项目相似性,以便增强具有类似内容的文章.

我的问题是:

  • 尝试结合这些措施是合理的,还是我尝试疯狂的事情?
  • 将这两个值组合成一个相似度得分的合理公式是什么?
  • 这最好是作为一个习惯ItemSimilarity或作为一个Rescorer

recommendation-engine mahout mahout-recommender

4
推荐指数
1
解决办法
3351
查看次数

mahout的推荐评估器如何工作

谁能告诉我mahout的RecommenderIRStatsEvaluator是如何工作的?更具体地说,它是如何随机分割训练和测试数据以及比较结果的数据?根据我的不足,您需要某种理想/预期的结果,您需要将其与推荐算法的实际结果进行比较,以找出TP或FP,从而计算精度或召回率.但看起来mahout提供的精确/召回得分没有理想/结果.

mahout mahout-recommender

4
推荐指数
1
解决办法
2524
查看次数

如何在Mahout 0.9中实现SlopeOne推荐器?

我是Mahout的新手,我正在尝试通过'Mahout in Action',它使用0.5版本.早期的一个例子要求使用斜率一推荐器.这个推荐者仍然包含在Mahout 0.9中吗?我查看了文档,但找不到它.也许它改变了名字?

谢谢你的帮助!

mahout mahout-recommender

4
推荐指数
1
解决办法
1360
查看次数

Mahout Datamodel具有重复的用户,项目输入但具有不同的偏好值

我想知道分布式mahout推荐器作业如何org.apache.mahout.cf.taste.hadoop.item.RecommenderJob处理csv文件,其中存在重复和三重用户,项目条目但具有不同的首选项值.例如,如果我有一个包含类似条目的.csv文件

1,1,0.7
1,2,0.7
1,2,0.3
1,3,0.7
1,3,-0.7

Mahout的数据模型将如何处理这个问题?它会为给定用户,项目条目(例如,对于用户项目1,2,偏好将是(0.7 + 0.3))总结偏好值,或者是否对值进行平均(例如,对于用户项目1,2,偏好是(0.7 + 0.3)/ 2)或者它是否默认为最后一个用户,它检测到的项目条目(例如,对于用户1,2,优先级值设置为0.3).

我问这个问题是因为我正在考虑基于多个偏好指标的推荐(项目视图,喜欢,不喜欢,保存到购物车等).如果数据模型将偏好值视为线性权重(例如,项目视图加上保存到愿望列表具有比项目视图更高的偏好分数)将是有帮助的.如果datamodel已经通过求和来处理这个问题,它将为我节省额外map-reduce的杂项,以根据多个指标对总分进行排序和计算.任何人都可以在mahout上提供任何澄清.csv datamodel在这方面的工作org.apache.mahout.cf.taste.hadoop.item.RecommenderJob将非常感激.谢谢.

hadoop recommendation-engine mahout mahout-recommender

2
推荐指数
1
解决办法
535
查看次数

Myrrix中的多个型号

我有一个这样的CSV文件:

typeA,typeB
typeA,typeC
typeA,typeC
typeA,typeB

这里,typeA,typeB和typeC是3种不同类型的实体.将类型B和C视为两种不同类型的项,并将类型A视为用户.

我可以通过将此CSV文件提供给Myrrix来构建模型.这个文件只有两种类型,B(以前的CSV文件中的"B"项目在这里作为用户)和D.现在,假设我有另一个这样的CSV文件:

typeB,typeD
typeB,typeD
typeB,typeD
typeB,typeD

在这里,我想获得typeB for typeB的建议.我必须有一个单独的Myrrix实例吗?是否可以有两个型号并选择推荐哪个?使用Apache Mahout这样做很容易,但是我觉得我不能像Myrrix那样获得实时setPreference和模型刷新的乐趣吗?

我很感激任何想法来解决这个问题.

recommendation-engine mahout myrrix mahout-recommender

1
推荐指数
1
解决办法
169
查看次数

Mahout是否提供了一种确定内容之间相似性的方法(基于内容的推荐)?

Mahout是否提供了确定内容之间相似性的方法?

我想将基于内容的推荐作为Web应用程序的一部分.我知道Mahout善于利用用户评级矩阵并根据它们提出建议,但我对协作(基于评级)的建议不感兴趣.我想评分两段文本的匹配程度,然后推荐与我在用户个人资料中为用户存储的文本最匹配的项目...

我已经阅读了Mahout的文档,看起来它主要促进了协作(基于评级)的建议,但不是基于内容的建议......这是真的吗?

recommendation-engine mahout content-based-retrieval mahout-recommender

1
推荐指数
1
解决办法
2834
查看次数