Bagging与随机森林算法

注:本篇博客主要参考了博客Bagging与随机森林算法原理总结

在集成学习中,有两个流派—— boosting 派系 和 bagging 流派。前者的特点是各个弱学习器之间有依赖关系,而后者的特点是各个弱学习器之间没有依赖关系,可以并行拟合。其中,随机森林算法便是 bagging 流派的典型代表。

Bagging原理

我们知道,为了得到泛化性能强的集成,则应尽可能地使弱分类器彼此之间相互独立。虽然,我们无法真正的实现个体分类器之间的相互独立,但是可以设法使基分类器间有较大的差异。例如给定有 mm 个样本的数据集,我们可以对其进行有放回的采样。在此情况下,一个样本每次被抽到的概率为 1m\frac{1}{m}。因此,在 mm 次采样中,一个样本始终未被抽到的概率为 (11m)m(1 - \frac{1}{m})^{m}。熟悉高数的同学不难知道,当 mm \rightarrow \infty时,(11m)m=1e0.368(1 - \frac{1}{m})^{m} = \frac{1}{e} \simeq 0.368。也就是说,在每轮采样中,大约有 36.8%36.8\%的样本未被采样。

如此,我们既保证了每个基分类器的训练数据有差异,从而使得基分类器彼此间有较大差别,又确保每个基分类器使用到了大部分样本进行训练,保证基分类器效果不会太差。

此外,我们将大约36.8%36.8\%的样本称为袋外数据(Out of Bag,简称 OOB)。这些数据没有参与分类器的训练过程,可以用作测试集以检验模型效果。

同样地,Bagging 算法对于弱分类器没有限制,但常使用决策树和神经网络。并且,其集成策略也比较简单——对于分类问题,通常使用简单的投票法,得到最多票数的类别将成为模型的最终输出;而针对回归问题,通常使用简单平均法,对每个分类器的输出进行算术平均得到最终的模型输出。

最后,Bagging 算法如下图所示。

Bagging与随机森林算法

随机森林算法原理

至此,我们对 Bagging 算法有了一定的认识。那么接下来,我们就可以继续介绍 随机森林(Random Forest, 即 RF)。

首先,RF 使用 CART 决策树作为弱分类器;其次,在使用决策树的基础上,RF 对决策树的建立做了改进——在普通的决策树中,我们会在节点上所有的 n 个样本特征中选择一个最优的特征来做决策树的左右子树划分,但 RF 通过随机选择节点上的一部分样本特征,假设为 nsubn_{sub}。然后 RF 在这些随机选择的 nsubn_{sub} 个样本特征中,选择一个最优的特征来做决策树的左右子树划分。

如果 nsub=nn_{sub} = n,则此时的 RFCART 决策树与普通的决策树没有区别。此外,nsubn_{sub} 越小,模型的方差会减小,但是偏移会增大。在算法具体实现中,一般会通过交叉验证调参获取一个合适的 nsubn_{sub}值。

最后,RF 算法如下图所示。

Bagging与随机森林算法

参考文献

  1. 周志华 《机器学习》
  2. 刘建平 Bagging与随机森林算法原理小结