经典统计理论和机器学习方法为数据挖掘提供了必要的分析技术。本书系统地介绍统计分析和机器学习领域中最为重要和流行的多种技术及其基本原理,在详解有关算法的基础上,结合大量R语言实例演示了这些理论在实践中的使用方法。具体内容被分成三个部分,即R语言编程基础、基于统计的数据分析方法以及机器学习理论。统计分析与机器学习部分又具体介绍了参数估计、假设检验、极大似然估计、非参数检验方法(包括列联分析、符号检验、符号秩检验等)、方差分析、线性回归(包括岭回归和Lasso方法)、逻辑回归、支持向量机、聚类分析(包括K均值算法和EM算法)和人工神经网络等内容。同时,统计理论的介绍也为深化读者对于后续机器学习部分的理解提供了很大助益。知识结构和阅读进度的安排上既兼顾了循序渐进的学习规律,亦统筹考虑了夯实基础的必要性。本书内容与实际应用结合紧密,又力求突出深入浅出、系统翔实之特色,对算法原理的解释更是细致入微。
整合R语言深藏不漏的强大威力,决胜数据分析之巅
且听我将统计学之精髓娓娓道来,助你砥砺大数据时代的掘金技法
探寻数据挖掘之术,拨开机器学习迷雾,点破公式背后的层层玄机
前言
数据——蕴藏巨大财富的宝藏
19世纪中叶,英国伦敦曾经爆发过一场规模很大的霍乱。由于彼时人们对霍乱的致病机理还不甚了解,因此疫情在很长一段时间内都无法得到有效的控制。英国医师约翰?斯诺用标点地图的方法研究了当地水井分布和霍乱患者分布之间的关系,发现有一口水井周围,霍乱患病率明显较高,借此找到了霍乱暴发的原因:一口被污染的水井。关闭这口水井之后,霍乱的发病率明显下降。这便是数据分析在历史上展示其威力的一次成功案例。
毋庸置疑,数据是一座巨大的宝藏,而我们要做的恰恰就是挖掘这座宝藏。特别是进入信息时代以来,“大数据”这个概念更是越来越多地被人们提及。很多国家甚至把大数据提升到国家战略的高度。例如,我国的“十三五”规划建议中就提出:“实施国家大数据战略,推进数据资源开放共享。”
尽管“大数据”这个名词听起来很时髦,但是由此反映出来的对于数据本身的重视却并不是一个多么新鲜的现象。中国古代的施政治国观念中就非常强调掌握数据的重要性。例如商鞅变法中就提出,“强国知十三数……欲强国,不知国十三数,地虽利,民虽众,国愈弱至削”。
随着时代的进步,人们对于数据的重视程度更是有增无减,世界各国,概莫能外。列宁就曾经说过:“有许多问题,而且是涉及现代国家经济制度和这种制度之发展的最根本问题……如果不根据某个一定的纲要收集并经统计专家综合的关于某一国家全国情况的浩繁材料,就无法加以比较并认真地研究。”毛主席也曾指出:“胸中有‘数’。就是说,对情况和问题一定要注意到它们的数量方面,要有基本的数量分析。任何质量都表现为一定的数量,没有数量也就没有质量。”
“大数据时代,统计学依然是数据分析灵魂。”
人民网在2015年7月曾经以《大数据时代,统计学依然是数据分析灵魂》为题刊发了一篇对某位知名专家的访谈。其间,这位专家就形象地说道:“大数据是‘原油’而不是‘汽油’,不能被直接拿来使用。就像股票市场,即使把所有的数据都公布出来,不懂的人依然不知道数据代表的信息。”同时该篇文章也引用了美国加州大学伯克利分校迈克尔?乔丹教授的观点: “没有系统的数据科学作为指导的大数据研究,就如同不利用工程科学的知识来建造桥梁,很多桥梁可能会坍塌,并带来严重的后果。”
面对大数据,现在很多人可能会时常把数据挖掘这样时髦又深奥的词汇挂在嘴边,而认为或许传统的统计学此时已经不合时宜。这种观点在我看来至少有两个致命的问题。首先,传统的统计学方法仍然在各个领域扮演着不可取代的重要作用。包括生命科学、经济学、管理学等在内的诸多学科都涉及大量的数据分析工作,并从中汲取推进各自领域进步的动力。这里所谓的数据分析工作,更多的是基于传统统计分析方法来完成的。其次,很多数据挖掘的技术又是建立在传统的统计理论基础之上的。例如,期望最大化算法中就用到了极大似然估计。不仅如此,像计量经济中常常用到的“回归”,它既是一种数据挖掘方法,同时又是传统的统计学中必不可少的重要组成部分。
机器学习VS数据挖掘
在大量数据背后很可能隐藏了某些有用的信息或知识,而数据挖掘就是指通过一定方法探寻这些信息或知识的过程。另一方面,数据挖掘同时受到很多学科和领域的影响,大体上看,数据挖掘可以被视为数据库、机器学习和统计学三者的交叉。简单来说,对数据挖掘而言,数据库提供了数据管理技术,而机器学习和统计学则提供了数据分析技术。而本书所关注的重点,恰恰在于以机器学习和统计学为基础的数据分析方法。
从名字中就不难看出,机器学习最初的研究动机是为了让计算机具有人类一样的学习能力以便实现人工智能。显然,没有学习能力的系统很难被认为是智能的。而这个所谓的学习,就是指基于一定的“经验”而构筑起属于自己之“知识”的过程。小蝌蚪找妈妈的故事很好地说明了这一过程。小蝌蚪们没有见过自己的妈妈,它们向鸭子请教。鸭子告诉它们:“你们的妈妈有两只大眼睛。”看到金鱼有两只大眼睛,小蝌蚪们便把金鱼误认为是自己的妈妈。于是金鱼告诉它们:“你们妈妈的肚皮是白色的。”小蝌蚪们看见螃蟹是白肚皮,又把螃蟹误认为是自己的妈妈。螃蟹便告诉它们:“你们的妈妈有四条腿。”小蝌蚪们看见一只乌龟摆动着四条腿在水里游,就把乌龟误认为是自己的妈妈。于是乌龟又说:“你们的妈妈披着绿衣裳,走起路来一蹦一跳。”在这个学习过程中,小蝌蚪们的“经验”包括鸭子、金鱼、螃蟹和乌龟的话,以及“长得像上述四种动物的都不是妈妈”这样一条隐含的结论。最终,它们学到的“知识”就是“两只大眼睛、白肚皮、绿衣裳、四条腿,一蹦一跳的就是自己的妈妈”。当然,故事的结局,小蝌蚪们就是靠着学到的这些知识成功地找到了妈妈。反观机器学习,由于“经验”在计算机中主要是以“数据”的形式存在的,所以机器学习需要设法对数据进行分析,然后以此为基础构建一个“模型”,这个模型就是机器最终学到的“知识”。可见,小蝌蚪学习的过程是从“经验”学到“知识”的过程。相对应地,机器学习的过程则是从“数据”学到“模型”的过程。正是因为机器学习能够从数据中学到“模型”,而数据挖掘的目的恰恰是找出数据背后的“信息或知识”,二者不谋而合,所以机器学习才逐渐成为数据挖掘最为重要的智能技术供应者而备受重视。
正如前面所说的,机器学习和统计学为数据挖掘提供了数据分析技术。而另一方面,统计学也是机器学习得以建立的一个重要基础。所以,统计学本身就是一种数据分析技术的同时,它也为以机器学习为主要手段的智能数据分析提供了理论基础。可见统计学、机器学习和数据挖掘之间是紧密联系的。基于这样的认识,我们可以说本书的副标题“机器学习与数据分析”主要包含了下面几层意思。首先,如果把数据分析看作狭义上的以数理统计为基础的统计分析方法,那么本书就涵盖了为数据挖掘提供分析技术的两部分内容,即以机器学习为基础的和以统计学为基础的数据分析方法。其次,如果你把数据分析看作更为宏观的包含了数据挖掘在内的广义数据分析技术,那么为了引入以机器学习为出发点的智能分析技术,前期的统计分析知识则是帮助读者夯实数据分析基础的必要准备。
关于本书
R语言是当今最为流行的统计分析语言和数据分析环境之一。它是属于GNU系统的一个自由、免费、源代码开放的软件,并拥有媲美于商业软件的强大统计分析和绘图功能。此外,R语言还拥有数以万计贡献者在为其开发各种功能包,配合这些包的使用,R的功能得到了极大拓展,几乎可以完成任何你想要的数据分析与挖掘任务。本书选择R语言作为描述语言和开发环境,不仅通过诸多详尽的实例来演示R的使用,更为那些新近接触R语言的读者提供了很好的入门指导。我们相信,无论你属于何种程度的R语言使用者,都可以很好地利用本书来增进数据分析和挖掘的技术和能力。
经典统计理论和机器学习方法为数据挖掘提供了必要的分析技术。本书系统地介绍统计分析和机器学习领域中最为重要和流行的多种技术及其基本原理,在详解有关算法的基础上,结合大量R语言实例演示了这些理论在实践中的使用方法。具体内容被分成三个部分,即R语言编程基础、基于统计的数据分析方法以及机器学习理论。统计分析与机器学习部分又具体介绍了参数估计、假设检验、极大似然估计、非参数检验方法(包括列联分析、符号检验、符号秩检验等)、方差分析、线性回归(包括岭回归和Lasso方法)、逻辑回归、支持向量机、聚类分析(包括K均值算法和EM算法)和人工神经网络等内容。同时,统计理论的介绍也为深化读者对于后续机器学习部分的理解提供了很大助益。知识结构和阅读进度的安排上既兼顾了循序渐进的学习规律,亦统筹考虑了夯实基础的必要性。尽管作为一个非常宏大的话题,在有限的篇幅内我们不能将机器学习的所有方法尽述,但循着本书所提供的自学路线图,却可以建立一个十分扎实的基础以及对数据分析技术相当清晰的认识和理解。
统计学大师乔治?博克斯曾经是统计学家埃贡?皮尔逊的学生,而埃贡?皮尔逊则是统计学之父卡尔?皮尔逊的儿子。此外,乔治?博克斯还是统计学界的另一位巨擘罗纳德?费希尔的女婿。从这个角度来说,乔治?博克斯无疑集成了两位统计学宗师的学术思想,他有一句广为人们提及的名言说道:“所有的模型都是错的,但其中一些是有用的。”所以,无论是基于统计的方法,还是基于机器学习的方法,最终的模型都是对现实世界的抽象,而非毫无偏差的精准描述。相关理论只有与具体分析实例相结合才有意义。而在这个所谓的结合过程中,你既不能期待一种模型(或者算法)能够解决所有的(尽管是相同类型的)问题,也不能在面对一组数据时就能(非常准确地)预先知道哪种模型(或者算法)才是最适用的。或许你该记住另外一句话:“No clear reason to prefer one over another. Choice is task dependent(没有明确的原因表明一种方法胜于另外一种方法,选择通常是依赖于具体任务的)”。这也就突出了数据挖掘领域中实践的重要性,或者说由实践而来的经验之重要性。
为了力求让读者“知其然,更知其所以然”,对于晦涩的数据挖掘算法,本书都配合有完整详尽的推导过程。而包括统计数据分析在内的部分,我们更是借助R语言的强大能力,抽丝剥茧,逐条演示了各种检验方法、估计方法和分析方法的执行步骤,让读者深刻领悟到每一条简单函数背后所蕴藏的复杂机制。
“纸上得来终觉浅,绝知此事要躬行”,深化统计分析的基本思想,并锤炼运用R语言进行数据挖掘的能力,很大程度上有赖于编程实践活动。本书涉及的所有源代码,读者都可以从在线支持资源“http://blog.csdn.net/baimafujinji”中下载得到,勘误表也将实时发布到此博客上。同时欢迎读者就本书中的问题和不足与笔者展开讨论,有关问题请在上述博客中留言。
本书由左飞统稿并执笔。此外刘航、吴凯、姜萌、何鹏、胡俊、李召恒、初甲林、薛佟佟等人也参与了本书编写工作,笔者在此表示由衷的感谢。
自知论道须思量,几度无眠一文章。由于时间和能力有限,书中纰漏在所难免,真诚地希望各位读者和专家不吝批评、斧正。