书海网短评:
适读人群:本书非常适合大专院校相关专业师生自学研究之用,亦可作为数据分析和数据挖掘相关领域从业人员的参考指导用书。整合R语言深藏不漏的强大威力,决胜数据分析之巅且听我将统计学之精髓娓娓道来,助你砥砺大数
整合R语言深藏不漏的强大威力,决胜数据分析之巅
且听我将统计学之精髓娓娓道来,助你砥砺大数据时代的掘金技法
探寻数据挖掘之术,拨开机器学习迷雾,点破公式背后的层层玄机
经典统计理论和机器学习方法为数据挖掘提供了必要的分析技术。《R语言实战――机器学习与数据分析》系统地介绍统计分析和机器学习领域中*为重要和流行的多种技术及其基本原理,在详解有关算法的基础上,结合大量R语言实例演示了这些理论在实践中的使用方法。具体内容被分成三个部分,即R语言编程基础、基于统计的数据分析方法以及机器学习理论。统计分析与机器学习部分又具体介绍了参数估计、假设检验、极大似然估计、非参数检验方法(包括列联分析、符号检验、符号秩检验等)、方差分析、线性回归(包括岭回归和Lasso方法)、逻辑回归、支持向量机、聚类分析(包括K均值算法和EM算法)和人工神经网络等内容。同时,统计理论的介绍也为深化读者对于后续机器学习部分的理解提供了很大助益。知识结构和阅读进度的安排上既兼顾了循序渐进的学习规律,亦统筹考虑了夯实基础的必要性。《R语言实战――机器学习与数据分析》内容与实际应用结合紧密,又力求突出深入浅出、系统翔实之特色,对算法原理的解释更是细致入微。
左飞,服务于中国规模较大的移动通信运营商,业余时间他撰写了多部计算机方面的著作,并译有《编码》、《提高C++性能的编程技术》等经典名著。
第1章初识R语言1
1.1R语言简介1
1.2安装与运行3
1.3开始使用R5
1.4包的使用7
1.5使用帮助8
第2章探索R数据10
2.1向量的创建10
2.2向量的运算13
2.3向量的筛选15
2.4矩阵的创建17
2.5矩阵的使用20
2.5.1矩阵的代数运算20
2.5.2修改矩阵的行列22
2.5.3对行列调用函数23
2.6矩阵的筛选25
第3章编写R程序28
3.1流程的控制28
3.1.1条件选择结构的概念28
3.1.2条件选择结构的语法29
3.1.3循环结构的基本概念30
3.1.4循环结构的基本语法31
3.2算术与逻辑33
3.3使用函数34
3.3.1函数式语言34
3.3.2默认参数值35
3.3.3自定义函数36
3.3.4递归的实现38
3.4编写代码40
第4章概率统计基础42
4.1概率论的基本概念42
4.2随机变量数字特征45
4.2.1期望45
4.2.2方差46
4.3基本概率分布模型48
4.3.1离散概率分布48
4.3.2连续概率分布52
4.3.3使用内嵌分布55
4.4大数定理及其意义59
4.5中央极限定理62
4.6随机采样分布65
第5章实用统计图形71
5.1饼状图71
5.2直方图74
5.3核密图78
5.4箱线图81
5.4.1箱线图与分位数81
5.4.2使用并列箱线图84
5.5条形图87
5.5.1基本条形图及调整87
5.5.2堆砌与分组条形图88
5.6分位数与QQ图91
第6章数据输入/输出99
6.1数据的载入99
6.1.1基本的数据导入方法99
6.1.2处理其他软件的格式103
6.1.3读取来自网页的数据104
6.1.4从数据库中读取数据106
6.2数据的保存108
6.3数据预处理109
6.3.1常用数学函数110
6.3.2修改数据标签113
6.3.3缺失值的处理114
第7章高级数据结构118
7.1列表118
7.1.1列表的创建118
7.1.2列表元素的访问120
7.1.3增删列表元素121
7.1.4拼接列表123
7.1.5列表转化为向量123
7.1.6列表上的运算124
7.1.7列表的递归125
7.2数据框126
7.2.1数据框的创建126
7.2.2数据框元素的访问128
7.2.3提取子数据框129
7.2.4数据框行列的添加130
7.2.5数据框的合并132
7.2.6数据框的其他操作134
7.3因子135
7.3.1因子的创建136
7.3.2因子中插入水平137
7.3.3因子和常用函数138
7.4表140
7.4.1表的创建141
7.4.2表中元素的访问143
7.4.3表中变量的边际值143
第8章统计推断146
8.1参数估计146
8.1.1参数估计的基本原理146
8.1.2单总体参数区间估计149
8.1.3双总体均值差的估计155
8.1.4双总体比例差的估计161
8.2假设检验162
8.2.1基本概念162
8.2.2两类错误166
8.2.3均值检验167
8.3极大似然估计172
8.3.1极大似然法的基本原理172
8.3.2求极大似然估计的方法174
8.3.3极大似然估计应用举例176
第9章非参数检验方法181
9.1列联分析181
9.1.1类别数据与列联表181
9.1.2皮尔逊(Pearson)的卡方检验182
9.1.3列联分析应用条件186
9.1.4费希尔(Fisher)的确切检验188
9.2符号检验190
9.3威尔科克森(Wilcoxon)符号秩检验195
9.4威尔科克森(Wilcoxon)的秩和检验199
9.5克鲁斯卡尔-沃利斯(Kruskal-Wallis)检验204
第10章一元线性回归208
10.1回归分析的性质208
10.2回归的基本概念210
10.2.1总体的回归函数210
10.2.2随机干扰的意义211
10.2.3样本的回归函数213
10.3回归模型的估计214
10.3.1普通最小二乘法原理214
10.3.2一元线性回归的应用216
10.3.3经典模型的基本假定218
10.3.4总体方差的无偏估计222
10.3.5估计参数的概率分布225
10.4正态条件下的模型检验227
10.4.1拟合优度的检验227
10.4.2整体性假定检验231
10.4.3单个参数的检验233
10.5一元线性回归模型预测234
10.5.1点预测234
10.5.2区间预测235
第11章线性回归进阶239
11.1多元线性回归模型239
11.2多元回归模型估计241
11.2.1最小二乘估计量241
11.2.2多元回归的实例242
11.2.3总体参数估计量245
11.3多元回归模型检验247
11.3.1线性回归的显著性247
11.3.2回归系数的显著性249
11.4多元线性回归模型预测250
11.5其他回归模型函数形式253
11.5.1双对数模型以及生产函数253
11.5.2倒数模型与菲利普斯曲线255
11.5.3多项式回归模型及其分析258
11.6回归模型的评估与选择260
11.6.1嵌套模型选择261
11.6.2赤池信息准则262
11.6.3逐步回归方法265
11.7现代回归方法的新进展269
11.7.1多重共线性269
11.7.2岭回归270
11.7.3从岭回归到Lasso271
第12章方差分析方法275
12.1方差分析的基本概念275
12.2单因素方差分析方法278
12.2.1基本原理278
12.2.2分析步骤279
12.2.3强度测量280
12.3双因素方差分析方法281
12.3.1无交互作用的分析281
12.3.2有交互作用的分析286
12.4多重比较289
12.4.1多重t检验290
12.4.2"Dunnett"检验291
12.4.3"Tukey"的"HSD"检验294
12.4.4"Newman"-"Keuls"检验298
12.5方差齐性的检验方法301
12.5.1"Bartlett"检验法301
12.5.2"Levene"检验法303
第13章聚类分析307
13.1聚类的概念307
13.2K均值算法308
13.2.1距离度量309
13.2.2算法描述310
13.2.3应用实例312
13.3最大期望算法314
13.3.1算法原理314
13.3.2收敛探讨319
13.4高斯混合模型320
13.4.1模型推导320
13.4.2应用实例323
第14章支持向量机326
14.1从逻辑回归到线性分类326
14.2线性可分的支持向量机330
14.2.1函数距离与几何距离330
14.2.2最大间隔分类器332
14.2.3拉格朗日乘数法334
14.2.4对偶问题的求解339
14.3松弛因子与软间隔模型343
14.4非线性支持向量机方法345
14.4.1从更高维度上分类345
14.4.2非线性核函数方法347
14.4.3默瑟定理与核函数350
14.5对数据进行分类的实践350
14.5.1基本建模函数351
14.5.2分析建模结果355
第15章人工神经网络358
15.1从感知机开始358
15.1.1感知机模型358
15.1.2感知机学习360
15.1.3多层感知机362
15.2基本神经网络365
15.2.1神经网络结构365
15.2.2符号标记说明366
15.2.3后向传播算法368
15.3神经网络实践370
15.3.1核心函数介绍370
15.3.2应用分析实践372
参考文献375
数据——蕴藏巨大财富的宝藏
19世纪中叶,英国伦敦曾经爆发过一场规模很大的霍乱。由于彼时人们对霍乱的致病机理还不甚了解,因此疫情在很长一段时间内都无法得到有效的控制。英国医师约翰?斯诺用标点地图的方法研究了当地水井分布和霍乱患者分布之间的关系,发现有一口水井周围,霍乱患病率明显较高,借此找到了霍乱暴发的原因:一口被污染的水井。关闭这口水井之后,霍乱的发病率明显下降。这便是数据分析在历史上展示其威力的一次成功案例。
毋庸置疑,数据是一座巨大的宝藏,而我们要做的恰恰就是挖掘这座宝藏。特别是进入信息时代以来,“大数据”这个概念更是越来越多地被人们提及。很多国家甚至把大数据提升到国家战略的高度。例如,我国的“十三五”规划建议中就提出:“实施国家大数据战略,推进数据资源开放共享。”
尽管“大数据”这个名词听起来很时髦,但是由此反映出来的对于数据本身的重视却并不是一个多么新鲜的现象。中国古代的施政治国观念中就非常强调掌握数据的重要性。例如商鞅变法中就提出,“强国知十三数……欲强国,不知国十三数,地虽利,民虽众,国愈弱至削”。
随着时代的进步,人们对于数据的重视程度更是有增无减,世界各国,概莫能外。列宁就曾经说过:“有许多问题,而且是涉及现代国家经济制度和这种制度之发展的最根本问题……如果不根据某个一定的纲要收集并经统计专家综合的关于某一国家全国情况的浩繁材料,就无法加以比较并认真地研究。”毛主席也曾指出:“胸中有‘数’。就是说,对情况和问题一定要注意到它们的数量方面,要有基本的数量分析。任何质量都表现为一定的数量,没有数量也就没有质量。”
“大数据时代,统计学依然是数据分析灵魂。”
人民网在2015年7月曾经以《大数据时代,统计学依然是数据分析灵魂》为题刊发了一篇对某位知名专家的访谈。其间,这位专家就形象地说道:“大数据是‘原油’而不是‘汽油’,不能被直接拿来使用。就像股票市场,即使把所有的数据都公布出来,不懂的人依然不知道数据代表的信息。”同时该篇文章也引用了美国加州大学伯克利分校迈克尔?乔丹教授的观点:“没有系统的数据科学作为指导的大数据研究,就如同不利用工程科学的知识来建造桥梁,很多桥梁可能会坍塌,并带来严重的后果。”
面对大数据,现在很多人可能会时常把数据挖掘这样时髦又深奥的词汇挂在嘴边,而认为或许传统的统计学此时已经不合时宜。这种观点在我看来至少有两个致命的问题。首先,传统的统计学方法仍然在各个领域扮演着不可取代的重要作用。包括生命科学、经济学、管理学等在内的诸多学科都涉及大量的数据分析工作,并从中汲取推进各自领域进步的动力。这里所谓的数据分析工作,更多的是基于传统统计分析方法来完成的。其次,很多数据挖掘的技术又是建立在传统的统计理论基础之上的。例如,期望最大化算法中就用到了极大似然估计。不仅如此,像计量经济中常常用到的“回归”,它既是一种数据挖掘方法,同时又是传统的统计学中必不可少的重要组成部分。
机器学习VS数据挖掘
在大量数据背后很可能隐藏了某些有用的信息或知识,而数据挖掘就是指通过一定方法探寻这些信息或知识的过程。另一方面,数据挖掘同时受到很多学科和领域的影响,大体上看,数据挖掘可以被视为数据库、机器学习和统计学三者的交叉。简单来说,对数据挖掘而言,数据库提供了数据管理技术,而机器学习和统计学则提供了数据分析技术。而《R语言实战――机器学习与数据分析》所关注的重点,恰恰在于以机器学习和统计学为基础的数据分析方法。
从名字中就不难看出,机器学习最初的研究动机是为了让计算机具有人类一样的学习能力以便实现人工智能。显然,没有学习能力的系统很难被认为是智能的。而这个所谓的学习,就是指基于一定的“经验”而构筑起属于自己之“知识”的过程。小蝌蚪找妈妈的故事很好地说明了这一过程。小蝌蚪们没有见过自己的妈妈,它们向鸭子请教。鸭子告诉它们:“你们的妈妈有两只大眼睛。”看到金鱼有两只大眼睛,小蝌蚪们便把金鱼误认为是自己的妈妈。于是金鱼告诉它们:“你们妈妈的肚皮是白色的。”小蝌蚪们看见螃蟹是白肚皮,又把螃蟹误认为是自己的妈妈。螃蟹便告诉它们:“你们的妈妈有四条腿。”小蝌蚪们看见一只乌龟摆动着四条腿在水里游,就把乌龟误认为是自己的妈妈。于是乌龟又说:“你们的妈妈披着绿衣裳,走起路来一蹦一跳。”在这个学习过程中,小蝌蚪们的“经验”包括鸭子、金鱼、螃蟹和乌龟的话,以及“长得像上述四种动物的都不是妈妈”这样一条隐含的结论。最终,它们学到的“知识”就是“两只大眼睛、白肚皮、绿衣裳、四条腿,一蹦一跳的就是自己的妈妈”。当然,故事的结局,小蝌蚪们就是靠着学到的这些知识成功地找到了妈妈。反观机器学习,由于“经验”在计算机中主要是以“数据”的形式存在的,所以机器学习需要设法对数据进行分析,然后以此为基础构建一个“模型”,这个模型就是机器最终学到的“知识”。可见,小蝌蚪学习的过程是从“经验”学到“知识”的过程。相对应地,机器学习的过程则是从“数据”学到“模型”的过程。正是因为机器学习能够从数据中学到“模型”,而数据挖掘的目的恰恰是找出数据背后的“信息或知识”,二者不谋而合,所以机器学习才逐渐成为数据挖掘最为重要的智能技术供应者而备受重视。
正如前面所说的,机器学习和统计学为数据挖掘提供了数据分析技术。而另一方面,统计学也是机器学习得以建立的一个重要基础。所以,统计学本身就是一种数据分析技术的同时,它也为以机器学习为主要手段的智能数据分析提供了理论基础。可见统计学、机器学习和数据挖掘之间是紧密联系的。基于这样的认识,我们可以说《R语言实战――机器学习与数据分析》的副标题“机器学习与数据分析”主要包含了下面几层意思。首先,如果把数据分析看作狭义上的以数理统计为基础的统计分析方法,那么《R语言实战――机器学习与数据分析》就涵盖了为数据挖掘提供分析技术的两部分内容,即以机器学习为基础的和以统计学为基础的数据分析方法。其次,如果你把数据分析看作更为宏观的包含了数据挖掘在内的广义数据分析技术,那么为了引入以机器学习为出发点的智能分析技术,前期的统计分析知识则是帮助读者夯实数据分析基础的必要准备。
关于《R语言实战――机器学习与数据分析》
R语言是当今最为流行的统计分析语言和数据分析环境之一。它是属于GNU系统的一个自由、免费、源代码开放的软件,并拥有媲美于商业软件的强大统计分析和绘图功能。此外,R语言还拥有数以万计贡献者在为其开发各种功能包,配合这些包的使用,R的功能得到了极大拓展,几乎可以完成任何你想要的数据分析与挖掘任务。《R语言实战――机器学习与数据分析》选择R语言作为描述语言和开发环境,不仅通过诸多详尽的实例来演示R的使用,更为那些新近接触R语言的读者提供了很好的入门指导。我们相信,无论你属于何种程度的R语言使用者,都可以很好地利用《R语言实战――机器学习与数据分析》来增进数据分析和挖掘的技术和能力。
经典统计理论和机器学习方法为数据挖掘提供了必要的分析技术。《R语言实战――机器学习与数据分析》系统地介绍统计分析和机器学习领域中最为重要和流行的多种技术及其基本原理,在详解有关算法的基础上,结合大量R语言实例演示了这些理论在实践中的使用方法。具体内容被分成三个部分,即R语言编程基础、基于统计的数据分析方法以及机器学习理论。统计分析与机器学习部分又具体介绍了参数估计、假设检验、极大似然估计、非参数检验方法(包括列联分析、符号检验、符号秩检验等)、方差分析、线性回归(包括岭回归和Lasso方法)、逻辑回归、支持向量机、聚类分析(包括K均值算法和EM算法)和人工神经网络等内容。同时,统计理论的介绍也为深化读者对于后续机器学习部分的理解提供了很大助益。知识结构和阅读进度的安排上既兼顾了循序渐进的学习规律,亦统筹考虑了夯实基础的必要性。尽管作为一个非常宏大的话题,在有限的篇幅内我们不能将机器学习的所有方法尽述,但循着《R语言实战――机器学习与数据分析》所提供的自学路线图,却可以建立一个十分扎实的基础以及对数据分析技术相当清晰的认识和理解。
统计学大师乔治?博克斯曾经是统计学家埃贡?皮尔逊的学生,而埃贡?皮尔逊则是统计学之父卡尔?皮尔逊的儿子。此外,乔治?博克斯还是统计学界的另一位巨擘罗纳德?费希尔的女婿。从这个角度来说,乔治?博克斯无疑集成了两位统计学宗师的学术思想,他有一句广为人们提及的名言说道:“所有的模型都是错的,但其中一些是有用的。”所以,无论是基于统计的方法,还是基于机器学习的方法,最终的模型都是对现实世界的抽象,而非毫无偏差的精准描述。相关理论只有与具体分析实例相结合才有意义。而在这个所谓的结合过程中,你既不能期待一种模型(或者算法)能够解决所有的(尽管是相同类型的)问题,也不能在面对一组数据时就能(非常准确地)预先知道哪种模型(或者算法)才是最适用的。或许你该记住另外一句话:“Noclearreasontopreferoneoveranother.Choiceistaskdependent(没有明确的原因表明一种方法胜于另外一种方法,选择通常是依赖于具体任务的)”。这也就突出了数据挖掘领域中实践的重要性,或者说由实践而来的经验之重要性。
为了力求让读者“知其然,更知其所以然”,对于晦涩的数据挖掘算法,《R语言实战――机器学习与数据分析》都配合有完整详尽的推导过程。而包括统计数据分析在内的部分,我们更是借助R语言的强大能力,抽丝剥茧,逐条演示了各种检验方法、估计方法和分析方法的执行步骤,让读者深刻领悟到每一条简单函数背后所蕴藏的复杂机制。
“纸上得来终觉浅,绝知此事要躬行”,深化统计分析的基本思想,并锤炼运用R语言进行数据挖掘的能力,很大程度上有赖于编程实践活动。《R语言实战――机器学习与数据分析》涉及的所有源代码,读者都可以从在线支持资源“http://blog.csdn.net/baimafujinji”中下载得到,勘误表也将实时发布到此博客上。同时欢迎读者就《R语言实战――机器学习与数据分析》中的问题和不足与笔者展开讨论,有关问题请在上述博客中留言。
《R语言实战――机器学习与数据分析》由左飞统稿并执笔。此外刘航、吴凯、姜萌、何鹏、胡俊、李召恒、初甲林、薛佟佟等人也参与了《R语言实战――机器学习与数据分析》编写工作,笔者在此表示由衷的感谢。
自知论道须思量,几度无眠一文章。由于时间和能力有限,书中纰漏在所难免,真诚地希望各位读者和专家不









