前言
PREFACE
在大量数据背后很可能隐藏了某些有用的信息或知识,而数据挖掘就是通过一定方法探寻这些信息或知识的过程。此外,数据挖掘同时受到很多学科和领域的影响,大体上看,数据挖掘可以被视为数据库、机器学习和统计学三者的交叉。简单来说,对数据挖掘而言,数据库提供了数据管理技术,而机器学习和统计学则提供了数据分析技术。
从名字中就不难看出,机器学习最初的研究动机是为了让计算机具有人类一样的学习能力以便实现人工智能。显然,没有学习能力的系统很难被认为是智能的。而这个所谓的学习,就是指基于一定的“经验”而构筑起属于自己的“知识”过程。
小蝌蚪找妈妈的故事很好地说明了这一过程。小蝌蚪没有见过自己的妈妈,它们向鸭子请教。鸭子告诉它们:“你们的妈妈有两只大眼睛。”看到金鱼有两只大眼睛,它们便把金鱼误认为是自己的妈妈。于是金鱼告诉它们:“你们妈妈的肚皮是白色的。”小蝌蚪看见螃蟹是白肚皮,又把螃蟹误认为是妈妈。螃蟹便告诉它们:“你们的妈妈有四条腿。”小蝌蚪看见一只乌龟摆动着四条腿在水里游,就把乌龟误认为是自己的妈妈。于是乌龟又说:“你们的妈妈披着绿衣裳,走起路来一蹦一跳。”在这个学习过程中,小蝌蚪的“经验”包括鸭子、金鱼、螃蟹和乌龟的话,以及“长得像上述四种动物的都不是妈妈”这样一条隐含的结论。最终,它们学到的“知识”就是“两只大眼睛、白肚皮、绿衣裳、四条腿,一蹦一跳的就是妈妈”。当然,故事的结局,小蝌蚪们就是靠着学到的这些知识成功地找到了妈妈。
反观机器学习,由于“经验”在计算机中主要是以“数据”的形式存在的,所以机器学习需要设法对数据进行分析,然后以此为基础构建一个“模型”,这个模型就是机器最终学到的“知识”。可见,小蝌蚪学习的过程是从“经验”学到“知识”的过程。相应地,机器学习的过程则是从“数据”学到“模型”的过程。正是因为机器学习能够从数据中学到“模型”,而数据挖掘的目的恰恰是找出数据背后的“信息或知识”,两者不谋而合,所以机器学习才逐渐成为数据挖掘最为重要的智能技术供应者而备受重视。
正如前面所说的,机器学习和统计学为数据挖掘提供了数据分析技术。而另一方面,统计学也是机器学习得以建立的一个重要基础。换句话说,统计学本身就是一种数据分析技术的同时,它也为以机器学习为主要手段的智能数据分析提供了理论基础。可见,统计学、机器学习和数据挖掘之间是紧密联系的。
统计学大师乔治·博克斯有一句广为人们提及的名言:“所有的模型都是错的,但其中一些是有用的。”无论是基于统计的方法,还是基于机器学习的方法,最终的模型都是对现实世界的抽象,而非毫无偏差的精准描述。相关理论只有与具体分析实例相结合才有意义。而在这个所谓的结合过程中,你既不能期待一种模型(或者算法)能够解决所有的(尽管是相同类型的)问题,也不能面对一组数据时,就能(非常准确地)预先知道哪种模型(或者算法)才是最适用的。或许你该记住另外一句话:“No clear reason to prefer one over another. Choice is task dependent(没有明确的原因表明一种方法胜于另外一种方法,选择通常是依赖于具体任务的)”。这也就突出了数据挖掘领域中实践的重要性,或者说由实践而来的经验的重要性。
以上所描述的观点正是激发本书写作初衷的核心理念。鉴于此,本书从统计学观点入手,并以统计分析理论为基础,进而对现代机器学习方法进行系统性的介绍。循序渐进,又兼收并蓄地将机器学习与统计分析中较为核心的理论与方法呈现给各位读者朋友。具体来说,本书主要涉及(但不限于)的内容有:
- 概率与数理统计基础,其中统计分析方法涉及参数估计、假设检验、极大似然法、非参数检验(含列联分析、符号检验、符号秩检验、秩和检验等)、方差分析方法等。
- 回归方法,包括线性回归、多元回归、多项式回归、非线性回归(含倒数模型、对数模型等)、岭回归,以及LASSO等。
- 监督学习与分类方法,包括感知机、逻辑回归(含最大熵模型)、朴素贝叶斯、决策树(含ID3、C4.5、CART)、支持向量机、人工神经网络等。
- 无监督学习与聚类方法,包括K均值算法、EM算法(含高斯混合模型)、密度聚类中的DBSCAN算法等。
- 蒙特卡洛采样方法,包括逆采样、拒绝采样、自适应拒绝采样、重要性采样、吉布斯采样和马尔科夫链蒙特卡洛等。
- 概率图模型基础,主要以贝叶斯网络为例进行介绍。
- 降维与流形学习,包括奇异值分解、主成分分析和多维标度法等。
- 附录部分还简述了机器学习中所必备的其他数学基础,包括拉格朗日乘数法、詹森不等式与凸优化、多元函数最优化、泛函空间理论(在解释核方法时会用到)等内容。
在叙述方式上,本书也注意从具体问题或实例入手,力求阐明问题提出的原委,从而由浅入深地阐明思路,并给出详细的数学推导过程,让读者知其然,更知其所以然。
此外,鉴于本书是以统计方法为切入点讲解机器学习理论的,在涉及数值计算、算法演示和数据分析应用时,我们特别选用R作为描述语言。R是当前在统计学领域占据统治地位的一种解释型语言。它语法简洁、容易上手,即使非专业人士也能轻松掌握。事实上,R语言在世界范围内的众多使用者绝大多数都来自于数学、统计学、应用经济学,以及生物信息学等其他非计算机领域。此外,R还是一种免费的、开源的数据分析集成环境。它拥有丰富而完善的软件包资源,甚至很多最新的算法都可以在R中找到对应的实现。更重要的是,由于R对很多算法提供了非常完善的封装,再加之其简单易用的特点,本书并不要求读者已经具备R编程方面的背景。即使从未使用过R语言的人依然可以阅读本书。
读者亦可以访问笔者在CSDN上的技术博客(白马负金羁),本博客主要关注机器学习、数据挖掘、深度学习及数据科学等话题,其中提供的很多技术文章可以作为本书的补充材料,供广大读者在自学时参考。读者在阅读本书时遇到的问题以及对本书的意见或建议,可以在本博客上通过留言的方式同笔者进行交流。
自知论道须思量,几度无眠一文章。由于时间和能力有限,书中纰漏在所难免,真诚地希望各位读者和专家不吝批评、斧正。
左 飞
2020年4月