新書推薦:
《
东欧史(全二册)-“中间地带”的困境
》
售價:HK$
227.7
《
虚拟资本:金融怎样挪用我们的未来
》
售價:HK$
79.4
《
刻意练习不生气
》
售價:HK$
40.3
《
大宋理财:青苗法与王安石的金融帝国(全彩插图本)
》
售價:HK$
112.7
《
安全感是内心长出的盔甲
》
售價:HK$
68.8
《
快人一步:系统性能提高之道
》
售價:HK$
113.9
《
我们为什么会做梦:让梦不再神秘的新科学
》
售價:HK$
79.4
《
算法图解(第2版)
》
售價:HK$
80.3
|
編輯推薦: |
算法与代码兼顾,理论与实践结合
很丰富:7种算法,50段实现,55个实例,总代码量5295行,全面而不冗余
很扎实:对经典有效的机器学习算法的核心内容进行了相当详细的推导
很应用:将理论实打实地用Python代码写出来,可以解决一定的任务
很前沿:叙述了TensorFlow框架、Inception-v3 from Google、迁移学习等前沿技术
|
內容簡介: |
Python与机器学习这一话题是如此的宽广,仅靠一本书自然不可能涵盖到方方面面,甚至即使出一个系列也难能做到这点。单就机器学习而言,其领域就包括但不限于如下:有监督学习(Supervised Learning),无监督学习(Unsupervised Learning)和半监督学习(Semi-Supervised Learning)。而具体的问题又大致可以分两类:分类问题(Classification)和回归问题(Regression)。Python本身带有许多机器学习的第三方库,但本书在绝大多数情况下只会用到Numpy这个基础的科学计算库来进行算法代码的实现。这样做的目的是希望读者能够从实现的过程中更好地理解机器学习算法的细节,以及了解Numpy的各种应用。不过作为补充,本书会在适当的时候应用scikit-learn这个成熟的第三方库中的模型。本书适用于想了解传统机器学习算法的学生和从业者,想知道如何高效实现机器的算法的程序员,以及想了解机器学习的算法能如何进行应用的职员、经理等。
|
關於作者: |
毕业于北京大学数学系,就职于北京霄飞亚科技有限公司,有10多年C语言开发经验,后来转做Python,对机器学习、神经网络、贝叶斯算法有深入研究。曾经参与过实时目标跟踪算法研究;行人检测及其python的实现;基于神经网络的目标检测算法研究。
|
目錄:
|
目录
第1章 Python与机器学习入门1
1.1机器学习绪论1
1.1.1什么是机器学习2
1.1.2机器学习常用术语3
1.1.3机器学习的重要性6
1.2人生苦短,我用Python7
1.2.1为何选择Python7
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框架与Boosting119
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间隔最大化与线性SVM154
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有向无环图方法(Directed Acyclic Graph Method)181
5.4.4支持向量回归(Support Vector Regression)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激活函数(Activation Function)195
6.2.3损失函数(Cost Function)199
6.3反向传播算法200
6.3.1算法概述200
6.3.2损失函数的选择202
6.3.3相关实现205
6.4特殊的层结构211
6.5参数的更新214
6.5.1Vanilla Update217
6.5.2Momentum Update217
6.5.3Nesterov Momentum Update219
6.5.4RMSProp220
6.5.5Adam221
6.5.6Factory222
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到CNN242
7.1.1视野的共享242
7.1.2前向传导算法243
7.1.3全连接层(Fully Connected Layer)250
7.1.4池化(Pooling)251
7.2利用TensorFlow重写NN252
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扩展为CNN263
7.3.1实现卷积层263
7.3.2实现池化层266
7.3.3实现CNN中的特殊层结构267
7.3.4实现LayerFactory268
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.5Inception286
7.5本章小结289
附录A Python入门290
附录B Numpy入门303
附录C TensorFlow入门310
|
內容試閱:
|
前言
自从AlphaGo在2016年3月战胜人类围棋顶尖高手李世石后,人工智能深度学习这一类词汇就进入了大众的视野;而作为更加宽泛的一个概念机器学习则多少顺势成为了从学术界到工业界都相当火热的话题。不少人可能都想尝试和体验一下机器学习这个可以说相当神奇的东西,不过可能又苦于不知如何下手。编著本书的目的,就是想介绍一种入门机器学习的方法。虽然市面上已经有许多机器学习的书籍,但它们大多要么过于偏重理论,要么过于偏重应用,要么过于厚重;本书致力于将理论与实践相结合,在讲述理论的同时,利用Python这一门简明有力的编程语言进行一系列的实践与应用。
当然,囿于作者水平,本书实现的一些模型从速度上来说会比成熟的第三方库中实现的模型要慢不少。一方面是因为比较好的第三方库背后往往会用底层语言来实现核心算法,另一方面则是本书通常会把数据预处理的过程涵盖在模型中。以决策树模型为例,scikit-learn中的决策树模型会比本书实现的要快很多,但本书实现的模型能够用scikit-learn中决策树模型训练不了的训练集来训练。
同时,限于篇幅、本书无法将所有代码都悉数放出(事实上这样做的意义也不是很大),所以我们会略去一些相对枯燥且和相应算法的核心思想关系不大的实现。对于这些实现,我们会进行相应的算法说明,感兴趣的读者可以尝试自己一步一步地去实现,也可以直接在GitHub上面查看笔者自己实现的版本(GitHub地址会在相应的地方贴出)。本书所涉及的所有代码都可以参见https:github.comcarefree0910MachineLearning,笔者也建议在阅读本书之前先把这个链接里面的内容都下载下来作为参照。毕竟即使在本书收官之后,笔者仍然会不时地在上述链接中优化和更新相应的算法,而这些更新是无法反映在本书中的。
虽说确实可以完全罔顾理论来用机器学习解决许多问题,但是如果想要理解背后的道理并借此提高解决问题的效率,扎实的理论根基是必不可少的。本书会尽量避免罗列枯燥的数学公式,但是基本的公式常常不可或缺。虽然笔者想要尽量做到通俗易懂,但仍然还是需要读者拥有一定的数学知识。不过为了阅读体验良好,本书通常会将比较烦琐的数学理论及相关推导放在每一章的倒数第二节(最后一节是总结)作为某种意义上的附加内容。这样做有若干好处:
? 对于已经熟知相关理论的读者,可以不再重复地看同样的东西;
? 对于只想了解机器学习各种思想、算法和实现的读者,可以避免接受不必要的知识;
? 对于想了解机器学习背后道理和逻辑的读者,可以有一个集中的地方进行学习。
本书的特点
? 理论与实践结合,在较为详细、全面地讲解理论之后,会配上相应的代码实现以加深读者对相应算法的理解。
? 每一章都会有丰富的实例,让读者能够将本书所阐述的思想和模型应用到实际任务中。
? 在涵盖了诸多经典的机器学习算法的同时,也涵盖了许多最新的研究成果(比如最后一章所讲述的卷积神经网络(CNN)可以说就是许多深度学习的基础)。
? 所涉及的模型实现大多仅仅基于线性代数运算库(Numpy)而没有依赖更高级的第三方库,读者无须了解Python那浩如烟海的第三方库中的任何一个第三方库便能读懂本书的代码。
本书的内容安排
第1章 Python与机器学习入门
本章介绍了机器学习的概念和一些基础术语,比如泛化能力、过拟合、经验风险(ERM)和结构风险(SRM)等,还介绍了如何安装并使用Anaconda这一Python的科学运算环境。同时在最后,我们解决了一个小型的机器学习问题。本章内容虽不算多,却可说是本书所有内容的根基。
第2章 贝叶斯分类器
作为和我们比较熟悉的频率学派相异的学派,贝叶斯学派的思想相当耐人寻味,值得进行研究与体会。本章将主要介绍的朴素贝叶斯正是贝叶斯决策的一个经典应用,虽然它加了很强的假设,但其在实际应用中的表现仍然相当优异(比如自然语言处理中的文本分类)。而为了克服朴素贝叶斯假设过强的缺点,本章将简要介绍的,诸如半朴素贝叶斯和贝叶斯网这些贝叶斯分类器会在某些领域拥有更好的性能。
第3章 决策树
决策树可以说是最直观的机器学习模型之一,它多多少少拥有着信息论的一些理论背景作为支撑。决策树的训练思想简洁,模型本身可解读性强,本章将会在介绍其生成、剪枝等一系列实现的同时,通过一些可视化来对其有更好的理解。
第4章 集成学习
正所谓三个臭皮匠,赛过诸葛亮。集成学习的两大板块Bootstrap和Boosting所对应的主流模型随机森林(RandomForest)和AdaBoost正是这句俗语的最佳解释。本章在介绍相关理论与实现的同时,将会通过相当多的例子来剖析集成学习的一些性质。
第5章 支持向量机
支持向量机(SVM)有着非常辉煌的历史,它背后那套相当深刻而成熟的数学理论让它在现代的深度学习中异军突起之前,占据着相当重要的地位。本章将会尽量厘清支持向量机的思想与相关的比较简明的理论,同时会通过一些对比来体现支持向量机的优异之处。
第6章 神经网络
神经网络在近现代可以说已经成为耳熟能详的词汇了,它让不少初次听说其名号的人(包括笔者在内)对其充满着各种幻想。虽说神经网络算法的推导看上去烦复而令人生畏,但其实所用到的知识都并不深奥。本章会相当详细地介绍神经网络中的两大算法前向传导算法和反向传播算法,同时还会介绍诸多主流的参数更新方法。除此之外,本章还会提及如何在大数据下改进和优化我们的神经网络模型(这一套思想是可以推广到其他机器学习模型上的)。
第7章 卷积神经网络
卷积神经网络是许多深度学习的基础结构,它可以算是神经网络的一种拓展。卷积神经网络的思想具有很好的生物学直观,适合处理结构性的数据。同时,利用成熟的卷积神经网络模型,我们能够比较好地完成许多具有一定难度而相当有趣的任务;本章则会针对这些任务中的图像分类任务,提出一套比较详细的解决方案。
本书由浅入深,理论与实践并存,同时更是将理论也进行了合理的分级;无论在此前对机器学习有何种程度的认知,想必都能通过不同的阅读方式有所收获吧。
适合阅读本书的读者
? 想要了解某些传统机器学习算法细节的学生、老师、从业者等。
? 想要知道如何从零开始高效实现机器学习算法的程序员。
? 想要了解机器学习算法能如何进行应用的职员、经理等。
? 对机器学习抱有兴趣并想要入门的爱好者。
编者 何宇健
|
|