本书以案例驱动的方式讲解机器学习算法的知识点,并以Python语言作为基础开发语言实现算法,包括目前机器学习主流算法的原理、算法流程图、算法的详细设计步骤、算法实例、算法应用、算法的改进与优化等环节。
全书共分 17 章,前两章介绍机器学习与 Python 语言的相关基础知识,后面各章以案例的方式分别介绍线性回归算法、逻辑回归算法、K *近邻算法、PCA 降维算法、k-means算法、支持向量机算法、AdaBoost算法、决策树算法、高斯混合模型算法、随机森林算法、朴素贝叶斯算法、隐马尔可夫模型算法、BP 神经网络算法、卷积神经网络算法、递归神经网络算法。
本书适合作为高等院校人工智能、大数据、计算机科学、软件工程等相关专业本科生和研究生有关课程的教材,也适用于各种计算机编程、人工智能学习认证体系,还可供广大人工智能领域技术人员参考。
前 言
2018年12月,DeepMind设计的基于Transformer神经网络和深度学习的人工智能程序 AlphaStar,在《星际争霸2》游戏中以5﹕0的成绩分别战胜两位职业选手,这是继AlphaGo 打败世界围棋冠军李世石以来,机器学习领域又一次震惊世界的壮举,为机器学习的发展历程又增添了一抹浓厚的色彩。
机器学习(Machine Learning,ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多学科。它专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,或者重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。
Python语言凭借语法简单、优雅、面向对象、可扩展性等优点,一经面世就受到广大开发者的追捧,这使得 Python 语言不仅提供了丰富的数据结构,还具有诸如 NumPy、SciPy、Matplotlib 等丰富的数据科学计算库,为机器学习的开发带来了极大的便利。因此,本书用 Python语言来编写机器学习算法。
书中对每一种机器学习算法都按照下列几个方面进行总结和描述。第一,简要介绍算法的原理,通过通俗易懂的语言描述和示例使读者对算法有一个大致的了解;第二,给出标准的算法流程图;第三,具体介绍算法的详细设计步骤,使读者对算法的理解更为深入;第四,为了加深读者对算法的熟练程度,针对每个算法举出示例;第五,将每个算法回归到日常生活的应用中,以提高读者对算法的灵活掌握程度;第六,结合当前的最新研究成果,对经典的机器学习算法提出改进与优化建议,为读者进一步研究算法提供新思路;第七,每一章的最后都对全章的内容进行总结,帮读者梳理整章知识;第八,课后习题的设置旨在帮助读者巩固算法的学习。
全书共分17章,第1和2章介绍机器学习与 Python 语言的相关概念与基础知识,第3~17章分别介绍了线性回归算法、逻辑回归算法、K最近邻算法、PCA 降维算法、k-means算法、支持向量机算法、AdaBoost算法、决策树算法、高斯混合模型算法、随机森林算法、朴素贝叶斯算法、隐马尔可夫模型算法、BP 神经网络算法、卷积神经网络算法、递归神经网络算法。
本书由多人合作完成,其中第1~4章由太原理工大学赵涓涓编写,第5~7章由太原理工大学强彦编写,第8和9章由太原理工大学王华编写,第10和11章由太原科技大学蔡星娟编写,第12和13章由太原理工大学降爱莲编写,第14和15章由太原理工大学田玉玲编写,第16和17章由太原理工大学马建芬编写。全书由赵涓涓审阅。
在本书撰写过程中,车征、王磐、王佳文、史国华、魏淳武、周凯、王梦南、王艳飞、吴俊霞、武仪佳、张振庆等项目组成员做了大量的资料准备、文档整理和代码调试工作,在此一并表示衷心的感谢!
由于作者水平有限,不当之处在所难免,恳请读者及同仁赐教指正。
编 者
2019年5月
前言
第1章 机器学习基础 1
1.1 引论 1
1.2 何谓机器学习 2
1.2.1 概述 2
1.2.2 引例 2
1.3 机器学习中的常用算法 4
1.3.1 按照学习方式划分 4
1.3.2 按照算法相似性划分 7
1.4 本章小结 14
1.5 本章习题 14
第2章 Python与数据科学 15
2.1 Python概述 15
2.2 Python与数据科学的关系 16
2.3 Python中常用的第三方库 16
2.3.1 NumPy 16
2.3.2 SciPy 17
2.3.3 Pandas 17
2.3.4 Matplotlib 18
2.3.5 Scikit-learn 18
2.4 编译环境 18
2.4.1 Anaconda 19
2.4.2 Jupyter Notebook 21
2.5 本章小结 23
2.6 本章习题 24
第3章 线性回归算法 25
3.1 算法概述 25
3.2 算法流程 25
3.3 算法步骤 26
3.4 算法实例 30
3.5 算法应用 32
3.6 算法的改进与优化 34
3.7 本章小结 34
3.8 本章习题 34
第4章 逻辑回归算法 37
4.1 算法概述 37
4.2 算法流程 38
4.3 算法步骤 38
4.4 算法实例 40
4.5 算法应用 45
4.6 算法的改进与优化 49
4.7 本章小结 49
4.8 本章习题 49
第5章 K最近邻算法 51
5.1 算法概述 51
5.2 算法流程 52
5.3 算法步骤 52
5.4 算法实例 53
5.5 算法应用 54
5.6 算法的改进与优化 57
5.7 本章小结 58
5.8 本章习题 58
第6章 PCA降维算法 59
6.1 算法概述 59
6.2 算法流程 60
6.3 算法步骤 60
6.3.1 内积与投影 60
6.3.2 方差 62
6.3.3 协方差 62
6.3.4 协方差矩阵 63
6.3.5 协方差矩阵对角化 63
6.4 算法实例 65
6.5 算法应用 67
6.6 算法的改进与优化 68
6.7 本章小结 68
6.8 本章习题 69
第7章 k-means算法 70
7.1 算法概述 70
7.2 算法流程 70
7.3 算法步骤 71
7.3.1 距离度量 71
7.3.2 算法核心思想 72
7.3.3 初始聚类中心的选择 73
7.3.4 簇类个数k的调整 73
7.3.5 算法特点 74
7.4 算法实例 75
7.5 算法应用 77
7.6 算法的改进与优化 81
7.7 本章小结 81
7.8 本章习题 82
第8章 支持向量机算法 84
8.1 算法概述 84
8.2 算法流程 85
8.2.1 线性可分支持向量机 85
8.2.2 非线性支持向量机 85
8.3 算法步骤 85
8.3.1 线性分类 85
8.3.2 函数间隔与几何间隔 87
8.3.3 对偶方法求解 88
8.3.4 非线性支持向量机与核函数 90
8.4 算法实例 93
8.5 算法应用 95
8.6 算法的改进与优化 100
8.7 本章小结 101
8.8 本章习题 101
第9章 AdaBoost算法 102
9.1 算法概述 102
9.2 算法流程 102
9.3 算法步骤 103
9.4 算法实例 105
9.5 算法应用 106
9.6 算法的改进与优化 109
9.7 本章小结 110
9.8 本章习题 110
第10章 决策树算法 112
10.1 算法概述 112
10.2 算法流程 113
10.3 算法步骤 113
10.3.1 两个重要概念 113
10.3.2 实现步骤 115
10.4 算法实例 115
10.5 算法应用 118
10.6 算法的改进与优化 119
10.7 本章小结 120
10.8 本章习题 120
第11章 高斯混合模型算法 121
11.1 算法概述 121
11.2 算法流程 121
11.3 算法步骤 122
11.3.1 构建高斯混合模型 122
11.3.2 EM算法估计模型参数 123
11.4 算法实例 125
11.5 算法应用 127
11.6 算法的改进与优化 129
11.7 本章小结 130
11.8 本章习题 130
第12章 随机森林算法 132
12.1 算法概述 132
12.2 算法流程 133
12.3 算法步骤 134
12.3.1 构建数据集 134
12.3.2 基于数据集构建分类器 134
12.3.3 投票组合得到最终结果并分析 135
12.4 算法实例 136
12.5 算法应用 140
12.6 算法的改进与优化 142
12.7 本章小结 143
12.8 本章习题 143
第13章 朴素贝叶斯算法 145
13.1 算法概述 145
13.2 算法流程 145
13.3 算法步骤 146
13.4 算法实例 148
13.5 算法应用 149
13.6 算法的改进与优化 151
13.7 本章小结 152
13.8 本章习题 152
第14章 隐马尔可夫模型算法 154
14.1 算法概述 154
14.2 算法流程 154
14.3 算法步骤 155
14.4 算法实例 156
14.5 算法应用 159
14.6 算法的改进与优化 165
14.7 本章小结 166
14.8 本章习题 166
第15章 BP神经网络算法 167
15.1 算法概述 167
15.2 算法流程 167
15.3 算法步骤 168
15.4 算法实例 170
15.5 算法应用 174
15.6 算法的改进与优化 176
15.7 本章小结 177
15.8 本章习题 177
第16章 卷积神经网络算法 179
16.1 算法概述 179
16.2 算法流程 179
16.3 算法步骤 180
16.3.1 向前传播阶段 181
16.3.2 向后传播阶段 183
16.4 算法实例 184
16.5 算法应用 188
16.6 算法的改进与优化 193
16.7 本章小结 194
16.8 本章习题 194
第17章 递归神经网络算法 196
17.1 算法概述 196
17.2 算法流程 197
17.3 算法步骤 198
17.4 算法实例 200
17.5 算法应用 204
17.6 算法的改进与优化 207
17.7 本章小结 208
17.8 本章习题 208
课后习题答案 210
参考文献 231