《Python与机器学习实战:决策树、集成学习、支持向量机与神经网络算法详解及编程实现》PDF

下载链接: https://pan.baidu.com/s/1lTl6z8Vv1LfIvdBjv16YpQ 密码: avij

  • 出版社: 电子工业出版社; 第1版 (2017年7月1日)
  • 平装: 315页
  • 语种: 简体中文
  • 开本: 16
  • ISBN: 9787121317200
  • 条形码: 9787121317200
  • 商品尺寸: 23 x 18.4 x 1.2 cm
  • 商品重量: 540 g
  • ASIN: B073LYTXNV

编辑推荐

算法与代码兼顾,理论与实践结合
很丰富:7种算法,50段实现,55个实例,总代码量5295行,全面而不冗余
很扎实:对经典有效的机器学习算法的核心内容进行了相当详细的推导
很应用:将理论实打实地用Python代码写出来,可以解决一定的任务
很前沿:叙述了TensorFlow框架、Inception-v3 from Google、迁移学习等前沿技术

作者简介

毕业于北京大学数学系,就职于北京霄飞亚科技有限公司,有10多年C语言开发经验,后来转做Python,对机器学习、神经网络、贝叶斯算法有深入研究。曾经参与过实时目标跟踪算法研究;行人检测及其python的实现;基于神经网络的目标检测算法研究。

目录

第1章 Python与机器学习入门 1
1.1机器学习绪论 1
1.1.1什么是机器学习 2
1.1.2机器学习常用术语 3
1.1.3机器学习的重要性 6
1.2人生苦短,我用Python 7
1.2.1为何选择Python 7
1.2.2Python在机器学习领域的优势 8
1.2.3Anaconda的安装与使用 8
1.3第一个机器学习样例 12
1.3.1获取与处理数据 13
1.3.2选择与训练模型 14
1.3.3评估与可视化结果 15
1.4本章小结 17
第2章 贝叶斯分类器 18
2.1贝叶斯学派 18
2.1.1贝叶斯学派与频率学派 19
2.1.2贝叶斯决策论 19
2.2参数估计 20
2.2.1极大似然估计(ML估计) 21
2.2.2极大后验概率估计(MAP估计) 22
2.3朴素贝叶斯 23
2.3.1算法陈述与基本架构的搭建 23
2.3.2MultinomialNB的实现与评估 31
2.3.3GaussianNB的实现与评估 40
2.3.4MergedNB的实现与评估 43
2.3.5算法的向量化 50
2.4半朴素贝叶斯与贝叶斯网 53
2.4.1半朴素贝叶斯 53
2.4.2贝叶斯网 54
2.5相关数学理论 55
2.5.1贝叶斯公式与后验概率 55
2.5.2离散型朴素贝叶斯算法 56
2.5.3朴素贝叶斯和贝叶斯决策 58
2.6本章小结 59
第3章 决策树 60
3.1数据的信息 60
3.1.1信息论简介 61
3.1.2不确定性 61
3.1.3信息的增益 65
3.1.4决策树的生成 68
3.1.5相关的实现 77
3.2过拟合与剪枝 92
3.2.1ID3、C4.5的剪枝算法 93
3.2.2CART剪枝 100
3.3评估与可视化 103
3.4相关数学理论 111
3.5本章小结 113
第4章 集成学习 114
4.1“集成”的思想 114
4.1.1众擎易举 115
4.1.2Bagging与随机森林 115
4.1.3PAC框架与Boosting 119
4.2随机森林算法 120
4.3AdaBoost算法 124
4.3.1AdaBoost算法陈述 124
4.3.2弱模型的选择 126
4.3.3AdaBoost的实现 127
4.4集成模型的性能分析 129
4.4.1随机数据集上的表现 130
4.4.2异或数据集上的表现 131
4.4.3螺旋数据集上的表现 134
4.4.4蘑菇数据集上的表现 136
4.5AdaBoost算法的解释 138
4.6相关数学理论 139
4.6.1经验分布函数 139
4.6.2AdaBoost与前向分步加法模型 140
4.7本章小结 142
第5章 支持向量机 144
5.1感知机模型 145
5.1.1线性可分性与感知机策略 145
5.1.2感知机算法 148
5.1.3感知机算法的对偶形式 151
5.2从感知机到支持向量机 153
5.2.1间隔最大化与线性SVM 154
5.2.2SVM算法的对偶形式 158
5.2.3SVM的训练 161
5.3从线性到非线性 163
5.3.1核技巧简述 163
5.3.2核技巧的应用 166
5.4多分类与支持向量回归 180
5.4.1一对多方法(One—vs—Rest) 180
5.4.2一对一方法(One—vs—One) 181
5.4.3有向无环图方法(DirectedAcyclicGraphMethod) 181
5.4.4支持向量回归(SupportVectorRegression) 182
5.5相关数学理论 183
5.5.1梯度下降法 183
5.5.2拉格朗日对偶性 185
5.6本章小结 187
第6章 神经网络 188
6.1从感知机到多层感知机 189
6.2前向传导算法 192
6.2.1算法概述 193
6.2.2激活函数(ActivationFunction) 195
6.2.3损失函数(CostFunction) 199
6.3反向传播算法 200
6.3.1算法概述 200
6.3.2损失函数的选择 202
6.3.3相关实现 205
6.4特殊的层结构 211
6.5参数的更新 214
6.5.1VanillaUpdate 217
6.5.2MomentumUpdate 217
6.5.3NesterovMomentumUpdate 219
6.5.4RMSProp 220
6.5.5Adam 221
6.5.6Factory 222
6.6朴素的网络结构 223
6.7“大数据”下的网络结构 227
6.7.1分批(Batch)的思想 228
6.7.2交叉验证 230
6.7.3进度条 231
6.7.4计时器 233
6.8相关数学理论 235
6.8.1BP算法的推导 235
6.8.2Softmax+log—likelihood组合 238
6.9本章小结 240
第7章 卷积神经网络 241
7.1从NN到CNN 242
7.1.1“视野”的共享 242
7.1.2前向传导算法 243
7.1.3全连接层(FullyConnectedLayer) 250
7.1.4池化(Pooling) 251
7.2利用TensorFlow重写NN 252
7.2.1反向传播算法 252
7.2.2重写Layer结构 253
7.2.3实现SubLayer结构 255
7.2.4重写CostLayer结构 261
7.2.5重写网络结构 262
7.3将NN扩展为CNN 263
7.3.1实现卷积层 263
7.3.2实现池化层 266
7.3.3实现CNN中的特殊层结构 267
7.3.4实现LayerFactory 268
7.3.5扩展网络结构 270
7.4CNN的性能 272
7.4.1问题描述 272
7.4.2搭建CNN模型 273
7.4.3模型分析 280
7.4.4应用CNN的方法 283
7.4.5Inception 286
7.5本章小结 289
附录A Python入门 290
附录B Numpy入门 303
附录C TensorFlow入门 310

序言

前言
自从AlphaGo在2016年3月战胜人类围棋顶尖高手李世石后,“人工智能”“深度学习”这一类词汇就进入了大众的视野;而作为更加宽泛的一个概念——“机器学习”则多少顺势成为了从学术界到工业界都相当火热的话题。不少人可能都想尝试和体验一下“机器学习”这个可以说相当神奇的东西,不过可能又苦于不知如何下手。编著本书的目的,就是想介绍一种入门机器学习的方法。虽然市面上已经有许多机器学习的书籍,但它们大多要么过于偏重理论,要么过于偏重应用,要么过于“厚重”;本书致力于将理论与实践相结合,在讲述理论的同时,利用Python这一门简明有力的编程语言进行一系列的实践与应用。
当然,囿于作者水平,本书实现的一些模型从速度上来说会比成熟的第三方库中实现的模型要慢不少。一方面是因为比较好的第三方库背后往往会用底层语言来实现核心算法,另一方面则是本书通常会把数据预处理的过程涵盖在模型中。以决策树模型为例,scikit-learn中的决策树模型会比本书实现的要快很多,但本书实现的模型能够用scikit-learn中决策树模型训练不了的训练集来训练。
同时,限于篇幅、本书无法将所有代码都悉数放出(事实上这样做的意义也不是很大),所以我们会略去一些相对枯燥且和相应算法的核心思想关系不大的实现。对于这些实现,我们会进行相应的算法说明,感兴趣的读者可以尝试自己一步一步地去实现,也可以直接在GitHub上面查看笔者自己实现的版本(GitHub地址会在相应的地方贴出)。笔者也建议在阅读本书之前先把这个链接里面的内容都下载下来作为参照。毕竟即使在本书收官之后,笔者仍然会不时地在上述链接中优化和更新相应的算法,而这些更新是无法反映在本书中的。
虽说确实可以完全罔顾理论来用机器学习解决许多问题,但是如果想要理解背后的道理并借此提高解决问题的效率,扎实的理论根基是必不可少的。本书会尽量避免罗列枯燥的数学公式,但是基本的公式常常不可或缺。虽然笔者想要尽量做到通俗易懂,但仍然还是需要读者拥有一定的数学知识。不过为了阅读体验良好,本书通常会将比较烦琐的数学理论及相关推导放在每一章的倒数第二节(最后一节是总结)作为某种意义上的“附加内容”。这样做有若干好处:
? 对于已经熟知相关理论的读者,可以不再重复地看同样的东西;
? 对于只想了解机器学习各种思想、算法和实现的读者,可以避免接受不必要的知识;
? 对于想了解机器学习背后道理和逻辑的读者,可以有一个集中的地方进行学习。
本书的特点
? 理论与实践结合,在较为详细、全面地讲解理论之后,会配上相应的代码实现以加深读者对相应算法的理解。
? 每一章都会有丰富的实例,让读者能够将本书所阐述的思想和模型应用到实际任务中。
? 在涵盖了诸多经典的机器学习算法的同时,也涵盖了许多最新的研究成果(比如最后一章所讲述的卷积神经网络(CNN)可以说就是许多“深度学习”的基础)。
? 所涉及的模型实现大多仅仅基于线性代数运算库(Numpy)而没有依赖更高级的第三方库,读者无须了解Python那浩如烟海的第三方库中的任何一个第三方库便能读懂本书的代码。
本书的内容安排
第1章 Python与机器学习入门
本章介绍了机器学习的概念和一些基础术语,比如泛化能力、过拟合、经验风险(ERM)和结构风险(SRM)等,还介绍了如何安装并使用Anaconda这一Python的科学运算环境。同时在最后,我们解决了一个小型的机器学习问题。本章内容虽不算多,却可说是本书所有内容的根基。
第2章 贝叶斯分类器
作为和我们比较熟悉的频率学派相异的学派,贝叶斯学派的思想相当耐人寻味,值得进行研究与体会。本章将主要介绍的朴素贝叶斯正是贝叶斯决策的一个经典应用,虽然它加了很强的假设,但其在实际应用中的表现仍然相当优异(比如自然语言处理中的文本分类)。而为了克服朴素贝叶斯假设过强的缺点,本章将简要介绍的,诸如半朴素贝叶斯和贝叶斯网这些贝叶斯分类器会在某些领域拥有更好的性能。
第3章 决策树
决策树可以说是最直观的机器学习模型之一,它多多少少拥有着信息论的一些理论背景作为支撑。决策树的训练思想简洁,模型本身可解读性强,本章将会在介绍其生成、剪枝等一系列实现的同时,通过一些可视化来对其有更好的理解。
第4章 集成学习
正所谓“三个臭皮匠,赛过诸葛亮”。集成学习的两大板块“Bootstrap”和“Boosting”所对应的主流模型——“随机森林(RandomForest)”和“AdaBoost”正是这句俗语的理想解释。本章在介绍相关理论与实现的同时,将会通过相当多的例子来剖析集成学习的一些性质。
第5章 支持向量机
支持向量机(SVM)有着非常辉煌的历史,它背后那套相当深刻而成熟的数学理论让它在现代的深度学习中“异军突起”之前,占据着相当重要的地位。本章将会尽量厘清支持向量机的思想与相关的比较简明的理论,同时会通过一些对比来体现支持向量机的优异之处。
第6章 神经网络
神经网络在近现代可以说已经成为“耳熟能详”的词汇了,它让不少初次听说其名号的人(包括笔者在内)对其充满着各种幻想。虽说神经网络算法的推导看上去烦复而“令人生畏”,但其实所用到的知识都并不深奥。本章会相当详细地介绍神经网络中的两大算法——“前向传导算法”和“反向传播算法”,同时还会介绍诸多主流的“参数更新方法”。除此之外,本章还会提及如何在“大数据”下改进和优化我们的神经网络模型(这一套思想是可以推广到其他机器学习模型上的)。
第7章 卷积神经网络
卷积神经网络是许多深度学习的基础结构,它可以算是神经网络的一种拓展。卷积神经网络的思想具有很好的生物学直观,适合处理结构性的数据。同时,利用成熟的卷积神经网络模型,我们能够比较好地完成许多具有一定难度而相当有趣的任务;本章则会针对这些任务中的“图像分类”任务,提出一套比较详细的解决方案。
本书由浅入深,理论与实践并存,同时更是将理论也进行了合理的分级;无论在此前对机器学习有何种程度的认知,想必都能通过不同的阅读方式有所收获吧。
适合阅读本书的读者
? 想要了解某些传统机器学习算法细节的学生、老师、从业者等。
? 想要知道如何“从零开始”高效实现机器学习算法的程序员。
? 想要了解机器学习算法能如何进行应用的职员、经理等。
? 对机器学习抱有兴趣并想要入门的爱好者。

编者 何宇健

文摘

版权页:



插图:




猜你喜欢

转载自blog.csdn.net/sinat_33899729/article/details/80224368