机器学习专门研究计算机怎样模拟或实现人类的学习行为,它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。本书是一本机器学习的入门书,通过本书,学习者将初步理解主流的机器学习算法,并且可以用机器学习技术解决现实生活中的问题。只要有本科三年级以上的数学知识,会一种编程语言,就可以掌握本书的绝大部分内容。 本书共有15章,主要讲解经典的机器学习算法,如线性回归、逻辑回归、决策树等,同时讲解近几年才出现的算法,如XGBoost、LightGBM等集成学习算法。此外,本书还会讲解利用机器学习解决问题的实用技术,如Python、Scikitlearn工具的使用等。 本书配套有教学大纲、教学进度、教学课件、教学视频及习题,可以作为专科生、本科生、研究生的机器学习教材,也可以作为从事机器学习、数据挖掘相关工作的研究人员和技术人员的参考书。
l 本书内容全面丰富,通过本书,学习者将初步理解主流的机器学习算法,并且可以用机器学习技术解决现实生活中的问题。
l 内容编排和讲解围绕培养初学者入门机器学习,具有大量的案例和图解来讲解知识点及其应用,并给出详细分析和讨论。
l 本书配套的视频资源已经在中国大学慕课开放,首轮开课就达到1.1万人学习。
l 本书提供了教学大纲、教学进度、教学课件,并提供习题解答,同时提供了练习代码,可作为本科生、硕士生的教材,也可以作为专科生实践课教材。
机器学习(machine learning)是研究计算机怎样模拟或实现人类的学习行为的一门学科,以获取新的知识或技能,重新组织已有的知识结构,使之不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。
作为计算机系统结构专业的博士,本人一直致力于帮助机器学习初学者入门,主持和参与了很多国内外优秀作品的翻译、代码复现工作。比较有代表性的是吴恩达老师的机器学习课程的翻译工作及机器学习和深度学习笔记的撰写。
博士毕业后,本人成为一名大学教师,同时承担了本科生和研究生机器学习课程的教学工作。在教学过程中,本人学习和借鉴了国内外很多非常优秀的机器学习课程或作品(如吴恩达老师的机器学习课程、李航老师的《统计学习方法》、周志华老师的《机器学习》等)。站在巨人的肩膀上,本人决定写一本适合本科生和初学者的机器学习入门书。
本书初稿于2021年3月完成,并根据初稿的内容进行授课。经过3轮授课,本团队对其中的部分内容进行了调整,使其更适合初学者学习。同时,根据本书的内容,制作了慕课,通过中国大学慕课向读者开放,第一轮学习者超过1.1万人,属于比较热门的课程。
本书的课件和代码,已经分享在Github。同时,原版课件分享给了国内700多位大学教师,也收到了很多宝贵的意见。
本书定位为入门基础课,通过本书,学习者将初步理解主流的机器学习算法,并且可以用机器学习技术解决现实生活中的问题。
本书对初学者来说,属于雪中送炭,而不是锦上添花,更适合初学者学习,主要解决初学者的三个问题:
(1) 资料太多,难以取舍。
(2) 理论性强,初学比较困难。
(3) 代码资料比较少。
本书共有15章,本书结构大体分为监督学习和无监督学习两部分。监督学习部分介绍了多种常见的机器学习算法,如k近邻法(knearest neighbor,KNN)、线性回归、支持向量机(support vector machine,SVM)、神经网络、朴素贝叶斯、逻辑回归、集成学习等分类算法和回归算法。无监督学习部分则聚焦于聚类、降维、关联规则等几大问题,并对Kmeans、主成分分析(principal component analysis,PCA)等代表算法进行了介绍,还对关联规则的主要算法进行讲解。此外,本书的第2章为选修内容,讲解学习机器学习需要掌握的基本数学知识。
本书可以作为专科生、本科生、研究生的教材。作为本科生的教材时,第2章数学基础回顾和第11章人工神经网络可以作为选修部分,建议课时: 理论课32课时,实验课16~32课时。作为专科生的教材时,建议配合代码进行课程讲解,增加实验部分课时,减少理论部分课时,建议课时: 理论课32课时,实验课32课时。作为研究生的教材时,建议课时为36课时,实验部分建议自学。
本书的课件和教案,可以分享给在职的教师,若有需要可在公众号机器学习初学者留言。
在本书的编写过程中,得到了很多人的支持和帮助,如李航老师和徐亦达老师,他们对本人的工作十分支持,在此表示感谢!
本人水平有限,如有公式、算法错误,欢迎各位读者批评指正。
黄海广2023年1月7日
第1章引言1
1.1机器学习概述1
1.2机器学习发展史2
1.3机器学习的类型5
1.3.1监督学习5
1.3.2无监督学习7
1.3.3强化学习8
1.4机器学习的主要概念9
1.4.1模型9
1.4.2损失函数9
1.4.3优化算法10
1.4.4模型评估10
1.5机器学习的背景知识11
1.5.1数学基础11
1.5.2编程基础11
1.6机器学习的开发流程12
1.7本书概述13
1.7.1本书结构13
1.7.2学习路线14
习题14
参考文献16
第2章数学基础回顾(选修)17
2.1数学基础的必要性17
2.1.1数学基础概述17
2.1.2符号定义17
2.2高等数学18
2.2.1导数的定义18〖3〗机器学习入门基础(微课版)目录〖3〗2.2.2左右导数的几何意义和物理意义18
2.2.3函数的可导性与连续性之间的关系19
2.2.4平面曲线的切线和法线19
2.2.5四则运算法则19
2.2.6基本导数与微分表19
2.2.7复合函数、反函数、隐函数及参数方程所确定的函数的微分法20
2.2.8常用高阶导数公式20
2.2.9微分中值定理21
2.2.10泰勒公式21
2.2.11函数单调性的判断22
2.2.12函数凹凸性的判断23
2.3线性代数23
2.3.1基本概念23
2.3.2矩阵乘法24
2.3.3向量向量乘法25
2.3.4矩阵向量乘法25
2.3.5矩阵矩阵乘法26
2.3.6单位矩阵和对角矩阵27
2.3.7矩阵的转置28
2.3.8对称矩阵28
2.3.9矩阵的迹28
2.3.10矩阵求导常见公式29
2.3.11范数29
2.3.12线性相关性和秩30
2.3.13方阵的逆31
2.3.14正交阵31
2.3.15行列式31
2.3.16二次型和半正定矩阵32
2.3.17特征值和特征向量33
2.4概率论与数理统计34
2.4.1概率的基本要素34
2.4.2条件概率和独立性35
2.4.3随机变量35
2.4.4累积分布函数36
2.4.5概率质量函数37
2.4.6概率密度函数37
2.4.7期望38
2.4.8方差38
2.4.9一些常见的随机变量39
2.4.10联合分布和边缘分布41
2.4.11条件概率分布41
2.4.12贝叶斯定理41
2.4.13独立性42
2.4.14期望和协方差42
2.4.15KL散度43
2.5优化理论43
2.5.1梯度下降法43
2.5.2牛顿法44
2.5.3拉格朗日乘子法45
习题46
参考文献48
第3章机器学习库Scikitlearn49
3.1背景知识49
3.2Scikitlearn概述50
3.3Scikitlearn主要用法51
3.3.1基本建模流程51
3.3.2数据预处理53
3.3.3监督学习算法55
3.3.4无监督学习算法56
3.3.5评价指标57
3.3.6交叉验证及超参数调优58
3.4Scikitlearn总结60
习题60
参考文献62
第4章回归63
4.1线性回归63
4.1.1符号定义63
4.1.2背景知识66
4.1.3线性回归求解66
4.2最小二乘法66
4.3梯度下降67
4.3.1批梯度下降68
4.3.2随机梯度下降68
4.3.3小批量梯度下降69
4.3.4梯度下降的数学推导69
4.3.5梯度下降与最小二乘法比较70
4.4数据规范化70
4.4.1数据规范化概述70
4.4.2数据规范化的主要方式71
4.4.3数据规范化的适用范围71
4.5正则化72
4.5.1过拟合和欠拟合72
5.5.2过拟合的处理72
4.5.3欠拟合的处理73
4.5.4正则化的主要形式73
4.6回归的评价指标74
习题76
参考文献78
第5章逻辑回归79
5.1分类问题79
5.2Sigmoid函数80
5.2.1Sigmoid函数概述80
5.2.2Sigmoid函数的特点80
5.2.3Sigmoid函数的原理81
5.3逻辑回归82
5.3.1逻辑回归算法思想82
5.3.2逻辑回归的原理82
5.4逻辑回归算法总结85
习题86
参考文献88
第6章朴素贝叶斯89
6.1贝叶斯方法89
6.1.1先验概率、后验概率、联合分布89
6.1.2判别模型和生成模型90
6.2朴素贝叶斯原理90
6.2.1朴素贝叶斯概述90
6.2.2拉普拉斯平滑91
6.2.3朴素贝叶斯公式推导92
6.2.4朴素贝叶斯案例93
6.3朴素贝叶斯分类算法总结95
习题95
参考文献97
第7章机器学习实践99
7.1数据集划分99
7.1.1训练集、验证集和测试集划分99
7.1.2交叉验证100
7.1.3不平衡数据处理101
7.2评价指标103
7.2.1回归的评价指标103
7.2.2分类的评价指标103
7.2.3评价指标案例106
7.3正则化、偏差和方差107
7.3.1欠拟合和过拟合107
7.3.2正则化107
7.3.3偏差和方差109
习题111
参考文献113
第8章KNN算法115
8.1距离度量115
8.1.1欧几里得距离115
8.1.2曼哈顿距离116
8.1.3切比雪夫距离116
8.1.4闵可夫斯基距离117
8.1.5汉明距离117
8.1.6余弦相似度118
8.2KNN算法简介119
8.2.1KNN算法概述119
8.2.2KNN算法流程120
8.3KD树划分120
8.3.1KD树概述120
8.3.2KD树划分案例121
8.4KD树搜索124
8.4.1KD树搜索概述124
8.4.2KD树搜索案例125
习题126
参考文献128
第9章决策树129
9.1决策树原理129
9.1.1决策树概述129
9.1.2决策树算法思想130
9.2ID3算法130
9.2.1ID3算法概述130
9.2.2ID3划分标准131
9.2.3ID3算法总结133
9.3C4.5算法133
9.3.1C4.5算法概述133
9.3.2C4.5划分标准134
9.3.3C4.5剪枝处理134
9.3.4C4.5算法总结138
9.4CART算法139
9.4.1CART算法概述139
9.4.2CART分类树139
9.4.3CART回归树142
9.4.4CART剪枝处理142
9.4.5CART算法总结142
9.5决策树总结143
9.5.13种决策树算法的差异143
9.5.2决策树的优缺点143
习题144
参考文献146
第10章集成学习147
10.1集成学习概述147
10.1.1Bagging147
10.1.2Boosting148
10.1.3Stacking148
10.2随机森林149
10.2.1随机森林算法思想149
10.2.2随机森林算法总结150
10.3AdaBoost算法150
10.3.1AdaBoost算法思想150
10.3.2AdaBoost算法总结152
10.4GBDT算法153
10.4.1GBDT算法思想154
10.4.2GBDT算法总结156
10.5XGBoost算法156
10.5.1XGBoost算法思想156
10.5.2XGBoost算法推导158
10.5.3XGBoost算法总结161
10.6LightGBM算法161
10.6.1LightGBM算法思想162
10.6.2LightGBM算法总结166
习题167
参考文献169
第11章人工神经网络(选修)171
11.1人工神经网络概述171
11.2感知机模型172
11.2.1感知机模型概述172
11.2.2感知机算法流程172
11.3反向传播算法173
11.3.1反向传播算法概述173
11.3.2反向传播算法流程174
11.3.3反向传播算法总结178
习题179
参考文献182
第12章支持向量机183
12.1支持向量机概述183
12.1.1算法思想183
12.1.2背景知识184
12.2线性可分支持向量机185
12.2.1算法思想185
12.2.2求解步骤186
12.3线性支持向量机188
12.3.1松弛变量188
12.3.2求解步骤188
12.4线性不可分支持向量机190
12.4.1算法思想190
12.4.2核技巧190
12.4.3常用核函数191
12.4.4支持向量机的超参数191
12.5支持向量机算法总结192
12.5.1支持向量机普遍使用的准则192
12.5.2算法优缺点193
习题193
参考文献195
第13章聚类196
13.1聚类概述196
13.1.1无监督学习概述196
13.1.2聚类算法思想196
13.1.3聚类的背景知识198
13.2Kmeans聚类199
13.2.1Kmeans算法思想199
13.2.2Kmeans算法总结203
13.3密度聚类204
13.3.1DBSCAN算法概述204
13.3.2DBSCAN算法思想205
13.3.3DBSCAN算法总结208
13.4层次聚类208
13.4.1层次聚类概述208
13.4.2聚合聚类209
13.4.3分裂聚类209
13.4.4层次聚类算法总结210
13.5聚类的评价指标210
13.5.1均一性210
13.5.2完整性211
13.5.3Vmeasure211
13.5.4轮廓系数211
13.5.5调整兰德系数212
习题212
参考文献214
第14章降维215
14.1降维概述215
14.1.1维数灾难215
14.1.2降维概述215
14.2奇异值分解216
14.2.1SVD概述216
14.2.2SVD的算法思想217
14.2.3SVD的算法案例219
14.2.4SVD的一些应用220
14.3主成分分析222
14.3.1PCA概述222
14.3.2PCA算法思想222
14.3.3PCA算法案例225
14.3.4PCA算法总结225
习题226
参考文献229
第15章关联规则230
15.1关联规则概述230
15.2Apriori算法231
15.2.1Apriori算法概述231
15.2.2Apriori算法思想232
15.2.3Apriori算法案例232
15.2.4Apriori算法总结235
15.3FPGrowth算法235
15.3.1FPGrowth算法概述235
15.3.2FPGrowth算法思想235
15.3.3FPGrowth算法案例236
15.3.4FPGrowth算法总结240
15.4ECLAT算法240
15.4.1ECLAT算法概述240
15.4.2ECLAT算法思想241
15.4.3ECLAT算法总结241
习题242
参考文献244