集成学习--随机森林

混江龙づ霸主 提交于 2020-02-02 04:08:12

集成学习—Bagging和随机森林

Bagging

Bagging就是Bootstrap aggregating,自举汇聚法,亦称为装袋法。

与Boosting的不同:

  • Boosting在训练时会使用所有的数据集,而Bagging有其独特的采样方法,也就是Bootstrap

    假设有m个样本DD,则每次从样本总体中随机选取一个放入DiD_i中,注意的是该样本并没有在原样本总体中剔除,这样重复m次,得到新的样本DiD_iDiD_i中可以有重复的样本,并没有包含DD中所有样本

    一个样本在取样的过程中都没有被选到的概率为(11m)m(1-\frac{1}{m})^m,当m+m \rightarrow + \infty时,概率趋于1e\frac{1}{e},则说明在m很大时,新选取的样本是原样本总体的约64%

  • Boosting的每个基分类器有自身的系数,每次训练时数据集的权重也不同,而Bagging的每个基分类器,每个数据集都是平等同阶的

  • Boosting的每个基学习器需基于上一个学习器的结果进行学习,所以是串行计算,而Bagging能够实现并行计算

  • Boosting只能处理二分类任务,而Bagging能处理多分类任务

  • Bagging由于其独特的采样方式,故不需要测试集,每个基学习器只使用了大概64%的样本,而剩余的36%的样本可用作测试集来对泛化性能进行“包外估计”,另外这些测试卷还可以作为其他用途如决策树的剪枝,神经网络的过拟合判断等

个人理解:由于Bagging的每个分类器是同阶的,则有
E(D)=E(1ni=1nE(Di))=E(Di).  .Var=Var(1ni=1nVar(Di))=1nVar(Di).   E(D)=E(\frac{1}{n}\sum_{i=1}^nE(D_i))=E(D_i).\space\space偏差.\\ Var=Var(\frac{1}{n}\sum_{i=1}^nVar(D_i))=\frac{1}{n}Var(D_i).\space \space方差
所以Bagging的偏差与单个分类器很类似,但方差能够大幅度降低,Bagging依靠降低方差来降低误差。

但对于Boosting来说,因为每次权重的更新都是为了是决策结果更接近真实结果,故最终的偏差能够大幅度降低,但是每个分类器是串行生成,相关性很大,不能有效降低方差,Boosting依靠降低偏差来降低误差。


随机森林

随机森林是基于Bagging改进的一种算法

一句话说就是民主决策应用到决策树上,一般一个数据集只能生成一个决策树,但是由于Bagging的采样方法,故可以有多颗决策树,最终投票决定决策结果,步骤如下:假设有m个样本,每个样本都有k个属性

  • 首先类似Bagging的采样方法采样的数据集DiD_i
  • 在k个属性中随机选取d个属性,通常d=log2kd=log_2k
  • 根据此d个属性生成决策树,每棵树尽可能生长并不剪枝
  • 最终循环T次后投票决定最终决策结果

随机体现在第一和第二步上。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!