没有合适的资源?快使用搜索试试~ 我知道了~
MahoutInAction中文完整版.pdf
4星 · 超过85%的资源 需积分: 50 153 下载量 200 浏览量
2015-10-20
14:27:48
上传
评论
收藏 1.12MB PDF 举报
温馨提示
试读
46页
Apache顶级项目Mahout,基于Hadoop的分布式机器学习框架Mahout中文完整版文档。
资源推荐
资源详情
资源评论
mahout in action
中文翻译 第
1
章 初识
mahout
mahout in action 中文翻译
1. 初识 Mahout
本章涵盖以下内容:
Apache Mahout 是什么?
现实中推荐系统引擎、聚类、分类概述
配置 mahout
读者可能从本书的标题中依然知晓,本书是一本使用的工具书,讲解如何将
mahout 应用于业界。Mahout 是 Apache 开源的机器学习库。它实现的算法都被归
入机器学习或者集体智慧的范畴,但是在这里 Mahout 主要注重协同过滤/推荐引
擎、聚类和分类。
Mahout 是可伸缩的。Mahout 致力于实现海量数据,单机无法处理情况下的机器
学习工具。在目前阶段,这种可伸缩性由 java 实现,有些部分基于 Apache Hadoop
这个分布式计算框架实现。
Mahout 是 java 库。它不支持用户接口,预装好的服务器。以及安装等功能。它
是一个利于开发者使用的工具框架。
1.1 Mahout 适合你吗?
你也许想知道-Mahout 是一个什么工程,或者是一本什么书?
如果你在找一本机器学习的教材,那本书就不适合了。本书没有尝试去全面解释
各种算法和展现技术的理论基础和来源。阅读本书可以,但不保证,能够对机器
学习技术,类似矩阵、向量等相关概念的熟悉。
如果你正在开发现代智能应用,那本书很适合。这本书提供了一种实践非理论的
处理方式,有完整的实例、解决方法指南。这本书在展示 Mahout 如何展示解决
这些问题的时候,证明了一些被有经验的开发者收集的独特见解。
如果你是一个人工智能、机器学习以及相关领域的研究者,也适合用本书。你最
大的挑战就是将一个新算法代码实现,Mahout 提供了一个丰富的框架,模式集
合以及测试、部署大规模新算法的现成模块。这本书是一张快车票,让你的机器
学习算法运行在复杂的分布式计算框架上。
如果你正在领导一个产品团队或者初创公司想利用机器学习创造竞争优势,这本
书也适合你。通过真实世界的例子,这本书可以启发你很多技术可能有多种实 现
方式的想法。它可以帮助你充满斗志的技术团队成员直接跳到很划算的实现能处
理大量数据的应用,而在放在以前必须组织大量的技术资源才可以实现。
最后,你可能想知道怎么读“Mahout” – 这是一个常用的英式,它与“trout”
押韵。这是一个北印度语的单词,指的是驱使大象的人,为了解释这个词,下面
介绍一段关于它的历史。Mahout 项 目开始于 2008 年,作为 Apache Lucene 的
子项目,Apache Lucene 项目是大家熟知的开源搜索引擎。Lucene 提供了搜索、
文本挖掘和信息检索的高级实现。在计算机科学领域,这些概念和机器学习技术
近似,像 聚类、分类。所以,Lucene 贡献者的一部分机器学习相关工作被剥离
进入子项目。不久后,Mahout 吸收进“Taste”开源协同过滤的项目。
自 2010.4 月起,Mahout 成为 Apache 的顶级项目。
Mahout 的大量工作不只是传统的实现这些算法,也实现将这些算法,让它们工
作在 hadoop 之上。Hadoop 的吉祥物是一头大象,这也解释了 Mahout 的工程名
字。
图 1. Mahout 以及相关项目 (见附件)
Mahout 孵化了相当多的技术和算法,很多都是在开发和实验阶段。在工程的早
期阶段,有 3 个核心主题:协同过滤/推荐引擎、聚类和分类。这并不是 Mahout
中所有内容,但却是最显著、成熟的主题(在本书写作时),因此,这是本书的
范围。
如果你读了以上内容,说明你已经对这 3 个系列的技术有潜在的兴趣。但是为以
防万一,请继续阅读下面的内容。
mahout 实战 第 1 章 初识 mahout 1.2 推荐系统引擎
1.2 推荐系统引擎
推荐引擎是目前我们使用的机器学习技术中最容易识别的。你可能已经见过相关
的服务或网页,基于历史行为推荐书、电影、文档。他们尝试推论出用户偏好,
并标记出用户不知晓的、感兴趣的 item:
Amazon.com 可能是最出名的使用推荐系统商务网站。基于交易和网页活
性,Amazon 推荐给用户可能感兴趣的书籍和其他 item。请参见图 1.2(见
附件)
Netflix 类似于推荐用户感兴趣的 DVDs,并且为研究者提供百万大奖去提
升推荐质量。
约会网站像 Líbímseti 将一部分用户推荐给其他用户。
社交网络网站像 Facebook 用推荐技术的变形来为用户识别最可能成为一
个尚未建立联系的朋友。
对于 Amazon 和示例其他网站,通过这种聪明的交叉销售,推荐系统确实有具体
的经济价值,同一家公司的报告指出推荐产品给用户能够带来 8-12%的销售增长。
http://www.practicalecommerce.com/articles/1942-10-Questions-on-Produ
ct-Recommendations
1.3 聚类
Clustering turns up in less apparent but equally well-known contexts.
(首句该如何翻译,哪位仁兄帮个忙?)
顾名思义,聚类技术尝试去将大量的拥有相同相似度的事物聚集到不同的类中。
聚类是在海量或者难于理解的数据集里发现层次和顺序,展现兴趣模式,或使得
数据集容易被理解。
Google News 据为了根据具备逻辑性的故事聚集展示新闻,而不是所有文
章的行列表,使用新闻文章的 Topic 聚集新闻。图 1.3 做了说明(见附件)。
搜索引擎像 Clusty 基于相同的原因聚集搜索结果。
使用聚类技术,基于消费者属性,收入、位置、购买习惯,可将不用用户
分到不用的类中。
1.4 分类
分类技术用于决定一个事物是不是属于一种类型、类目,或者该事物是不是含有
某些属性。同样地,分类无处不在,尽管更多的时候隐于幕后。
这些系统通过评估 item 的很多实例来学习,以推导出分类规则。这个平常的想
法可以找到很多应用:
Yahoo! Mail 决定接收的信息是不是垃圾邮件,基于先前邮件和用户的垃
圾邮件报告,以及邮件的特性。一些信息被分类为垃圾邮件,如图 1.4
所示(见附件)。
Picasa (http://picasa.google.com/)和其他的照片管理应用可以判断
一张照片中是否含有人脸。
光学字符识别软件通过将小区域作为独立字符来分类,将扫描文本的若干
小区域归类到独立的字符上。
在 iTunes 中 Apple’s Genius feature 使用分类将歌曲划分到不同的潜
在播放列表。
分类有助于判断一个新进入事物是否匹配先前发现的模式, 也常用于分类行为
或者模式。分类也可用来检测可疑的网络活动或欺诈。也可用于根据用户发信息
判定表示失望或者满意。
1.5 扩展性
当有海量、高质量的数据输入时,这些技术都能够达到最佳效果。在一些情况下,
这些技术不仅要将海量数据作为输入,而且需要很快计算出结果。很快,这些因
素使得可扩展性成为一个很大的问题。
依据一些粗略估计,Picasa 在 3 年前可能已经拥有 5 亿张照片。这意味着每天
需要分析数百万图片。分析一张图片并不是一个大问题,尽管需要重复数百万次。
但是,学习阶段需要亿万图片都提供相关信息 — 上了规模的计算,使用单机是
不行的。
http://blogoscoped.com/archive/2007-03-12-n67.html
依据一个类似的分析,Google News 大约每天有 350 万新文章。尽管数量并不是
很大,考虑到这些文章必须和目前其他文章同时聚类,为了及时响应计算时间需
要在几分钟内。
Netflix 为 Netflix 大奖发布的子集中包含 1 亿的打分。这只是适合竞赛的数据,
据推测,Netflix 实际上拥有的和必须用于创建推荐系统的整个数据远远大于这
个这个量级。
http://archive.ics.uci.edu/ml/machine-learning-databases/netflix/
这些技术非常有必要应用于输入数据量很大的情形–因为很大,所有不适用于单
机处理,甚至高配置的机器也不可以。所以,任何人实现这些技术都不能回避 可
扩展性问题。这就是为什么 Mahout 将可扩展性作为最高优先级,也是为何本书
关注可扩展性问题,别人所没有涉猎的一种方式,用于有效处理海量数据。
复杂的机器学习技术,上规模的应用,直到目前为止,只是一些大的、先进的技
术公司在考虑。但是,今天计算能力已经比之前廉价,借助像 Hadoop 这 样的开
源框架更方便。Mahout 尝试通过使用 hadoop 提供优质、开源实现,能够在这个
规模上解决问题,解决这类困惑,并且将其送到所有技术组织的手 中。
1.5.1 MapReduce and Hadoop
Mahout 的一些部分使用了 Apache hadoop 工程,hadoop 是一个开源的、基于 java
的 MapReduce(http://labs.google.com/papers/mapreduce.html ) 实现。
MapReduce 是一种分布式计算框架,在 Google 内部使用。它是一种编程模式,
开始听起来感觉很奇怪,或者太简单了以至于很强大。 MapReduce 编程模式适
用于输入是 key-value 键值对集合的问题。“map”函数将这些键值对转换为中
间键值对。“Reduce”函数通过某 种方式将同一个中间键的值合并到一起并产
出结果。实际上,很多问题可以设计成 MapReduce 问题,或者他们的一个系列。
并且这种模式非常易于并行化实 现:所有的处理过程都是独立的,所以可以划
分到不同机器上去。这里不再详细叙述 MapReduce,hadoop 提供的教程
(http://hadoop.apache.org/common/docs/current/mapred_tutorial.html )。
Hadoop 实现了 MapReduce 模式,这是一个不小的壮举,甚至让 MapReduce 像听
起来那么简单。它管理输入数据、中间键值对、输 出数据的存储。这些数据可
能是海量的,需要在多台计算机上运行,而不只是存储在某一台机器的本地。它
管理不同机器之间的划分、数据传输。它负责检测、恢复 单个机器失败的情况。
理解了有很多工作在幕后进行能够帮助你准备使用 Hadoop 的相对复杂性。不只
是将它作为类库添加到你的工程中,它包含很多模块,每 一个模块都有若干类
库和独立的服务器进程,可能运行在几台机器上。基于 Hadoop 的操作处理不简
单,但投入在可扩展的、分布式实现可以让你在之后有很大 的收获:因为你的
数据可能成倍的增长,这种可扩展的性质对你的应用来说是一种面向未来的方式。
稍后,本书将试着剪掉一些复杂性让你很快熟悉 hadoop,基于这一点,你可以
探索操作完整聚类的重点和细节,调整整个框架。因为这个需要大量 计算能力
的复杂框架变的越来越流行,所以一点都不奇怪,云计算已经开始提供 hadoop
相关的支持。例如 Amazon 提供的 Elastic
MapReduce(http://aws.amazon.com/elasticmapreduce/ )是一种管理 Hadoop
集群、提供计算能力、提供友好的接口的服务,可基于 hadoop 操作、监控大规
模复杂任务。
剩余45页未读,继续阅读
深思熟虑的先生
- 粉丝: 2
- 资源: 19
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页