Mahout 简单使用经验
mahout项目介绍
推荐引擎利用特殊的信息过滤技术,将不同的内容(例如电影、音乐、书籍、新闻、图片、网页等)推荐给可能感兴趣的用户。通常情况下,推荐引擎的实现是通过将用户的个人喜好与特定的参考特征进行比较,并试图预测用户对一些未评分项目的喜好程度。参考特征的选取可能是从项目本身的信息中提取的,或是基于用户所在的社会或社团环境。
常用的推荐的方式主要有两种:
-
基于用户的推荐:通过查找相似的用户来推荐项目。由于用户的动态特性,这通常难以定量。
这句话的理解可以用一个简单的例子来说明,假如说这里的项目指的是各种书籍,那么推荐程序可以根据一个用户对所关注的书籍的各种属性做一个分析,分析出此用户到底喜欢如何类型的书籍,比如说是关于历史的,通过对这种喜好的分析,程序就可以找到与该用户有相同喜好的用户,即也同样喜欢历史类书籍的用户,假如找到的用户不光喜欢历史类的书籍,并且喜欢科技类的书籍,那么程序会尝试将该类书籍推荐给这个用户。
当然程序的分析可能比这要复杂得多,但是可以这样简单的来理解。
-
基于项目的推荐:计算项目之间的相似度并做出推荐。项目通常不会过多更改,因此这通常可以离线完成。
同样这里的项目我们可以理解为书籍,项目间的相似度可能通过多种属性对比而来,比如说书籍的分类,价格,作者等等相关属性。根据此类属性来找出与该书类似的书籍,来直接推荐给用户。这里如果项目的信息量比较大会影响在线推荐的执行效率,因为项目一般变动周期可能不会十分频繁,切参数的更换也不会非常频繁,所以项目之间的相似度可以周期性的计算并存储,然后供推荐程序调用,来提高推荐程序的运行效率。
主要推荐方式分为此两种类型。所有推荐利用的算法最终都需要计算用户及其评分项目之间的相似度。可以通过许多方法来计算相似度,并且大多数 CF 系统都允许您插入不同的指标,以便确定最佳结果。这里的不同的指标有待进一步研究,这里的指标应该可以自定义筛选的范围,以及筛选的规则。
推荐引擎的搭建
Mahout 目前提供了一些工具,可用于通过 Taste 库建立一个推荐引擎 — 针对 CF 的快速且灵活的引擎。Taste支持基于用户和基于项目的推荐,并且提供了许多推荐选项,以及用于自定义的界面。Taste 包含 5 个主要组件,用于操作 用户、项目 和 首选项:
-
DataModel: 用于存储用户、项目和首选项
-
UserSimilarity: 用于定义两个用户之间的相似度
-
ItemSimilarity: 用于定义两个项目之间的相似度
-
Recommender: 用于提供推荐
-
UserNeighborhood:用于计算相似用户邻近度,其结果随时可由 Recommender 使用
基于项目相似度的推荐的部分代码,其中带注释的部分为其的关键代码:
public class ItemBasedRecommender implementsRecommender {
privatefinal Recommender recommender;
publicItemBasedRecommender() throws IOException, TasteException {
this(newMovieDataModel());// 初始化一个数据模型
}
publicItemBasedRecommender(DataModel dataModel) throws TasteException {
// 取得所有电影数据的相似度数据
Collection<GenericItemSimilarity.ItemItemSimilarity> correlations=
MovieSimilarityTable.getAllMovieSimilarities();
// 根据相似度数据生成一个相似度对象
ItemSimilarity itemSimilarity = new GenericItemSimilarity(correlations);
// 根据电影的数据模型,和相似度来生成一个推荐对象,可以利用此对象设置相关参数来给用户做电影的相关推荐,此推荐是基于电影的相似性来计算出来的。
recommender = new CachingRecommender(new EmbededItemBasedRecommender(
newGenericItemBasedRecommender(dataModel, itemSimilarity)));
}
publicList<RecommendedItem> recommend(long userID, int howMany)
throwsTasteException {
returnrecommender.recommend(userID, howMany);
}
.........
//EmbededItemBasedRecommender类的定义
privatestatic final class EmbededItemBasedRecommender implements Recommender {
//包含一个GenericItemBasedRecommender实例;
privatefinal GenericItemBasedRecommender recommender;
privateEmbededItemBasedRecommender(GenericItemBasedRecommender recommender) {
this.recommender = recommender;
}
publicList<RecommendedItem> recommend(long userID, int howMany,
Rescorer<Long> rescorer)
throws TasteException {
FastIDSet itemIDs =recommender.getDataModel().getItemIDsFromUser(userID);
return recommender.mostSimilarItems(itemIDs.toArray(), howMany, null);
}
........
}
其他基于用户的相似度的推荐,与其十分类似。
mahout 推荐引擎的相关介绍,理解,如何应用。(2)
http://hi.baidu.com/liujiekkk123/blog/item/d6c4541b06470fe6af5133fe.html
mahout 推荐引擎的相关介绍,理解,如何应用。(3)
http://hi.baidu.com/liujiekkk123/blog/item/8334240938ed04386b60fbb3.html
分享到:
相关推荐
基于 Apache Mahout 构建社会化推荐引擎
mahout关联推荐算法的介绍,例如PFPGrowth算法的参数使用介绍以及适用场景
直接调用Mahout相关接口即可 选择不同的用户相似度度量方法,这里选择了基于谷本系数、基于对数似然和基于曼哈顿距离 基于内容的推荐 对新闻文本进行分词 调用Deeplearning4j中构建paragraphvector的方法,通过doc2...
https://github.com/chubbyjiang/MapReduce
这是这篇博文的工程代码,是MyEclipse的工程文件。...由于原工程开发的时候是在MyEclipse中引用mahout的jar包,所以这个压缩文件并没有相关的jar文件,故运行此项目之前需要做的事请,是需要导入mahout的开发包。
recommenderApache Mahout 推荐引擎 基于用户评分数据推荐相关电影
Mahout推荐算法实战
具体步骤,参见博客:http://blog.csdn.net/fufengrui/article/details/17022535
Mahout实战案例-约会推荐系统,详情参考博客《Mahout案例实战--Dating Recommender 系统》http://blog.csdn.net/fansy1990/article/details/44181459
#资源达人分享计划#
推荐引擎服务API Apache Mahout建议( )作为与dropwizard( )一起提供的RESTful Web服务。 要求 Java 1.7 Postgres数据库服务器(必需) 评分表或视图,例如“ user_id,item_id,评分...” 设置 使用您的设置...
基于用户的简单推荐 保证可以运行 用到了mahout的相关算法
MovieRecommender基于Mahout实现协同过滤推荐算法的电影推荐系统^
同时在理论讲解的基础上,还会结合 Apache Mahout 介绍如何在大规模数据上实现各种推荐策略,进行策略优化,构建高效的推荐引擎的方法。本文作为这个系列的第一篇文章,将深入介绍推荐引擎的工作原理,和其中涉及的...
mahout之taste介绍,给公司同事做报告时准备的ppt,希望有用
教你成功运行mahout的taste webapp例子,网上的很多资料说的不清楚,或者版本冲突。正确的版本是jdk1.6 maven3.0.5 mahout0.5 。 摸索良久,亲测有效!
基于Mahout实现协同过滤推荐算法的电影推荐系统
mahout-examples-0.11.1 mahout-examples-0.11.1-job mahout-h2o_2.10-0.11.1 mahout-h2o_2.10-0.11.1-dependency-reduced mahout-hdfs-0.11.1 mahout-integration-0.11.1 mahout-math-0.11.1 mahout-math-0.11.1 ...
9.Hadoop入门进阶课程_第9周_Mahout介绍、安装与应用案例.pdf