-
2022-05-10 16:20:56
1、Mahout是什么
- Mahout是一个算法库,集成了很多算法。
- Apache Mahout 是 Apache Software Foundation(ASF)旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。
- Mahout项目目前已经有了多个公共发行版本。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。
- 通过使用 Apache Hadoop 库,Mahout 可以有效地扩展到Hadoop集群。
- Mahout 的创始人 Grant Ingersoll 介绍了机器学习的基本概念,并演示了如何使用 Mahout 来实现文档集群、提出建议和组织内容。
- Mahout能做什么
2.1、推荐引擎
在目前采用的机器学习技术中,推荐引擎是最容易被一眼认出来的,也是应用范围最广的。服务商或网站会根据你过去的行为为你推荐书籍、电影或文章。
在部署了推荐系统的电子商务中,亚马逊大概是最有名的。亚马逊基于用户的交易行为和网站记录为你推荐你可能喜欢的商品。
而facebook这样的社交网络则利用推荐技术为你找到最可能尚未关联的朋友。
同时,这一技术也被各大知名国内网站所使用,如腾讯、人人、京东、淘宝。
2.2、聚类
顾名思义,物以类聚,人以群分。聚类是把具有共同属性的物品进行归类。
Google news使用聚类技术通过标题把新闻文章进行分组,从而按照逻辑线索来显示新闻,而并非给出所有新闻的原始列表。
2.3、分类
分类技术决定了一个事物多大程度上从属于某种类别或类型,或者多大程度上具有或者不具有某些属性。与聚类一样,分类无处不在,但更多隐身于幕后。通常这些系统会考察类别中的大量实例,来学习推到出分类的规则。
雅虎邮箱基于用户以前对正常右键和垃圾邮件的报告,以及电子右键自身的特征,来判别到来的消息是否是垃圾邮件。
3、Mahout协同过滤算法
Mahout使用了Taste来提高协同过滤算法的实现,它是一个基于Java实现的可扩展的,高效的推荐引擎。Taste既实现了最基本的基于用户的和基于内容的推荐算法,同时也提供了扩展接口,使用户可以方便的定义和实现自己的推荐算法。同时,Taste不仅仅只适用于Java应用程序,它可以作为内部服务器的一个组件以HTTP和Web Service的形式向外界提供推荐的逻辑。Taste的设计使它能满足企业对推荐引擎在性能、灵活性和可扩展性等方面的要求。
Taste主要包括以下几个接口:
- DataModel 是用户喜好信息的抽象接口,它的具体实现支持从任意类型的数据源抽取用户喜好信息。Taste 默认提供 JDBCDataModel 和 FileDataModel,分别支持从数据库和文件中读取用户的喜好信息。
- UserSimilarity 和 ItemSimilarity 。UserSimilarity 用于定义两个用户间的相似度,它是基于协同过滤的推荐引擎的核心部分,可以用来计算用户的“邻居”,这里我们将与当前用户口味相似的用户称为他的邻居。ItemSimilarity 类似的,计算Item之间的相似度。
- UserNeighborhood 用于基于用户相似度的推荐方法中,推荐的内容是基于找到与当前用户喜好相似的邻居用户的方式产生的。UserNeighborhood 定义了确定邻居用户的方法,具体实现一般是基于 UserSimilarity 计算得到的。
- Recommender 是推荐引擎的抽象接口,Taste 中的核心组件。程序中,为它提供一个 DataModel,它可以计算出对不同用户的推荐内容。实际应用中,主要使用它的实现类 GenericUserBasedRecommender 或者 GenericItemBasedRecommender,分别实现基于用户相似度的推荐引擎或者基于内容的推荐引擎。
- RecommenderEvaluator :评分器。
- RecommenderIRStatsEvaluator :搜集推荐性能相关的指标,包括准确率、召回率等等。
3.1、DataModel
- org.apache.mahout.cf.taste.impl.model.GenericDataModel
- org.apache.mahout.cf.taste.impl.model.GenericBooleanPrefDataModel
- org.apache.mahout.cf.taste.impl.model.PlusAnonymousUserDataModel
- org.apache.mahout.cf.taste.impl.model.file.FileDataModel
- org.apache.mahout.cf.taste.impl.model.hbase.HBaseDataModel
- org.apache.mahout.cf.taste.impl.model.cassandra.CassandraDataModel
- org.apache.mahout.cf.taste.impl.model.mongodb.MongoDBDataModel
- org.apache.mahout.cf.taste.impl.model.jdbc.SQL92JDBCDataModel
- org.apache.mahout.cf.taste.impl.model.jdbc.MySQLJDBCDataModel
- org.apache.mahout.cf.taste.impl.model.jdbc.PostgreSQLJDBCDataModel
- org.apache.mahout.cf.taste.impl.model.jdbc.GenericJDBCDataModel
- org.apache.mahout.cf.taste.impl.model.jdbc.SQL92BooleanPrefJDBCDataModel
- org.apache.mahout.cf.taste.impl.model.jdbc.MySQLBooleanPrefJDBCDataModel
- org.apache.mahout.cf.taste.impl.model.jdbc.PostgreBooleanPrefSQLJDBCDataModel
- org.apache.mahout.cf.taste.impl.model.jdbc.ReloadFromJDBCDataModel
从类名上就可以大概猜出来每个DataModel的用途,奇怪的是竟然没有HDFS的DataModel,有人实现了一个,请参考 MAHOUT-1579 。
3.2、相似度
UserSimilarity 和 ItemSimilarity 相似度实现有以下几种:
- CityBlockSimilarity :基于Manhattan距离相似度
- EuclideanDistanceSimilarity :基于欧几里德距离计算相似度
- LogLikelihoodSimilarity :基于对数似然比的相似度
- PearsonCorrelationSimilarity :基于皮尔逊相关系数计算相似度
- SpearmanCorrelationSimilarity :基于皮尔斯曼相关系数相似度
- TanimotoCoefficientSimilarity :基于谷本系数计算相似度
- UncenteredCosineSimilarity :计算 Cosine 相似度
3.3、最近邻域
UserNeighborhood 主要实现有两种:
- NearestNUserNeighborhood:对每个用户取固定数量N个最近邻居
- ThresholdUserNeighborhood:对每个用户基于一定的限制,取落在相似度限制以内的所有用户为邻居
3.4、推荐引擎
Recommender分为以下几种实现:
- GenericUserBasedRecommender:基于用户的推荐引擎
- GenericBooleanPrefUserBasedRecommender:基于用户的无偏好值推荐引擎
- GenericItemBasedRecommender:基于物品的推荐引擎
- GenericBooleanPrefItemBasedRecommender:基于物品的无偏好值推荐引擎
3.5、推荐系统评测
RecommenderEvaluator有以下几种实现:
- AverageAbsoluteDifferenceRecommenderEvaluator :计算平均差值
- RMSRecommenderEvaluator :计算均方根差
- Mahout协同过滤算法编程
- 创建Maven项目:详见《创建一个Maven项目》
- 导入Mahout依赖
4.3、下载电影评分数据
数据类别:7.2万用户对1万部电影的百万级评价和10万个标签数据
本例数据:本例中只需要使用评分数据
4.4、编写基于用户的推荐
-
- 编写基于物品的推荐
-
- 评估推荐模型
4.7、获取推荐的查准率和查全率
- Mahout运行在Hadoop集群
4.1、Hadoop 执行脚本
hadoop jar mahout-examples-0.9-job.jar org.apache.mahout.cf.taste.hadoop.item.RecommenderJob --input /sanbox/movie/10M.txt --output /sanbox/movie/r -s SIMILARITY_LOGLIKELIHOOD
参数说明
- --input(path) : 存储用户偏好数据的目录,该目录下可以包含一个或多个存储用户偏好数据的文本文件;
- --output(path) : 结算结果的输出目录
- --numRecommendations (integer) : 为每个用户推荐的item数量,默认为10
- --usersFile (path) : 指定一个包含了一个或多个存储userID的文件路径,仅为该路径下所有文件包含的userID做推荐计算 (该选项可选)
- --itemsFile (path) : 指定一个包含了一个或多个存储itemID的文件路径,仅为该路径下所有文件包含的itemID做推荐计算 (该选项可选)
- --filterFile (path) : 指定一个路径,该路径下的文件包含了[userID,itemID] 值对,userID和itemID用逗号分隔。计算结果将不会为user推荐 [userID,itemID] 值对中包含的item (该选项可选)
- --booleanData (boolean) : 如果输入数据不包含偏好数值,则将该参数设置为true,默认为false
- --maxPrefsPerUser (integer) : 在最后计算推荐结果的阶段,针对每一个user使用的偏好数据的最大数量,默认为10
- --minPrefsPerUser (integer) : 在相似度计算中,忽略所有偏好数据量少于该值的用户,默认为1
- --maxSimilaritiesPerItem (integer) : 针对每个item的相似度最大值,默认为100
- --maxPrefsPerUserInItemSimilarity (integer) : 在item相似度计算阶段,针对每个用户考虑的偏好数据最大数量,默认为1000
- --similarityClassname (classname) : 向量相似度计算类
- outputPathForSimilarityMatrix :SimilarityMatrix输出目录
- --randomSeed :随机种子 -- sequencefileOutput :序列文件输出路径
- --tempDir (path) : 存储临时文件的目录,默认为当前用户的home目录下的temp目录
- --threshold (double) : 忽略相似度低于该阀值的item对
- 执行结果
上面命令运行完成之后,会在当前用户的hdfs主目录生成temp目录,该目录可由 --tempDir (path) 参数设置
更多相关内容 -
基于用户的协同过滤算法Mahout实现
2021-04-10 18:00:34该资源是在Eclipse平台里,使用Mahout库的API,实现基于用户的协同过滤算法,从而进行商品推荐。 软件环境是:win7 64位 +Eclipse4.4 + jdk1.6, 用到了7个.jar包, 分别为:commons-logging-1.2.jar, commons-... -
mahout:Apache Mahout的镜像
2021-02-03 20:07:18欢迎使用Apache Mahout! Apache Mahout:trade_mark:项目的目标是构建一个环境,以快速创建可扩展的高性能机器学习应用程序。 有关Mahout的其他信息,请访问设置环境无论您是使用Mahoutshell,运行命令行作业还是将... -
Mahout推荐算法API详解
2021-01-30 17:51:10用Mahout来构建推荐系统,是一件既简单又困难的事情。简单是因为Mahout完整地封装了“协同过滤”算法,并实现了并行化,提供非常简单的API接口;困难是因为我们不了解算法细节,很难去根据业务的场景进行算法配置和... -
基于Mahout的电影推荐系统
2018-11-26 06:12:02这是这篇博文的工程代码,是MyEclipse的工程文件。...由于原工程开发的时候是在MyEclipse中引用mahout的jar包,所以这个压缩文件并没有相关的jar文件,故运行此项目之前需要做的事请,是需要导入mahout的开发包。 -
mahout-0.11.1 相关的jar
2022-05-04 17:31:25mahout-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 ... -
mahout-demo:mahout 演示展示了它是如何工作的
2021-07-07 09:21:29Mahout 演示欢迎来到驯象师演示。 开发这个项目是为了展示 mahout 是如何工作的。 默认情况下,它使用 GroupLens 用户、电影和偏好数据( )。 只要每个文件都遵循 CSV 格式,就可以加载任何其他用户、项目和首选项... -
基于Mahout的新用户推荐算法的设计与实现.pdf
2021-08-23 21:14:05基于Mahout的新用户推荐算法的设计与实现.pdf -
mahout-core-0.9.jar+mahout-core-0.8.jar+mahout-core-0.1.jar
2019-03-20 11:05:05mahout-core-0.9.jar+mahout-core-0.8.jar+mahout-core-0.1.jar -
MovieRecommender基于Mahout实现协同过滤推荐算法的电影推荐系统^
2021-01-02 11:53:29MovieRecommender基于Mahout实现协同过滤推荐算法的电影推荐系统^ -
基于Mahout与协同过滤算法推荐系统的设计与实现.pdf
2021-08-21 23:27:08基于Mahout与协同过滤算法推荐系统的设计与实现.pdf -
Mahout:BDA
2021-03-22 10:49:39为了演示如何使用Mahout在EMR上进行分析工作,我们将构建电影推荐器。 我们将从GroupLens团队编译的MovieLens数据集中用户对电影标题的评级开始,并使用“基于建议”的示例为每个用户查找最受推荐的电影。 在CLI中,... -
apache-mahout-distribution-0.12.2.tar.gz
2020-02-10 11:53:49mahout是用来做大数据推荐系统和机器学习使用的框架,这个工具包官网下载非常慢,下载了一夜终于下载到了,刚好够上传的 -
基于Mahout实现协同过滤推荐算法的电影推荐系统.zip
2021-03-23 12:51:51基于Mahout实现协同过滤推荐算法的电影推荐系统 -
apache-mahout-distribution-0.12.1.tar.gz
2020-07-29 10:54:27apache-mahout-distribution-0.12.1.tar.gz 开源版本 . -
apache-mahout-distribution-0.11.0-src.zip
2019-10-08 22:22:07mahout0.11版本,源码,可修改源码并自己编译,使用java语言编写,maven编译 -
mahout:mahout机器智能推荐系统
2021-05-17 16:26:42mahout mahout机器智能推荐系统 -
mahout-0.9 jar包
2018-04-23 09:38:20包含了mahout所需的全部jar包,在官网下的,官网限制IP流量下载,下载了好几次才成功。 -
mahout-learning:mahout算法学习代码
2021-05-14 05:50:58mahout-learning mahout算法学习代码 -
基于mahout的数据挖掘技术课程 共35页.pdf
2021-08-09 22:50:00• 1、什么是mahout? • 2、mahout是干啥的 ? • 3、mahout是怎么干的? Apache Mahout 是 Apache Software Foundation (ASF) 开发的一个全新的开源项目,其主要目标是创建一些可伸缩的机器学习算法,供开发人员... -
mahout-0.9-custom
2021-05-15 04:09:28mahout-0.9-custom对itembased部分做了修改,使用前需要对源码进行重新编译打包.(注意本项目没有上传所有源码,需要自己重新整合)打包命名如下To compile, do mvn -DskipTests clean install打包后,发现修改的代码在... -
news-recommender:基于Mahout的新闻推荐系统
2021-03-11 18:55:59基于Mahout的新闻推荐系统 相关技术 推荐算法 基于用户的协同过滤 基于内容的推荐 基于景点的推荐 :整体框架,实现了协同过滤 ,建立VSM :分词,关键词提取 :分词,关键词 :提供API,ORM 关键实现 基于用户... -
基于Structs+Hibernate+Spring+mahout+bootstrap+junit+tomacat+mysql 实现的网上书店前后台系统
2019-05-20 16:14:21hibernate + struts + spring + bootstarp + mahout 实现功能: 后台图书管理: 图书的增删改查, 后台类目。 前台书店: 图书的分页查看, 前台类目, 多条件查询, 智能推荐, 购物车, 支付。 -
mahout-example
2021-05-29 18:07:38例子测试数据可在以下位置获得: -
Mahout tutorial
2019-03-21 11:42:25Mahout 官方文档,简单介绍Mahout概念及其安装和简单使用 -
mumu-mahout:mumu-mahout是一个学习项目,主要通过这个项目来学习mahout的功能和使用方式。mahout是一款...
2021-05-13 07:19:22mumu-crunch mahout机器学习算法 mumu-mahout是一个学习项目,主要通过这个项目来学习mahout的功能和使用方式。mahout是一款开源的机器学习算法,主要包括协同过滤推荐、聚类、分类等三大块内容。 推荐可以基于用户... -
Recommendation-with-mahout:与Maven + hadoop和mahout一起推荐
2021-05-15 20:20:01推荐搭配与Maven + hadoop和mahout一起推荐您可以从《行动中的Mahout》一书中了解更多信息。 -
mahout-sample:来自 Bronto Hackdays '14 的简单 mahout 示例代码库
2021-07-06 19:47:01驯象师样本 这是来自 Bronto Software Hackdays '14 的简单代码库。 该项目的目的是让自己熟悉 ,它不是很有趣。 (我的代码,就是这样。) -
基于mahout的协同过滤算法实现
2017-11-23 17:03:05基于mahout的协同过滤,个性化推荐算法实现。源码是java,可单机运行 -
mahout-examples-0.9-job.jar
2021-09-18 23:22:36mahout-examples-0.9-job.jar