本书旨在为有兴趣更好地理解数学和统计的学生提供一个可访问的、全面的教科书,这些数学和统计知识是数据科学和机器学习算法的基础。
译者序
学者贵知其当然与所以然,若偶能然,不得谓为学。 这是中国民主革命先驱孙中山警诫自己并勉励后人的学问之道。
我们正处于数据科学和机器学习蓬勃发展的时代,快速增长的海量数据给我们提供了源源不断的数字资源,日新月异的机器学习技术让我们能从中提取有用的价值,似乎人人都能分享时代发展的成果,又似乎很少有人能说清楚这背后的技术奥秘。在教学实践中,我们看到很多高校争先恐后地开设数据科学与人工智能专业,也发现很多学生自愿放弃传统优势专业,转攻数据科学、机器学习和人工智能等新兴学科。
了解机器学习的读者,一定听说过被无数人奉为经典,又很难啃的西瓜书《机器学习》。西瓜书的作者周志华曾经指出,研究的目的是发现新知识、发明新技术,而研发则是利用已有的知识和技术进行研制、开发。由于Python、ScikitLearn等相关软件的易用性,简单调用现成的机器学习算法确实能够解决一些问题,此谓知其然;而要真正把研究做深做精,写出有深度、有价值的好文章,一定要理解实际问题或机器学习算法背后的数学和统计知识,此谓知其所以然。
当你不满足于简单应用现成的工具和方法,当你在迷信机器学习方法是黑盒的假设,当你想真正理解数据科学和机器学习的算法思想时,本书就是为你精心准备,让你知其然也知其所以然的理想选择。本书系统地介绍了统计监督学习、无监督学习、回归、分类、决策树和集成学习以及当前最流行的深度学习等内容,其中交叉熵方法、蒙特卡罗方法等很多内容本身就是作者的原创成果,由作者自己介绍最合适。
本书的每一个定理都有严谨的证明,主要算法都通过伪代码描述了输入、输出及详细过程,全书配套简洁实用的Python代码,代码可以通过本书的GitHub主页下载使用。本书每一章都有丰富的配套习题,能够满足你进一步提升自我的需要,部分章节还给出了扩展阅读资料。另外,本书附录部分系统地介绍了线性代数、泛函分析、多元微分、优化问题和概率统计等数学基础知识。本书可以作为高等院校数据科学、机器学习和人工智能等学科高年级本科生或研究生的教材,也可以作为机器学习领域相关从业人员的参考书和工具书。
本书第3章和附录C由解放军信息工程大学刘楠副教授翻译,其余章节由河南工业大学人工智能与大数据学院于俊伟副教授翻译。本书翻译工作得到2021年度河南省重点研发与推广专项(科技攻关)(212102210152)、河南工业大学第二批青年骨干教师培育计划项目的资助。感谢机械工业出版社让我翻译这本优秀的作品。感恩为河南水灾、全国疫情无私奉献的所有人,是他们让我在困境中仍能安静地完成本书的翻译工作。由于译者水平有限,错误和疏漏在所难免,欢迎广大专家和读者提出宝贵意见。
于俊伟
2021年8月
前言
在当前自动化、云计算、算法、人工智能和大数据的世界中,很少有主题像数据科学和机器学习如此相关。它们的流行不仅在于它们对现实生活问题的适用性,还在于它们天然地融合了许多不同的学科,包括数学、统计、计算机科学与工程和金融。
对于开始学习这些主题的人来说,大量的计算方法和数学思想可能会让你不知所措。有些人可能只满足于学习如何将现成的算法应用于实际情况。但是,如果黑盒算法的假设被违背了,我们还能相信其结果吗?该如何调整算法?要真正理解数据科学和机器学习,重要的是理解其背后的数学和统计知识,以及由此产生的算法。
本书的目的是提供易于理解,但内容全面的数据科学和机器学习清单。它面向任何有志于更好地理解数学和统计学知识的人,这些知识是数据科学中丰富多样的思想和机器学习算法的基础。我们认为,虽然计算机语言更迭不息,但潜在的关键思想和算法将永远存在,并将成为未来发展的基础。
在开始介绍本书主题之前,我们想说几句撰写本书的哲学。这本书源于澳大利亚昆士兰大学和新南威尔士大学的数据科学和机器学习课程。教授这些课程时,我们注意到学生们不仅渴望学习如何应用算法,而且还渴望了解这些算法的工作原理。然而,许多现有的教科书要么背景知识(如测度论和泛函分析)太多,要么背景知识太少(大多都是黑箱算法),经常脱节和相互矛盾的网络资源又会造成信息过载,这使学生们更难逐步建立自己的知识体系。因此,我们想写一本关于数据科学和机器学习的书,将相关内容像故事一样串起来,并在附录中给出重要的故事背景。故事由浅入深,逐渐发展起来。附录包含了所有必要的背景知识,例如线性代数与泛函分析(附录A)、多元微分与优化问题(附录B)以及概率与统计(附录C)。此外,为了让抽象的思想变得生动,我们相信让读者看到理论直接转化为算法的实际实现过程是很重要的。经过深思熟虑,我们选择Python作为编程语言。Python是免费提供的,并已被许多数据科学和机器学习从业者选作编程语言。它有许多好用的数据操作包(通常从R语言移植而来),其设计让编程更容易。附录D对Python进行了详细介绍。
为了使本书篇幅合理,我们必须对主题做出选择。重要思想和各种概念之间的联系通过加粗字体来突出显示。关键定义和定理通过加框来突出显示。我们尽可能地提供了定理的证明。最后,我们非常重视数学符号。通常情况下,一旦用一致和简洁的符号系统表示,看似困难的想法会突然变得显而易见。我们使用不同的字体来区分不同类型的对象。向量、矩阵用黑斜体字母表示,如x和X,并通过大写和小写字母来区分随机向量和它们的值,例如X表示随机向量,x表示随机向量的值或结果。集合通常用书法体字母G、H来表示。概率和期望的符号分别是P和E。概率分布由无衬线字体表示,如Bin和Gamma,普遍使用的正态分布和均匀分布符号和除外。数学符号中汇总了最重要的符号和缩写。
数据科学为理解和处理数据提供了必要的语言和技术。它涉及数字数据的设计、收集、分析和解释,目的是提取模式和其他有用信息。机器学习与数据科学密切相关,它研究从数据中学习的算法和计算机资源的设计。本书内容的组织大致遵循数据科学项目研究的典型步骤:收集数据以获得要研究问题的相关信息;数据清洗、汇总和可视化;数据建模和分析;将模型的决策转化为关于研究问题的决策和预测。由于本书面向数学和统计学,因此重点将放在建模和分析上。
第1章首先介绍如何使用Python中的数据操作包pandas来读取、构造、汇总和可视化数据。虽然本章涵盖的内容不涉及数学知识,但它是数据科学的一个明显的切入点:更好地理解可用数据的性质。第2章介绍统计学习的主要内容。我们区分了监督学习和无监督学习技术,讨论了如何评估(无)监督学习方法的预测性能。统计学习的重要部分是数据建模,我们介绍了数据科学中各种有用的模型,包括正态线性模型、多元正态模型和贝叶斯模型。机器学习和数据科学中的许多算法都使用了蒙特卡罗方法,因此第3章介绍蒙特卡罗方法。蒙特卡罗方法可用于模拟、估计和优化。第4章介绍无监督学习,讨论诸如密度估计、聚类和主成分分析等方法。第5章介绍监督学习,解释许多回归模型背后的思想。在这一章,我们还描述了如何使用Python的statsmodels包来定义和分析线性模型。第6章在第5章的基础上提出了核方法和正则化的强大概念,利用再生核希尔伯特空间理论,使得第5章的基本思想得以巧妙地展开。第7章介绍分类任务,这种任务也属于监督学习框架,因此这章考虑各种分类方法,包括贝叶斯分类、线性判别分析和二次判别分析、K近邻和支持向量机。第8章探讨利用树结构进行回归和分类的通用方法。第9章探索神经网络和深度学习的工作原理,证明这些学习算法具有简单的数学解释。每章的结尾都提供了大量的练习。
每一章的Python代码和数据集可以从GitHub网站https://githubcom/DSMLbook下载。
致谢
第1章和第5章的一些Python代码改编自文献\[73\]。感谢Benoit Liquet提供这些代码,也感谢Lauren Jones将R代码转换成Python代码。
感谢所有通过评论、反馈和建议为本书做出贡献的人,他们是Qibin Duan、Luke Taylor、Rémi Mouzayek、Harry Goodman、Bryce Stansfield、Ryan Tongs、Dillon Steyl、Bill Rudd、Nan Ye、Christian Hirsch、Chris van der Heide、Sarat Moka、Aapeli Vuorinen、Joshua Ross、Giang Nguyen以及匿名的评论者。David Grubbs作为本书的编辑,他的专业精神和对细节的关注值得特别称赞。
本书在澳大利亚数学科学研究所2019年暑期班进行了测试,80多名优秀的高年级本科生(优等生)在Zdravko IBotev讲授的机器学习的数学方法课程中使用了本书。感谢他们提供宝贵的反馈意见。
特别感谢Robert Salomone、Liam Berry、Robin Carrick和Sam Daley,他们针对全书内容给出了非常详细的评论意见,并编写、改进了我们的Python代码。他们的热情、洞察力和善意的帮助是无价的。
当然,如果没有家人的爱心支持、耐心陪伴和鼓励,这些工作是不可能完成的,我们由衷地感谢他们。
本书得到了澳大利亚研究委员会数学与统计前沿卓越中心的资助,资助编号为CE140100049。
Dirk PKroese、Zdravko IBotev、
Thomas Taimre和Radislav Vaisman
布里斯班、悉尼
译者序
前言
数学符号
第1章导入、汇总和可视化
数据
11简介
12类型结构特征
13汇总表
14汇总统计量
15数据可视化
151定性变量绘图
152定量变量绘图
153双变量的数据可视化
16扩展阅读
17习题
第2章统计学习
21简介
22监督学习和无监督学习
23训练损失和测试损失
24统计学习中的权衡处理
25估计风险
251样本内风险
252交叉验证
26数据建模
27多元正态模型
28正态线性模型
29贝叶斯学习
210扩展阅读
211习题
第3章蒙特卡罗方法
31简介
32蒙特卡罗抽样
321生成随机数
322模拟随机变量
323模拟随机向量和随机
过程
324重采样
325马尔可夫链蒙特卡罗
33蒙特卡罗估计
331朴素蒙特卡罗
332自举法
333方差缩减
34蒙特卡罗优化
341模拟退火
342交叉熵方法
343分裂优化
344噪声优化
35扩展阅读
36习题
第4章无监督学习
41简介
42无监督学习的风险和损失
43期望大化算法
44经验分布和密度估计
45通过混合模型聚类
451混合模型
452混合模型的EM
算法
46向量量化聚类
461K均值
462通过连续多极值优化
进行聚类
47层次聚类
48主成分分析
481动机:椭球体的
主轴
482PCA和奇异值分解
49扩展阅读
410习题
第5章回归
51简介
52线性回归
53线性模型分析
531参数估计
532模型选择和预测
533交叉验证与预测残差
平方和
534样本内风险和赤池信
息准则
535分类特征
536嵌套模型
537决定系数
54正态线性模型的推理
541比较两个正态线性
模型
542置信区间和预测
区间
55非线性回归模型
56用Python实现线性模型
561建模
562分析
563方差分析
564置信区间和预测区间
565模型验证
566变量选择
57广义线性模型
58扩展阅读
59习题
第6章正则化和核方法
61简介
62正则化
63再生核希尔伯特空间
64再生核的构造
641通过特征映射构造
再生核
642根据特征函数构造
再生核
643利用正交特征构造
再生核
644通过核构造再生核
65表示定理
66平滑三次样条
67高斯过程回归
68核PCA
69扩展阅读
610习题
第7章分类
71简介
72分类评价指标
73基于贝叶斯规则的分类
74线性判别分析和二次判别
分析
75逻辑回归和softmax分类
76K近邻分类
77支持向量机
78使用ScikitLearn进行分类
79扩展阅读
710习题
第8章决策树和集成方法
81简介
82自顶向下的决策树构建方法
821区域预测函数
822分裂规则
823终止条件
824基本实现
83其他考虑因素
831二叉树与非二叉树
832数据预处理
833替代分裂规则
834类别变量
835缺失值
84控制树形
841代价复杂度剪枝
842决策树的优点和
局限性
85自举聚合
86随机森林
87提升法
88扩展阅读
89习题
第9章深度学习
91简介
92前馈神经网络
93反向传播
94训练方法
941速下降法
942LevenbergMarquardt
方法
943受限内存BFGS
方法
944自适应梯度法
95Python示例
951简单多项式回归
952图像分类
96扩展阅读
97习题
附录A线性代数与泛函分析
附录B多元微分与优化问题
附录C概率与统计
附录DPython入门
参考文献