Mahout简介

article/2025/10/9 22:20:18

Mahout简介

一、mahout是什么

Apache Mahout是ApacheSoftware Foundation (ASF)旗下的一个开源项目,提供了一些经典机器学习的算法,皆在帮助开发人员更加方便快捷创建智能应用程序。目前已经有了三个公共发型版本,通过ApacheMahout库,Mahout可以有效地扩展到云中。Mahout包括许多实现,包括聚类、分类、推荐引擎、频繁子项挖掘。

Apache Mahout的主要目标是建立可伸缩的机器学习算法。这种可伸缩性是针对大规模的数据集而言的。Apache Mahout的算法运行在ApacheHadoop平台下,他通过Mapreduce模式实现。但是,Apache Mahout并非严格要求算法的实现基于Hadoop平台,单个节点或非Hadoop平台也可以。Apache Mahout核心库非分布式算法也具有良好的性能。

mahout主要包含以下5部分

频繁挖掘模式:挖掘数据中频繁出现的项集。

聚类:将诸如文本、文档之类的数据分成局部相关的组。

分类:利用已经存在的分类文档训练分类器,对未分类的文档进行分类。

推荐引擎(协同过滤):获得用户的行为并从中发现用户可能喜欢的事物。

频繁子项挖掘:利用一个项集(查询记录或购物记录)去识别经常一起出现的项目。

 

二、mahout历史

Apache Mahout起源于2008,经过两年的发展,2010年4ApacheMahout最终成为了Apache的顶级项目。Mahout 项目是由 ApacheLucene(开源搜索)社区中对机器学习感兴趣的一些成员发起的,他们希望建立一个可靠文档翔实可伸缩的项目,在其中实现一些常见的用于集群分类的机器学习算法。该社区最初基于 Ng et al. 的文章 “Map-Reduce for MachineLearning on Multicore”, 但此后在发展中又并入了更多广泛的机器学习方法。

Mahout 的目标还包括:

(1)、建立一个用户和贡献者社区,使代码不必依赖于特定贡献者的参与或任何特定公司和大学的资金。

(2)、专注于实际用例,这与高新技术研究及未经验证的技巧相反。

(3)、提供高质量文章和示例。

 

三、mahout的特性

虽然在开源领域中相对较为年轻,但 Mahout 已经提供了大量功能,特别是在集群CF 方面。(集群与CF概念模糊可看文章第四节)

Mahout 的主要特性包括:
  Taste CF。Taste 是 Sean Owen 在 SourceForge 上发起的一个针对 CF 的开源项目,并在 2008 年被赠予 Mahout。
  一些支持 Map-Reduce 的集群实现包括 k-Means、模糊 k-Means、Canopy、Dirichlet 和 Mean-Shift。
  Distributed Naive Bayes 和Complementary Naive Bayes 分类实现。
  针对进化编程的分布式适用性功能。
  Matrix 和矢量库。

上述算法的示例。

 

四、mahout当前已实现的三个具体的机器学习任务

它们正好也是实际应用程序中相当常见的三个领域:

协作筛选

集群

分类

先从概念的层面上更加深入地讨论这些任务。

1)、协作筛选

协作筛选(CF) 是 Amazon 等公司极为推崇的一项技巧,它使用评分、单击和购买等用户信息为其他站点用户提供推荐产品。CF 通常用于推荐各种消费品,比如说书籍、音乐和电影。但是,它还在其他应用程序中得到了应用,主要用于帮助多个操作人员通过协作来缩小数据范围。您可能已经在 Amazon 体验了 CF 的应用。

CF 应用程序根据用户和项目历史向系统的当前用户提供推荐。生成推荐的 4 种典型方法如下:

基于用户:通过查找相似的用户来推荐项目。由于用户的动态特性,这通常难以定量。

基于项目:计算项目之间的相似度并做出推荐。项目通常不会过多更改,因此这通常可以离线完成。

Slope-One:非常快速简单的基于项目的推荐方法,需要使用用户的评分信息(而不仅仅是布尔型的首选项)。

基于模型:通过开发一个用户及评分模型来提供推荐。

所有 CF 方法最终都需要计算用户及其评分项目之间的相似度。可以通过许多方法来计算相似度,并且大多数 CF 系统都允许您插入不同的指标,以便确定最佳结果。

2)、集群

对于大型数据集来说,无论它们是文本还是数值,一般都可以将类似的项目自动组织,或集群, 到一起。举例来说,对于全美国某天内的所有的报纸新闻,您可能希望将所有主题相同的文章自动归类到一起;然后,可以选择专注于特定的集群和主题,而不需要阅读大量无关内容。另一个例子是:某台机器上的传感器会持续输出内容,您可能希望对输出进行分类,以便于分辨正常和有问题的操作,因为普通操作和异常操作 会归类到不同的集群中。

与 CF 类似,集群计算集合中各项目之间的相似度,但它的任务只是对相似的项目进行分组。在许多集群实现中,集合中的项目都是作为矢量表示在 n维度空间中的。通过矢量,开发人员可以使用各种指标(比如说曼哈顿距离、欧氏距离或余弦相似性)来计算两个项目之间的距离。然后,通过将距离相近的项目归类到一起,可以计算出实际集群。

可以通过许多方法来计算集群,每种方法都有自己的利弊。一些方法从较小的集群逐渐构建成较大的集群,还有一些方法将单个大集群分解为越来越小的集群。在发展成平凡集群表示之前(所有项目都在一个集群中,或者所有项目都在各自的集群中),这两种方法都会通过特定的标准退出处理。流行的方法包括 k-Means 和分层集群。如下所示,Mahout 也随带了一些不同的集群方法。

3)、分类

分类(通常也称为 归类)的目标是标记不可见的文档,从而将它们归类不同的分组中。机器学习中的许多分类方法都需要计算各种统计数据(通过指定标签与文档的特性相关),从而创建一个模型以便以后用于分类不可见的文档。举例来说,一种简单的分类方法可以跟踪与标签相关的词,以及这些词在某个标签中的出现次数。然后,在对新文档进行分类时,系统将在模型中查找文档中的词并计算概率,然后输出最佳结果并通过一个分类来证明结果的正确性。

分类功能的特性可以包括词汇、词汇权重(比如说根据频率)和语音部件等。当然,这些特性确实有助于将文档关联到某个标签并将它整合到算法中。

机器学习这个领域相当广泛和活跃。理论再多终究需要实践。

 

五、mahout下载

1、官网地址

http://mirrors.cnnic.cn/apache/mahout/0.9/

下载 mahout-distribution-0.9.tar.gz

2、所有版本下载地址

http://archive.apache.org/dist/mahout/

 

在这里可以下载所有mahout版本。

 

 

 

参考文档:

Hadoop实战 第二版 陆嘉恒

http://baike.baidu.com/view/4029457.htm?fr=aladdin

http://www.ibm.com/developerworks/cn/java/j-mahout/#resources


http://chatgpt.dhexx.cn/article/w8S5ViKF.shtml

相关文章

推荐系统 Mahout入门之简单使用

Mahout: Apache Mahout 是 Apache Software Foundation(ASF)旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout项目目前已经有了多个公共发行…

Mahout介绍和简单应用

Mahout学习(主要学习内容是Mahout中推荐部分的ItemCF、UserCF、Hadoop集群部署运行) 1.Mahout是什么? Mahout是一个算法库,集成了很多算法。 Apache Mahout 是 Apache Software Foundation(ASF)旗下的一个开源项目&…

脚手架开发流程

先把原理讲通,方便后续的开发。 后续都拿vue-cli举例 脚手架实现原理 为什么全局安装vue/cli后会添加的命令为vue?全局安装vue/cli时发生了什么?执行vue命令时发生了什么?为什么vue指向一个js文件,我们却可以直接通过…

ns2模拟仿真实验

内容: 编写TCL脚本,搭建如下图所示的一个网络,共6个节点,其中2、3节点用做ftp服务器和客户端,4、5节点用做cbr流量的源和目的,而0、1节点用做转发设备。各节点间的链路属性见图。 模拟时间设为13秒钟&#…

NS2网络仿真环境的搭建和使用

一实验概述: 1学会安装和使用NS2;熟悉NS2的文档结构;掌握NS2的仿真环境、使用界面和操作方法。 2学会安装NS2仿真环境和配置。 3了解NS2的工作原理和程序组成。 4熟悉NS2中的脚本语言Tcl和Otcl 5学习分裂对象模型和TclCL 6NS的时间调度机制学习。 …

NS2的NODE类——node

本文转自:http://hi.baidu.com/wirelesscat/blog/item/67c6db4633f71e016b63e59b.html 同时推荐一个很好的博客,这里有连载的 ns2 仿真问题,感谢大牛~~~ 博客地址:http://hi.baidu.com/wirele…

NS2问题解决

问题一: When configured, ns found the right version of tclsh in /usr/bin/tclsh8.6 but it doesnt seem to be there anymore, so ns will fall back on running the first tclsh in your path. The wrong version of tclsh may break the test suites. Reconfi…

NS2简单介绍

NS是一种针对网络技术的源代码公开的、免费的软件模拟平台,研究人员使用它可以很容易的进行网络技术的开发,而且发展到今天,它所包含的模块已经非常丰富,几乎涉及到了网络技术的所有方面。所以,NS成了目前学术界广泛使…

NS2网络仿真

NS2安装与配置TCP/UDP比较仿真静态/动态路由仿真 1.安装与配置 1.1更新系统 sudo apt-get update #更新源列表 sudo apt-get upgrade #更新已经安装的包 sudo apt-get dist-upgrade #更新软件,升级系统 1.2安装ns2需要的几个包 sudo apt-get install build-ess…

ns2安装详细过程与网络仿真

ns2安装详细过程与网络仿真 博客分类: Networks TclLinuxUnixGCCVC 简单的说,NS-2是一个网络模拟器,所以经常被用到网络课的教学中。 NS-2是OpenSource的,最早的版本是在linux/unix下运行的,后来有了wi…

NS2教程

柯老师的NS2新网址 Due to some reasons, my NS2 website is sometimes donw and unavailable for many users. Therefore, I provide another backup website. 1. NS2 http://csie.nqu.edu.tw/smallko/ns2/ns2.htm 2. old_NS2 (backup of NS2 Learning Guide) http://csie.n…

ns2安装和若干问题的解决方法

文章目录 1. 安装与配置2. 安装nam3. 配置环境变量4. 检查是否能够成功运行参考资料 在安装ns2的过程中遇到了很多问题,为了记录这些问题和为同样遇到这些问题的朋友提供思路,写下这篇博文。 安装ns2和nam主要分为如下几个步骤: 安装与配置…

Linux下安装ns2

最近为了项目需要用到NS2软件用于网络仿真实验,从Windows到Linux折腾了我将近一周的时间。在Windows装了卸、卸了装十几遍还是不成功,最后放弃了,回到了Linux系统,又折腾了两天终于安装测试成功!(安装其实蛮…

企业微信第三方扫码登录

为什么写这个文章 公司后台突然需要扫码登录,网上的企业微信扫码都是基于自建应用的扫码登录,对第三方的扫码并没有多加介绍 概述 企业微信的管理员和成员,可通过单点登录机制,登录到第三方网站。第三方可通过接口,…

微信第三方登录有两种登录方式, 1. 微信开放平台登录 2. 微信公众平台授权登录?

https://www.v2ex.com/amp/t/390333 微信开放平台登录与微信公众平台授权登录区别在哪? 2017-09-13 12:05:41 08:00 xoxo419 微信第三方登录有两种登录方式, 1. 微信开放平台登录 2. 微信公众平台授权登录? 问: 两者区别在哪? 壹号店 http://m.yhd.com 微信第三方登录属…

Android APP微信第三方登录踩坑 - 微信开放平台修改应用包名后微信第三方登录失败

在微信开放平台注册移动应用,才能在APP里实现「微信登录」和「微信支付」。 近期因为业务需要,需要修改应用的包名,因此在微信开发平台重新提交了应用「基本信息」修改申请,顺便吐槽下,现在微信开发平台对应用审核真是…

微信第三方登录redirect_uri 参数错误

微信第三方登录 先说解决方案:redirect_uri 参数错误 在开放平台设置好回调地址,例如地址是 www.niezhiliang.com 那么在生成二维码的时候回调只能写该域名下的地址 在申请二维码页面回调地址(你的redirect_uri) 还必须加上http或者https,…

微信第三方登录接口

随着手机微信的崛起,腾讯发布的微信联登确实很诱惑pc端的伙伴们,现在就说说在pc端用微信扫一扫实现微信第三方登陆的方式。 第一步:获取AppID AppSecret(不做解释,自己去微信公众平台申请) 第二步:生成扫描二维码&…

微信 第三方登录

转自:http://www.cnblogs.com/linjunjie/p/6378166.html#3902595 从http://www.cnblogs.com/v-weiwang/p/5732423.html 申请开发者账号之内的就不累赘了,网上一大堆: 说下需求,一个网页要在三类容器运行,公司app&#…

微信第三方登录

微信第三方登录 步骤: 1.申请你的AppID 请到微信开放平台https://open.weixin.qq.com/注册成为开发者,然后创建应用并提交审核,只有审核通过的应用才能进行开发。 2.下载SDK及API文档 Android Studio环境下: 在build.gradle文件…