机器学习算法之随机森林

怼烎@ 2022-08-28 00:37 635阅读 0赞

目录

随机森林的定义

随机森林的生成

Out of bag data问题

总结

特点

优点:

缺点:


随机森林的定义

我们上一篇文章中 机器学习算法之集成学习_RayChiu757374816的博客-CSDN博客介绍了集成学习,随机森林属于bagging思想,是基于一堆 完全生长的决策树组成,随机森林的每一棵决策树之间是没有关联的,这里就体现了它的随机性,随机的目的就是为了泛化能力强,吐过每一颗树都一样就没意义了。

在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的

每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类(对于分类算法),然后看

看哪一类被选择最多,就预测这个样本为那一类。

Bagging思想+决策树作为base model+uniform blending

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBAUmF5Q2hpdTc1NzM3NDgxNg_size_19_color_FFFFFF_t_70_g_se_x_16

随机森林的生成

回顾上一文集成学习讲解中讲到的模型生成的几种方式,随机森林是在建立每一棵决策树的过程中,这两点很重要 - 采样与完全分裂

最重要的是菜样,有两个随机采样的过程,random forest 对输入的数据要进行 行、列的采样 。对于行采样,采用有放回的方式,也就是在采样得到的样本集合中,可能有重复的样本。假设输入样本为 N 个,那么采样的样本也为 N 个。这样使得在训练的时候,每一棵树的输入样本都不是全部的样本,使得相对不容易出现 over-fitting。然后进行列采样,从 M 个 feature 中,选择 m 个(m << M)。之后就是对采样之后的数据使用完全分裂的方式建立出决策树,这样决策树的某一个叶子节点要么是无法继续分裂的,要么里面的所有样本的都是指向的同一个分类。一般很多的决策树算法都一个重要的步骤 - 剪枝,但是这里不这样干,由于之前的两个随机采样的过程保证了随机性,所以就 算不剪枝,也不会出现 over-fitting

一颗完全生长的决策树容易过拟合,但是一堆尽可能多的完全生长的树组成的随机森林则不容易过拟合,随机森林采用的是完全分裂生长。

Out of bag data问题

随机森林在构造若干弱分类器的时候会进行又放回的均匀抽样,因为是有放回的,所以在进行抽样的时候, 有很多条数据并没有被选到。

1条数据N轮没有备选到的概率3fcd4b42e8f7493b92f21c5628437652.png,当N足够大的时候

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBAUmF5Q2hpdTc1NzM3NDgxNg_size_8_color_FFFFFF_t_70_g_se_x_16

可见随机次数很大的时候一条数据没有被选择到的概率约为30%,概率还是不小的。

那能不能利用没有选到的数据做一些事情呢?比如训练的时候用来做验证集验证整个随机森林的效果。

这种验证数据集的方式称为out of bag data。在袋子之外,什么意思呢?Bagging更像一个装袋的意思,原来有这么一个训练集,准备了一百个袋子,你每个袋子都从训练集里边有放回的随机抽样,给它装成一个小袋子,在每一个袋子上面生成出一棵树。但是对于每一个bag都有一些数据没有装到这个里面,我们就叫它out of bag,在袋外的这些数据。它的问题主要是 不是每一个弱分类器,它的out of bag data都是一样的,甚至可以说每一个弱分类器out of bag(简称oob)数据都不一样。于是就切换到了以数据为维度,哪些弱分类器没有用到,就去验证一下这些弱分类器是否正确。

通过上面oob数据统计出来的ACC正确率越高越好,它也是随机森林中帮助我们调参的参数,叫oob_score,当训练好了一个随机森林之后,它的对象里面就带了一个属性叫oob_score。每次调参数输出一下oob_score,看一下是高了还是低了,如果变高了说明调的方向正确,如果变低了说明调的方向不对。

总结

特点

  1. 随机选择样本(放回抽样);
  2. 随机选择特征;
  3. 构建决策树;
  4. 随机森林投票(平均)

优点:

  1. 表现良好
  2. 可以处理高维度数据(维度随机选择)
  3. 辅助进行特征选择
  4. 得益于bagging 可以进行并行训练

缺点:

对于噪声过大的数据容易过拟合

发表评论

表情:
评论列表 (有 0 条评论,635人围观)

还没有评论,来说两句吧...

相关阅读