集成算法之随机森林


公众号后台回复“图书“,了解更多号主新书内容

 作者:小一

 来源:小一的学习笔记

写在前面的话

大家好,我是小一

这是大话系列的第6节算法,也是本系列的第14篇原创文章。

上上节提到两种集成方法,分别是Boosting和Bagging,其中上节的Adaboost算法是对Boosting 算法的一种实现,本机的随机森林算法是在Bagging 的基础上进行改进的。

文末附本系列所有文章的更新路线。

随机森林

随机森林就是集成学习思想下的产物,将许多棵决策树整合成森林,并合起来用来预测最终结果。

随机森林是一种相当简单、容易理解的方法,它的基本原理是:从原数据集中有放回的采样获得若干个子集,基于每个子集训练出不同的基分类器,再通过基分类器的投票获得最终的分类结果

对于分类问题,按多棵树分类器投票决定最终分类结果;对于回归问题,由多棵树预测值的均值决定最终预测结果

1. 如何构建一棵树

随机森林中构建树的过程和决策树中构建树的过程有一些区别,主要体现在随机上。

随机森林中每棵树按照下面的规则生成:

① 如果训练集大小为N,对于每棵树而言,随机且有放回地从训练集中的抽取N个训练样本,作为该树的训练集;

② 如果每个训练样本的特征维度为M,则随机的从M个总特征中选出m个特征子集,进行树的分裂。每次树进行分裂时,从这m个特征中选择最优的

③ 在每个树的生长过程中,使其尽最大程度的生长,不要剪枝。

通过上面的步骤就生成了一颗随机森林中的树。

需要注意的是:

① 每个样本被采集到的概率为: ,不被采集到的概率为: ,那么一个样本N次采样都没有被采集到的概率为:

时,(

即在每轮随机采样中,约有36.8%的数据没有被采样到,也就相当于在第k棵树的生成过程中,有36.8%的样本称之为oob样本(out of bag:袋外样本)

这类样本因为不参与建模过程,所以可以被作为验证数据,用来评估模型效果。所以在随机森林模型中,不需要验证集

② 从M个特征中随机选择m个特征,如果此时m=M,那么就相当于选取全部的特征,此时的树和普通的决策树并无区别。所以,当m取值越小,树的相关性和分类能力会降低;m越大,两者也会随之增大。选择最优的m则是随机森林中唯一的一个参数

上面两个随机性的引入,使得随机森林不容易陷入过拟合(数据随机和特征随机可以有效避免过拟合),并且具有很好的抗噪能力。

因为不需要考虑过拟合现象,所以在每棵树的生成过程中尽最大程度的生成,而不需要考虑剪枝

2. 如何选择优秀的特征

选择最优的特征也可以理解成特征的重要性,优秀的特征对于整个模型的重要性会比较高,不优秀的特征对于模型而言可有可无。

对于特征的重要性我们可以通过oob error(袋外错误率)来衡量,具体步骤如下:

① 对于每一棵树,选择相应的oob数据,并计算oob error1;

② 针对当前袋外数据oob 的样本特征x加入噪声干扰,再次计算袋外错误率oob error2;此处的噪声干扰可以想象成在特征x处改变样本值

③ 假设在森林中有N棵树,则特征x的重要性=

为什么这个可以体现特征x的重要性呢?

可以这样理解:在加入噪声干扰后,如果袋外错误率并没有发生变化,说明特征x对于样本的预测结果没有影响,即特征x的重要性低,反之说明特征x的重要性高。

优缺点
随机森林有许多优点:
  • 具有极高的准确率

  • 随机性的引入,使得随机森林不容易过拟合,且有很好的抗噪声能力

  • 能处理很高维度的数据,并且不用做特征选择

  • 既能处理离散型数据,也能处理连续型数据,数据集无需规范化

  • 训练速度快,可以得到变量重要性排序

  • 容易实现并行化

随机森林的缺点:
  • 当随机森林中的决策树个数很多时,训练时需要的空间和时间会较大

  • 随机森林模型解释性不强,有点算黑盒模型

写在后面的话

随机森林一定要先理解思想,死记硬背真心不划算。建议先回过头去看上上一篇的集成方法再去读随机森林,理解起来应该问题不大。

这节也没有实战,和Adaboost一样,前面四篇算法的实战项目你都可以通过随机森林去建模预测,而且性能一般都会优于前面四篇算法,有兴趣的同学不妨试一下。

到今天为止算法也介绍了有一半了,其中分别是决策树、k最近邻、朴素贝叶斯、支持向量机、Adaboost和今天的随机森林

后面会陆续更新:线性回归、逻辑回归、聚类、关联规则、PCA、lgb、xgb,可能还会更几篇图的算法,比如:隐马尔可夫、条件随机场这些

如果是自己自学的话,可以先不用去看图算法,难度有点偏大,而且对于初学者用处也不大,后面如果有需求可以再去补。

◆ ◆ ◆  ◆ ◆麟哥新书已经在京东上架了,我写了本书:《拿下Offer-数据分析师求职面试指南》,目前京东正在举行100-40活动,大家可以用相当于原价5折的预购价格购买,还是非常划算的:

数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。
管理员二维码:
猜你喜欢
● 卧槽!原来爬取B站弹幕这么简单● 厉害了!麟哥新书登顶京东销量排行榜!● 笑死人不偿命的知乎沙雕问题排行榜
● 用Python扒出B站那些“惊为天人”的阿婆主!● 你相信逛B站也能学编程吗
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值