当前课程知识点:R语言数据分析 >  下部:博术 >  第12章 既是世间法、自当有分别 >  12.6 随机森林

返回《R语言数据分析》慕课在线视频课程列表

12.6 随机森林在线视频

下一节:12.7 朴素贝叶斯

返回《R语言数据分析》慕课在线视频列表

12.6 随机森林课程教案、知识点、字幕

大家好

欢迎来到《R语言数据分析》课程

今天和大家交流的主题是随机森林

在我们前面的课程里面

我们已经简要的介绍一下决策树这种树模型

当然我们拥有一棵树的时候

我们已经可以根据我们的性别

根据相应的一些各科成绩

对我们文理分科做出一个判断了

那假如我们现在拥有一片森林的话

效果是不是更好

这就是我们今天的主题

由决策树进一步延伸到随机森林

这一个算法模型上面来

随机森林它属于一个集成学习的方法

集成学习一般也称之为组合学习

组合学习

通俗话讲

就是三个臭皮匠 顶个诸葛亮

具体来讲就是将多个弱分类器

多个弱分类器集成

集成之后变成一个强分类器

它大概流程是

就我有一份原始的数据集

这个时候我将这个数据集分成若干个子集

在这个不同的子集上面

我分别训练 就是根据这个弱分类器(算法)

分别训练一个分类器

训练完之后

假如我拿到一个新的一个测试集的话

那好 我将每一个分类器都得一相应的结果

将这个相应的结果进行

比如说我进行多数表决

少数服从多数 或者求平均

我对它进行结果的集成

这个时候也就是说由弱分类器的结果

集成为强分类器的结果

这个时候多个分类器

集成的分类器

我们在机器学习里面

有的时候称之为强分类器

这边需要补充一下是我们由这个数据集

生成这个不同的数据子集的时候

这个子集的(记录)个数不一定比这个D少

比如说通过这个重采样的方法

通过有放回抽样的方法

虽然是子集

但是它的记录数是一样的

当然我们组合学习有很多方法

比如说我们有这个

boosting bagging (stacking)等等其他很多方法

在咱们这个课里面主要是讲这么一种

以这个随机森林为例

简单的讲解一下集成学习的一个过程

当然说到随机森林的话

我想在说具体的原理之前

我们先看一看

最初随机森林是如何创立的

是他面对什么问题

基于什么样的思考

想到了这么一个好的idea

这么一个好的想法

虽然我们在学机器学习算法的时候

你可以拿一本教材过来

能看得懂这里面的逻辑

但是我想应该回到问题的原点的时候

应该更有助于我们了解它的本质

就是究竟这个算法怎么来的

我们看一看

这个随机森林的创立者Breiman

包括我们前面讲的CART

分类回归树也是他给创立的

他最初是怎么想到这个随机森林的

他其实来源于一个线性回归

就他发现线性回归里面

它的子集的选取

非常得不稳定

就当我们稍微扰动一下这个数据的时候发现

回归里面所选的最好的五个变量

会变成另外五个

这当然是一个非常

我们看起来是一个问题

但是Breiman面对这个问题的时候

并没有把它当成一个问题

让自己感到很沮丧

而是来利用它来利用这个性质

利用这个特性

它通过增加数据扰动

然后

得到五个最好的预测变量

然后再次扰动这个数据得到另外五个

最后怎么样把这些结果

把这个预测器我集成起来求个平均

所谓集成就是求平均

平均完之后发现这样效果相当好

就相当把一个问题变成了

利用它的特性把它组合之后

这里面得到一个更好的结果

这是在线性回归里面

它子集选取的时候碰到这么一个问题

并且利用好这个特性之后得到更好的性能了

那同样他发现CART

就我们前面讲的这个分类回归树

是rpart里面实现的这个算法

也有同样的特性

那好 他怎么想的

为不试一试

在这个CART上面尝试一下

刚才的这个线性回归里面同样的事情

也就是我们改变数据生成一棵树

然后再次改变数据又生成一棵树

最后怎么样

把这不同的树的结果集成起来

要么就少数服从多数多数表决(用以分类)

或者是求平均(用于回归)

然后来看看

看看是不是没准那个性能能提高

这么一个好的想法有了之后 一实施

确实性能非常好

当然我们可以看一看

就是后面有其他一些论文统计过

就是说这个决策树到随机森林之后

集成完随机森林之后

它是不是性能真的是提高了很多

这里面是一个直方图

我们看一下

总共有1000棵决策树

后来发现这个随机森林的效果是72.4%

72.4%

它比99%的决策树性能都好

所以这就是有一个好的想法之后

变成具体的算法之后

通过实验证明它确实这种组合学习是有效的

这是我们随机森林

这么一种组合学习算法它的来历

我们来看看具体的这个随机森林算法

是什么样的

好 我们就是给定d个元组的训练集

也就说这个总共有d行对不对

有d个元组的训练集

然后我们为组合分类器产生k棵决策树

这是首先是有一个弱分类器

弱分类器我们就采用决策树作为弱分类器

我们使用有放回的抽样方法生成数据集

就是我要生成k棵树的话

就是这个森林里面包含k棵树

那怎么样

我要生成k次

D1 D2 D3 D4一直到Dk

每一次都是有放回的抽样

因为是有放回的抽样

所以有一部分数据会重复抽到多次

而且另外有多少

有大概36%左右的数据是抽不到的

所以每次抽的时候

它产生Di都是不一样的

好基于这个D1到Dk

总共就有k个这个数据集

我们就生成了总共k棵树

K棵CART分类回归树

那最后怎么办

就假如我一个新的测试样本过来了

我怎么办

我每一棵树我都先拿这个分类器我都预测一下

比如说第一棵分类树这是文科

第二棵是理科等等等等

总共有K棵

最后这个随机森林的结果是

我就看一看通过这个简单投票的方法

多数投票

就比如说这个10棵树里面有7棵是文科

那好那就选文科

就这个随机森林最后的结果就是文科

所以我们可以看得出来

这个随机森林最后的表决其实又是

又是我们回到我们以前那个说法

叫有生于无

还是简单多数投票

少数服从多数或者求平均

假如我们随机森林做回归的话

其实就是求平均

假如我们做分类的话就是

就是用这个少数服从多数的原则

来做这个事情

可以看得出来

整个随机森林无论是从算法的起点

就是这个算法来了怎么来的

到这个算法具体实现过程

其实都不复杂

但是在我们一些具体应用里面

尤其是一些具体实战项目里面

其实随机森林它性能都非常好

它参数调节过程应该比相对比较简单

但是性能效果

基本上可以和很多非常先进的

那个分类器来媲美

以上就是我们这个

随机森林的一个最基本的原理

当然通过文字来描述的时候

总还是显得比较抽象

咱们一图胜千言

通过一张图来具体表达一下

这个随机森林的一个过程

所谓随机森林

其实我们首先还是拿到一份数据

拿到一份数据之后

首先我通过这个有放回的抽样

再抽取k份数据

比如说我想假如生成k棵树的话

毫无疑问我就通过有放回的抽样

抽取k份数据

这个数据行数跟原来原始数据是一样的

但是因为是有放回的抽样

所以总是有有些记录是反复被抽到

另外有36%左右数据

可能是抽不到的

每一份数据它都是不一样的

针对每一份数据

我来选取其中的若干列

大家注意了

这个时候只是选取少数的特征

所以假如对我们这个问题来讲

你有十列的话那好

我们可能现在只取其中一两列 两三列对吧

然后我在这个选完之后

针对若干个特征少量特征

我来训练一颗分类回归树

所谓的弱分类器

做完这个动作之后

其实随机森林的训练的过程 已经完成了

假如拿到一个新的(测试)数据之后

我每一个训练好的这个单个的弱分类器

我都怎么样

我都做一个预测

预测完之后

按照这个多数表决

少数服从多数的原理

怎么样

我来看看究竟我最后的这个类别应该是哪一个

这其实就是所谓的随机森林最基本的原理

我们来看一下

对行来讲

它其实有放回了抽样

这里面引入一个随机

其实我们可以这样来理解这个问题

假如说这里面是相当于是一个群体决策的

然后每一棵树是一个专家

那好 这个有放回的抽样就导致

每个专家的经验是不一样

因为它数据记录不一样

每个专家经验不一样

这是前面一个环节

到第二个环节

我开始建这棵树的时候

训练这棵树的时候怎么样

我选取少量的特征属性

这个时候相当于每个专家的视角是不一样的

就是经验不一样 视角不一样

然后怎么样进行一个群体的决策进行一个表决

最后发现整体效果还不错

就组合学习之后的这强分类器

比我们一般的

前面我们统计结果也看得到

比99%的弱分类器效果都要好

所以我们可以通过这个所谓的经验不一样

然后这个视角不一样

最后进行群体表决

从这个角度来理解我们这个随机森林

这是随机森林的一个相对比较形象的一个说法

咱们再看一看在R里面是如何实现的

在R里面实现的话

我们专门有这么一个包叫randomForest

一看就是随机森林

当然我们为了保证这个结果的(可)复现

我们设了一个随机数的种子

然后随机森林里面也有一个函数

它的名称和这个包的名字一样

也是randomForest

就随机森林这么一个函数

当然它也是接受一些参数

比如说我们首先是要

这是一个公式确定因变量是谁自变量是谁

波浪号前面是因变量

波浪后面是自变量

当然我们这边选取所有的

所有的那个除了这个文理分科wlfk之外

其他的十个特征都做为自变量

所以我们用点号来代替它

然后设定一下 总共多少棵树

我们是基于哪个数据进行训练的

再之后训练结果我们交给imodel

得到这个imodel之后我们就

可以通过这个数据

先看看他的训练集上面它的模型的表现

predict()

这个时候newdata

和我们前面这个数据设的一样

都是在训练集上看它性能表现

我们再通过这个Metrics::ce()

来看一看它的分类错误率

分类错误率 多少呢

令人不可思议 它居然分类错误率是零

分类错误率是零

就是没有任何一个是分错的

但需要说明的是

这只是训练集上的结果

看一看测试集上的表现

测试集上的表现才是我们真正想要的

好 同样还是调用这个predict()这个函数

这个时候

我们这个newdata就设置成测试集了对吧

设置成测试集

就将那个训练集相应的下标都反向选出去

剩下的就是我们的测试集

这个时候type

注意了这个type的话

在那个随机森林里面

在这个randomForest里面

它type设置的不是class是response

得到也是类别的标签

同样是调用这个Metrics::ce()这个函数

这个时候我们发现在测试集中的误差0.18

虽然和我们那个训练集差的很多

但是总体上来讲它还是可以接受的

就是一百个里面可以预测对82个左右

这就是随机森林在R里面一个最基本的实现

当然我们也可以通过这个交叉验证的方法

看看我们的随机森林对我们这份数据

它最终这个性能指标稳定在哪个水平之上

当然前面这个所有的步骤都是一样的

也是训练集测试集的划分

然后进行模型的训练

然后训练集上进行一个预测

将预测结果交给imetrics这么一个函数

咱们前面定义的

让它来将我们这个训练集的结果

叠加到这个global_performance里面去

同样也是对测试集也可以进行一个叠加

我们也可以看一看

目前这个

global_performance

就是这个它的具体在这个

随机森林这块的一个取值情况

可以看得出来

这里面很多训练集上面都是为零的

都是为零的

但是测试集的性能指标的话就良莠不齐了

但总体上讲应该也是表现比较优秀的

这是我们随机森林这一块的

它的一个最基本的原理

以及在R里面一个实现

本次课到此结束

谢谢大家

R语言数据分析课程列表:

上部:问道

-第1章 气象万千、数以等观

--第1章 气象万千、数以等观

--第1章 作业

-第2章 所谓学习、归类而已

--2.1 所谓学习、归类而已(I)

--2.2 所谓学习、归类而已(II)

--2.3 所谓学习、归类而已(III)

--2.4 所谓学习、归类而已(IV)

--第2章 作业

-第3章 格言联璧话学习

--第3章 格言联璧话学习

--第3章 作业

-第4章 源于数学、归于工程

--第4章 源于数学、归于工程

--第4章 作业

-讨论题

--如何发挥人工智能的头雁效应

中部:执具

-第5章 工欲善其事、必先利其器

--第5章 工欲善其事、必先利其器

--第5章 作业

-第6章 基础编程——用别人的包和函数讲述自己的故事

--6.1 编程环境

--6.2Mini案例

--6.3 站在巨人的肩膀上

--6.4 控制流

--6.5 函数(I)

--6.6 函数(II)

--第6章 作业

-第7章 数据对象——面向数据对象学习R语言

--7.1 向量与因子(I)

--7.2 向量与因子(II)

--7.3 矩阵与数组(I)

--7.4 矩阵与数组(II)

--7.5 列表与数据框(I)

--7.6 列表与数据框(II)

--第7章 作业

-第8章 人人都爱tidyverse

--第8章 人人都爱tidyverse

--第8章 作业

-第9章 最美不过数据框

--第9章 最美不过数据框

--第9章 作业

下部:博术

-第10章 观数以形

--10.1 一维数据空间(I)

--10.2 一维数据空间(II)

--10.3 二维数据空间

--10.4 高维数据空间

--第10章 作业

-第11章 相随相伴、谓之关联

--11.1 导引

--11.2 关联规则(I)

--11.3 关联规则(II)

--11.4 关联规则(III)

--第11章 作业

-第12章 既是世间法、自当有分别

--12.1 导引

--12.2 近邻法(I)

--12.3 近邻法(II)

--12.4 决策树(I)

--12.5 决策树(II)

--12.6 随机森林

--12.7 朴素贝叶斯

--12.8 逻辑斯蒂回归

--12.9 人工神经网络(I)

--12.10 人工神经网络(II)

--12.11 支持向量机

--第12章 作业

-第13章 方以类聚、物以群分

--13.1 导引

--13.2 划分方法

--13.3 层次方法

--第13章 作业

-第14章 庐山烟雨浙江潮

--第14章 庐山烟雨浙江潮

--第14章 作业

12.6 随机森林笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。