码迷,mamicode.com
首页 > 其他好文 > 详细

Ensemble Learning 之 Bagging 与 Random Forest

时间:2016-07-15 19:42:13      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:

Bagging 即为 Boostrap Aggregation,也是一种集成学习的方式,之前在已经介绍过关与 Ensemble Learning 的内容与评价标准,其中“多样性”体现在应尽可能的使各个基学习器不同,Bagging 的做法是这样的,给定训练集 $D$ ,对 $D$ 进行 Bootstrap 采样,得到若干个不同的子集,Bootstrap 会确保各个子集有一定的交集,分别在各个子集上训练得到基分类器并且组合起来共同进行决策,这便是 Bagging 的思想。

Bootstrap Sampling 是这样执行的,对于有 $m$ 个样本的数据集 $D$,进行 $m$ 次有放回采样得到数据集 $D’$ ,放回采样使得 $D’$ 中有的样本重复出现,有的样本则没有出现,简单估计一下,某个样本在 $m$ 次采样中始终没被采到的概率为 $(1- \frac{1}{m})^m$ ,取极限:

\[\lim_{m \rightarrow \infty}(1- \frac{1}{m})^m = \frac{1}{e} \approx 0.368\]

即 $D$ 中的样本大概有 63.2% 几率出现在 $D’$ 中。

采样出 B 个 Bootstrap 样本集 $D_1 ,D_2 , …,D_B$ ,对这 B 个样本集分别训练一个基学习器 $T_b(x)$ ,结合这些基学习器共同作出决策。决策时,在分类任务中通常采用投票法,若两个类别票数一样,最简单的做法是随机选择一个;而回归任务则一般使用简单平均法。整个流程如下所示:

技术分享

综上给出 Bagging 的的学习算法:

输入:训练集$D = \left\{ (x_i,y_i) \right \}_{i=1}^N $  与参数 B

1. 采样得到 B 个 Bootstrap 训练集:$D_b ,b = 1,2,…,B.$

2. $for$ $b = 1,2,…B$ $do$:

      用 Bootstrap 训练集 $D_b$ 得到基学习器 $T_b(x)$;

3. 组合 B 个学习器得到最终模型 $T(x) = \sum_bT_b(x)$.

 

由于 Bagging 中各个基学习器独立进行,简直再适合并行不过了,而且速度非常快,下图左为对 CART 进行 Bagging 后效果的提升,但是 Bagging 效果通常不如 Boosting ,下图右为两者的对比。

技术分享

Random Forest

Random Forest 是建立在Bagging 上的概念,在构建 Bagging 集成的基础上在 Decision Tree 训练的过程中进一步引入了随机属性选择,具体来说,假设当前待分裂节点有 $d$ 个特征,Bagging 中的决策树在分裂时会在所有 $d$ 个特征中选出一个最优特征用作划分特征;而 Random Forest 对于待分裂节点,先在 $d$ 个特征集集中随机选取包含 $k$ 个特征的子集,然后在这 $k$ 个子集中选择最优特征来划分数据集,这里参数 $k$ 控制了随机程度,若 $k = d$ ,则 Random Forest = Bagging ;若 $k=1$ 则代表随机选取一个属性进行划分;一般性况下,推荐选取 $k = log_2 d$ 。Random Forest 是长这样子的。

技术分享

Random Forest 在许多任务上表现非常良好,而且易于实现、开销小,只对 Bagging 做了很小的改动,Bagging 中的“多样性”仅仅来自于对样本的扰动,而随机森林中加上了来自特征的扰动,正是由于这个改动,随机森林比 Bagging 拥有更小的泛化误差。而且使得基学习器更加“多样”。但 Random Forest 效果还是不如 Gradient Boosting ,如下图所示:

 

技术分享

Bias and Variance 分析

从Bias 与 Variance 的角度来分析 Bagging 与 Boosting 的话,Bagging 是对样本重采样,对每一重采样得到的子样本集训练一个基学习器,最后取平均。由于子样本集的相似性以及使用的是同种学习器,因此各学习器有近似相等的 Bias 和Variance(但学习器并不独立)。用 Bagging 组合 B 个模型,每个每个模型的损失用 $L_b$ 表示,由于:

\[E [\bar{X}] = E[X]\]

所以 Bagging 后的 Bias 和单个基学习器的接近,并不能显著降低bias,但是若各基学习器独立,根据 $Var(\bar{X}) = \frac{1}{N}Var(X)$ 则有:

\[Var( \frac{1}{N}\sum_bL_b) = \frac{1}{N}Var(L_b)\]

所以 Bagging 可以显著降低 Variance。

Boosting从优化角度来看,每一次迭代都比上一次更加精准,Adaboost 是从改变样本权值角度出发, Gradient Boosting 是从减小残差出发,所以说Boosting主要还是靠降低bias来提升预测精度。

综上, Bagging 降低 Bias ,Boosting 降低 Variance .

Ensemble Learning 之 Bagging 与 Random Forest

标签:

原文地址:http://www.cnblogs.com/ooon/p/5674527.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!