随机森林算法原理

bagging+决策树=随机森林

在学习随机森林之前首先了解一下bagging算法思想:
Bagging和Boosting都是将已有的分类或回归算法通过一定方式组合起来,形成一个性能更加强大分类器,更准确的说这是一种分类算法的组装方法。即将弱分类器组装成强分类器的方法。
Bagging (bootstrap aggregating)即套袋法,其算法过程如下:
a)从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping(它是一种有放回的抽样方法,有可能抽到重复的样本)的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进行k轮抽取,得到k个训练集。(k个训练集之间是相互独立的)
b)每次使用一个训练集得到一个模型,k个训练集共得到k个模型。(注:这里并没有具体的分类算法或回归方法,我们可以根据具体问题采用不同的分类或回归方法,如决策树、感知器等)
c)对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)

集成学习就是组合这里的多个弱监督模型以期得到一个更好更全面的强监督模型,集成学习潜在的思想是即便某一个弱分类器得到了错误的预测,其他的弱分类器也可以将错误纠正回来,一般来说,要获得好的集成,个体学习器不能太坏要有一定的准确性,并且要有“多样性”,即学习器之间存在差异
回顾bagging,Bagging的弱学习器之间的确没有boosting那样的联系。它的特点在“随机采样”。随机采样(bootsrap)就是从我们的训练集里面采集固定个数的样本,但是每采集一个样本后,都将样本放回。也就是说,之前采集到的样本在放回后有可能继续被采集到。对于我们的Bagging算法,一般会随机采集和训练集样本数m一样个数的样本。这样得到的采样集和训练集样本的个数相同,但是样本内容不同。如果我们对有m个样本训练集做T次的随机采样,则由于随机性,T个采样集各不相同。
注意到这和GBDT的子采样是不同的。GBDT的子采样是无放回采样,而Bagging的子采样是放回采样。
对于一个样本,它在某一次含m个样本的训练集的随机采样中,每次被采集到的概率是1/m。不被采集到的概率为1−1/m。如果m次采样都没有被采集中的概率是
在这里插入图片描述
当m→∞时,概率为1/e

也就是说,在bagging的每轮随机采样中,训练集中大约有36.8%的数据没有被采样集采集中。
对于这部分大约36.8%的没有被采样到的数据,我们常常称之为袋外数据(Out Of Bag, 简称OOB)。这些数据没有参与训练集模型的拟合,因此可以用来检测模型的泛化能力。
随机森林(Random Forest)是bagging算法的进化版,它的思想仍然是bagging,但是进行了独有的改进。
首先,RF使用了CART决策树作为弱分类器。第二,在使用决策树的基础上,RF对决策树的建立做了改进,对于普通的决策树,我们会在节点上所有的n个样本特征中选择一个最优的特征来做决策树的左右子树划分,但是RF通过随机选择节点上的一部分样本特征,这个数字小于n,假设为nsub,然后在这些随机选择的nsub个样本特征中,选择一个最优的特征来做决策树的左右子树划分。这样进一步增强了模型的泛化能力。
(如果nsub=n,则此时RF的CART决策树和普通的CART决策树没有区别。nsub越小,则模型约健壮,当然此时对于训练集的拟合程度会变差。也就是说nsub越小,模型的方差会减小,但是偏倚会增大。在实际案例中,一般会通过交叉验证调参获取一个合适的nsub的值)
在建立每一颗决策树的时候,需要注意两点:采样和完全分裂,首先是两个随机采样的过程,随机森林对输入的数据进行行、列的采样,对于行采样,采用的是有放回的方式,也就是在采集得到的样本集合中,可能有重复的样本。假设输入样本为N,那么采样的样本也为N,这样使得在训练的时候,每一棵树的输入样本都不是全部的样本,使得相对不容易出现over-fitting。然后对列进行采样,从M个feature中,选择m个(m<<M),对采集之后的数据使用完全分裂的方式建立决策树,但是随机森林不需要剪枝,因为前面的两个随机性就算不减枝也不会出现over-fitting。

总结RF算法
输入样本集D={(x,y1),(x2,y2),…(xm,ym)},弱分类器迭代次数T
输出为最终的强分类器f(x)
1)对训练集进行t次随机采样,共采集m次,得到包含m个样本的采样集Dt;
2)输出为样本集Dt训练第t个决策树模型Gt(x),在训练决策树模型的节点的时候,在节点上所有的样本特征中选择一部分样本特征, 在这些随机选择的部分样本特征中选择一个最优的特征来做决策树的左右子树划分;
3)如果是分类算法预测,则T个弱学习器投出最多票数的类别或者类别之一为最终类别。如果是回归算法,T个弱学习器得到的回归结果进行算术平均得到的值为最终的模型输出;

随机森林的优缺点:
优点:

  • 训练速度快
  • 在创建随机森林的时候,对generlization error使用的是无偏估计
  • 它能够处理很高维度(feature很多)的数据,并且不用做特征选择
  • 避免过拟合现象
  • 可以作为一种特征选择的工具,输出变量的重要性排序
    缺点:
  • 随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟合
  • 对于有不同取值的属性的数据,取值划分较多的属性会对随机森林产生更大的影响,所以随机森林在这种数据上产出的属性权值是不可信的。

随机森林的参数

随机森林有2个参数需要人为控制,一个是森林中树的数量,一般建议取很大。另一个是m的大小,推荐m的值为M的均方根(将所有值平方求和,求其均值,再开平方,就得到均方根值)
关于随机森林的参数详细的参考信息,参考链接:https://blog.csdn.net/R18830287035/article/details/89257857
参考资料:机器学习-周志华

问题:树形模型为什么不需要归一化?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值