6.6.2 集成算法之 Bagging
Bagging 是将一系列弱分类器 F1(x),F2(x),...,Fb(x)并行进行训练,然后对结果取平均值(Regression),或者投票(Classification)而产生最终预测结果,其基本流程如图6-27所示。Bagging整个过程一共进行了T轮训练,每一轮使用的弱分类器都是二叉树,但读取的训练数据集不同。在每个弱分类器训练中,从样本中随机有放回地抽取N个样本,N是样本集样本的个数。在这个过程中,某一个特定的样本X(i)可能被使用多次,也可能未被使用。各个弱分类器抽取样本的过程是独立的。
RandomForest(随机森林)是最著名也是最实用的Bagging算法之一。正如其名字一般,“随机森林”由多棵树组成,单独一棵树是一个弱分类器,将很多树组合在一起,就形成了具有强大预测能力的“森林”。这个组合的过程就是通过Bagging完成的。每一棵树是一个弱分类器,在样本集的一个Bootstrap上训练完成。最终将T棵树的结果汇总(投票或取平均值),生成最终的输出。
但随机森林不止如此。在上述介绍Bagging的基础上,对于每一个弱分类器,在训练前除了随机选择样本(Bagging的基本定义)外,还要从特征集中随机选出一个特征子集来训练。这样做是为了让每棵树学习得不要太相似—如果有几个特征和目标变量是强相关的,那么这些特征在所有树中都会被挑选出来。随机森林算法从n个特征中随机选出其中的p个用于训练,可以有效防止这种情况发生,每棵树在受限的p个变量中进行训练,可以让不同的树“长得更不一样”。
下面我们给出随机森林的具体算法:
第6章 机器学习算法
183