首页>参考读物>计算机科学与技术>综合

Python大规模机器学习
作者 : [荷]巴斯蒂安·贾丁(Bastiaan Sjardin) [意]卢卡·马萨罗(Luca Massaron) [意]阿尔贝托·博斯凯蒂(Alberto Boschetti)著
译者 : 王贵财 刘春明 译
出版日期 : 2019-04-24
ISBN : 978-7-111-62314-4
定价 : 89.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 312
开本 : 16
原书名 : Large Scale Machine Learning with Python
原出版社: Packt Publishing Ltd.
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书不仅介绍大规模机器学习的基本概念,还包含丰富的案例研究。书中所选皆为最实用的技术和工具,而对理论细节不进行深入讨论,旨在提供大规模机器学习方法(甚至非常规方法)。不管是初学者、普通用户还是专家级用户,通过本书都能理解并掌握利用Python进行大规模机器学习。为让读者快速掌握核心技术,本书由浅入深讲解大量实例,图文并茂呈现每一步的操作结果,帮助读者更好地掌握大规模机器学习Python工具。例如:基于Scikit-learn可扩展学习、 Liblinear和Vowpal Wabbit快速支持向量机、基于Theano与H2O的大规模深度学习方法、TensorFlow深度学习技术与在线神经网络方法、大规模分类和回归树的可扩展解决方案、大规模无监督学习(PCA,聚类分析和主题建模等)扩展方法、Hadoop和Spark分布式环境、Spark机器学习实践以及Theano和GPU计算的基础知识。

图书特色

图书前言

“拥有大脑的好处在于:一个人可以学习,无知可以变成有知,点滴知识可以逐渐汇聚成江海”
——Douglas Hofstadter
机器学习属于人工智能范畴,其目的是基于现有数据集(训练集)来寻找函数,以便以尽可能高的正确性预测先前未见过的数据集(测试集)的结果,这通常以标签和类别的形式(分类问题)或以连续值的形式(回归问题)出现。在实际应用中,机器学习的具体实例包括预测未来股票价格,或从一组文件中对作者性别进行分类,等等。本书介绍最重要的机器学习概念和适合更大数据集的方法,并通过Python的实际示例向读者进行讲解。主要讨论监督学习(分类和回归),以及适用于更大数据集的无监督学习,比如主成分分析(PCA)、聚类和主题建模。
谷歌、Facebook和优步等大型IT公司都声称它们成功地大规模应用了这样的机器学习方法,从而引起世界轰动。随着大数据的出现和适用性提高,对可扩展机器学习解决方案的需求呈指数增长,导致许多其他公司甚至个人也已经开始渴望在大数据集中挖掘隐藏的相关性成果。不幸的是,大多数学习算法都不能很好扩展,会在台式计算机或较大的计算集群上导致CPU和内存过载。因此,即使大数据的炒作高峰已经过去,但可扩展机器学习解决方案并不充裕。
坦率地说,仍然需要解决许多瓶颈问题,即便是很难归类为大数据的数据集也如此(有的数据集高达2GB甚至更大)。本书的任务是提供合适的方法(有时甚至是非常规方法),以便大规模应用最强大的开源机器学习方法,而无须昂贵的企业解决方案或大型计算集群。通过本书,读者可以学习使用Python和其他一些可用的解决方案(这些方案与可扩展的机器学习流水线能很好地集成)。阅读这本书是一次旅程,它将让你对机器学习有一个全新的了解,从而为你开始真正的大数据分析奠定基础。
本书涵盖的内容
第1章以正确视角提出可扩展机器学习的问题,以便你熟悉本书中将要使用的工具。
第2章讨论采用随机梯度下降(SGD)策略减少内存消耗,它基于非核心学习的主题。另外演示各种数据的不同处理技术,例如散列技巧。
第3章介绍流算法,它能够以支持向量机的形式发现非线性。我们将介绍目前Scikit-learn的替代方法,如LIBLINEAR和Vowpal Wabbit,虽然它们以外部shell命令运行,但很容易用Python脚本封装和定向。
第4章为在Theano框架中应用深度神经网络以及使用H2O进行大规模处理提供有用策略。尽管这是个热门话题,但成功应用它会相当困难,更别说提供可扩展的解决方案。另外,还将学习使用theanets包中的自动编码器实现无监督的预训练。
第5章介绍有趣的深度学习技术与在线神经网络方法。虽然TensorFlow还处于起步阶段,但该框架提供了非常不错的机器学习解决方案。此外,还将详解如何在TensorFlow环境中使用Keras卷积神经网络功能。
第6章详解随机森林、梯度增强和XGboost的可扩展解决方案。CART是分类和回归树的缩写,它是一种通常应用于集成方法框架的机器学习方法。我们还将演示使用H2O的大规模应用实例。
第7章深入介绍无监督学习、PCA、聚类分析和主题建模方法,并使用正确方法对它们进行扩展。
第8章学习如何在虚拟机环境中设置Spark,以便从单台机器转移到网络计算范例。Python很容易在机器集群上集成并能增强我们的工作效率,因此很容易利用Hadoop集群的能力。
第9章演示使用Spark处理数据和在大数据集上构建预测模型的所有重要环节。
附录介绍GPU和Theano,包括Theano和GPU计算的基础知识。如果你的系统允许,还将帮助读者学习相关安装和环境配置,以便在GPU上使用Theano。
本书要求
运行书中代码示例需要在macOS、Linux或Microsoft Windows上安装Python 27或更高版本。
书中示例经常使用Python的基本功能库,例如SciPy、NumPy、Scikitlearn和StatsModels,并且在某种程度上使用matplotlib和pandas进行科学和统计计算。也会使用称为H2O的非核心云计算应用程序。
本书需要Jupyter及其Python内核驱动的Notebooks,本书使用最新版本41。
第1章将为设置Python环境、核心库以及全部必需工具提供所有分步说明和某些技巧。
本书读者
本书适合数据科学从业者、开发人员以及计划使用大型复杂数据集的读者。 我们努力让本书拥有尽可能好的可读性,以便适合更多读者。 考虑到本书主题非常先进,我们建议读者先熟悉基本的机器学习概念,如分类和回归、误差最小化函数和交叉验证等,但不严格要求读者必须这样做。本书假设读者了解Python、Jupyter Notebooks和命令行运行,并有一定的数学基础,能够掌握书中的各种大型解决方案背后的概念。本书写作风格也适合使用其他语言(R、Java和MATLAB)的程序员。 理想情况下,非常适合(但不限于)熟悉机器学习并有兴趣使用Python的数据科学家,因为相比于R或MATLAB而言,Python在计算、内存和I/O方面有优势。
排版约定
书中代码块设置如下:

大多数示例中使用Jupyter Notebooks,所以希望在包含代码块的单元中始终带有输入(标记为In:),并通常带有输出(标记为Out:)。在你的计算机上,只需输入In:后面的代码,并检查结果是否与Out:后面的内容相对应:

在终端命令行中给出命令时,会带有前缀$>,否则,如果是Python REPL,则以>>>开头:

表示警告或重要说明。
表示提示和技巧。
下载示例代码及彩色图像
本书的示例代码及所有截图和样图,可以从http://wwwpacktpubcom通过个人账号下载,也可以访问华章图书官网http://wwwhzbookcom,通过注册并登录个人账号下载。
还可以从GitHub获取本书代码:
https://githubcom/PacktPublishing/LargeScaleMachineLearningWithPython。

上架指导

计算机/人工智能/机器学习

封底文字

随着大数据的兴起,对计算及算法效率的需求不断增加。本书介绍一组新的机器学习算法,它们能够满足这类扩展需求,并提高预测准确性。本书首先介绍可扩展的机器学习算法,这些算法的可扩展性可分为三级:第一级是可用于台式计算机的加速算法;第二级是较新算法,专门为可扩展性而设计,可以处理更大的文件;第三级涉及在大数据环境中进行机器学习。本书还将介绍基于Hadoop中的MapReduce框架和Python中的Spark进行高效机器学习的新技术。
通过阅读本书,你将学习:
应用可扩展性较好的机器学习算法
使用较新的大规模机器学习技术
以深度学习和可扩展数据处理技术来提高预测准确性
在Spark中使用MapReduce框架
通过Spark和Hadoop应用有效的机器学习算法
构建强大的可扩展集成
通过单机处理极端大型数据集,使用数据流训练线性和非线性预测模型

译者序

机器学习属于人工智能范畴。随着大数据的出现和适用性提高,尽管计算机硬件条件发生改善,但对机器学习算法效率的要求并未降低,对可扩展机器学习解决方案的需求呈指数增长,这使得人们仍然需要解决大多数学习算法扩展性较差、CPU和内存过载等问题。然而扩展机器学习解决方案并不多,因此大数据既给大规模机器学习带来机遇,也带来挑战。
Python是一种通用的编程语言,广泛用于科学计算、数据分析与人工智能领域。Python具有高效、灵活、开源、功能丰富、可扩展性强、表达力强和较高的可移植性等特点,利用Python进行大规模机器学习不失为明智之举。
为此,本书不仅介绍大规模机器学习的基本概念,还包含丰富的案例研究。书中所选皆为最实用的技术和工具,而对理论细节未进行深入讨论,以便提供大规模机器学习方法(甚至非常规方法)。不管是初学者、普通用户还是专家级用户,通过本书都能理解并掌握如何利用Python进行大规模机器学习。为了让读者快速掌握核心技术,本书由浅入深讲解大量实例,图文并茂呈现每一步的操作结果,帮助读者更好地掌握大规模机器学习的Python工具。例如,基于Scikit-learn可扩展学习、 Liblinear和Vowpal Wabbit快速支持向量机、基于Theano与H2O的大规模深度学习方法、TensorFlow深度学习技术与在线神经网络方法、大规模分类和回归树的可扩展解决方案、大规模无监督学习(PCA、聚类分析和主题建模等)扩展方法、Hadoop和Spark分布式环境、Spark机器学习实践以及Theano和GPU计算的基础知识。
本书作者致力于人工智能和数据分析领域的研究,为世界各地的公司和政府机构构建过数据科学和人工智能项目,积累了十多年的实践经验。在翻译过程中,我为作者对利用Python进行大规模机器学习的深入掌握和独到见解而深感惊讶,并由衷赞叹。同时,对我而言这也是一个学习与提高的过程。为做到专业词汇权威准确,内容忠实原书,译者查阅了大量资料,但因水平有限,加上时间仓促,错误和疏漏在所难免,恳请读者及时指出,以便再版时予以更正。翻译分工如下:中南大学地球科学与信息物理学院刘春明负责第1章以及附录,河南工业大学信息科学与工程学院王贵财负责其余章节。
本书的翻译工作得到湖南省自然科学基金资助项目(2015JJ2151)、河南省高校科技创新团队支持计划“面向领域大数据的分布式计算技术”(17IRTSTHN011)、河南省高等学校重点科研项目资助计划(18A4300111)和河南工业大学校科研基金“青年支持计划”(2016QNH29)的资助。感谢参与本书资料整理的河南工业大学信息科学与工程学院郭浩、李欣欣、胡志明与李美玲等同学。特别感谢机械工业出版社编辑老师的帮助,他们的辛勤工作提高了本译著的质量。感谢家人对我的支持与鼓励,感谢儿子禾禾给予我的精神支持,让我对从事科技工作更加坚定和执着。

王贵财
2019年1月

图书目录

译者序
前言
作者简介
审校者简介
第1章迈向可扩展性的第一步1
11详细解释可扩展性1
111大规模实例3
112介绍Python4
113使用Python进行向上扩展4
114使用Python进行向外扩展5
12Python用于大规模机器学习6
121选择Python 2还是Python 36
122安装Python7
123逐步安装7
124安装软件包8
125软件包升级9
126科学计算发行版10
127Jupyter/IPython介绍11
13Python包13
131NumPy14
132SciPy14
133pandas14
134Scikitlearn15
135小结21
第2章Scikitlearn中的可扩展学习22
21非核心学习22
211选择子采样23
212一次优化一个实例24
213构建非核心学习系统25
22流化源数据25
221处理真实数据集26
222第一个示例——流化共享单车数据集28
223使用pandas I/O工具30
224使用数据库31
225关注实例排序35
23随机学习37
231批处理梯度下降37
232随机梯度下降40
233Scikitlearn的SGD实现40
234定义SGD学习参数42
24数据流的特征管理43
241描述目标46
242哈希技巧49
243其他基本变换51
244流测试和验证52
245使用SGD52
25小结56
第3章实现快速SVM57
31测试数据集58
311共享单车数据集58
312森林覆盖类型数据集58
32支持向量机59
321hinge loss及其变形64
322Scikitlearn的SVM实现65
323探究通过子采样改善非线性SVM68
324使用SGD实现大规模SVM70
33正则化特征选择77
34SGD中的非线性78
35超参数调整82
36小结96
第4章神经网络与深度学习97
41神经网络架构98
411神经网络如何学习106
412选择正确的架构110
413使用神经网络111
414sknn并行化111
42神经网络和正则化113
43神经网络和超参数优化115
44神经网络和决策边界117
45用H2O进行规模化深度学习120
451用H2O进行大规模深度学习121
452H2O上的网格搜索124
46深度学习和无监督预训练126
47使用theanets进行深度学习126
48自动编码器和无监督学习128
49小结131
第5章用TensorFlow进行深度学习132
51TensorFlow安装134
52在TensorFlow上使用SkFlow进行机器学习140
53安装Keras和TensorFlow148
54在TensorFlow中通过Keras实现卷积神经网络152
541卷积层153
542池化层153
543全连接层154
55增量CNN方法156
56GPU计算156
57小结159
第6章大规模分类和回归树160
61bootstrap聚合162
62随机森林和极端随机森林163
63随机搜索实现快速参数优化167
64CART和boosting172
65XGBoost179
651XGBoost回归181
652XGBoost流化大型数据集184
653XGBoost模型存储185
66用H2O实现非核心CART185
661H2O上的随机森林和网格搜索186
662H2O上的随机梯度增强和网格搜索188
67小结191
第7章大规模无监督学习192
71无监督方法192
72特征分解:PCA193
721随机化PCA199
722增量PCA200
723稀疏PCA201
73使用H2O的PCA202
74K-均值聚类算法203
741初始化方法206
742K-均值假设206
743选择最佳K209
744扩展K-均值算法:小批量212
75用H2O实现K-均值216
76LDA218
77小结226
第8章分布式环境——Hadoop和Spark227
81从单机到集群227
82设置VM230
821VirtualBox230
822Vagrant232
823使用VM232
83Hadoop生态系统234
831架构234
832HDFS235
833MapReduce242
834YARN250
84Spark250
85小结260
第9章Spark机器学习实践261
91为本章设置虚拟机261
92跨集群节点共享变量262
921广播只读变量262
922累加器只写变量264
923广播和累加器的示例265
93Spark的数据预处理267
931JSON文件和Spark DataFrame268
932处理缺失数据270
933在内存中分组和创建表271
934将预处理的DataFrame或RDD写入磁盘273
935使用Spark DataFrame274
94Spark机器学习276
941Spark处理KDD99数据集277
942读取数据集277
943特征工程280
944训练学习器284
945评估学习器的表现286
946机器学习管道的威力286
947手动优化288
948交叉验证291
95小结293
附录介绍GPU和Theano294

教学资源推荐
作者: 徐洁磐 李臣明 史九林 编著
作者: (美)Maurice Herlihy布朗大学(以)Nir Shavit 著   特拉维夫大学
作者: 尤克 常敏慧
作者: 徐志军 尹廷辉
参考读物推荐
作者: 麦思博(msup) 编
作者: (美)James Shore Shane Warden 著
作者: (美) Greg Conti 著
作者: (美) Matthew A. Russell 著