龙空技术网

机器学习:聊聊机器学习模型集成学习算法——Bagging

你看我独角兽吗 451

前言:

此刻你们对“bagging算法原理”都比较注意,你们都想要了解一些“bagging算法原理”的相关知识。那么小编也在网摘上网罗了一些有关“bagging算法原理””的相关资讯,希望你们能喜欢,各位老铁们一起来学习一下吧!

Bagging?

Bagging是一种用来提高学习算法准确度的集成方法,这种方法通过构造一队弱分类器,然后以一定的方式将它们组合成一个强分类器。Bagging是一种要求“不稳定”(不稳定是指数据集的小的变动能够使得分类结果的显著的变动)的分类方法。

Bagging和Boosting?

Bagging的特点在于随机采样,随机采样(bootsrap)就是从我们的训练集里面采集固定个数的样本,每采集一个样本后,都将样本放回,是有放回的随机抽样。

对Bagging算法,有数据集D,一般会随机采集n次样本数为D的训练集,这样得到的采样和训练集样本的个数相同,但样本内容不同(因为你可能对某个样本重复采样了几次)。如果对有D个样本训练集做n次随机采样,由于随机性,D个采样集各不相同。

注意到这和GBDT的子采样是不同的。GBDT的子采样是无放回采样,而Bagging的子采样是放回采样。

Out Of Bag(OOB)

对于一个样本,它在某一次含m个样本的训练集的随机采样中,每次被采集到的概率是1/m。不被采集到的概率为1−1/m。如果m次采样都没有被采集中的概率是(1−1/m)^m。当m→∞时,(1−1/m)^m→1/e≃0.368。也就是说,在bagging的每轮随机采样中,训练集中大约有36.8%的数据没有被采样集采集中。

对于这部分大约36.8%的没有被采样到的数据,我们常常称之为袋外数据(Out Of Bag, 简称OOB)。这些数据没有参与训练集模型的拟合,因此可以用来检测模型的泛化能力。

bagging对于弱学习器没有限制,这和Adaboost一样。但是最常用的一般也是决策树和神经网络。

bagging的集合策略也比较简单,对于分类问题,通常使用简单投票法,得到最多票数的类别或者类别之一为最终的模型输出。对于回归问题,通常使用简单平均法,对T个弱学习器得到的回归结果进行算术平均得到最终的模型输出。

由于Bagging算法每次都进行采样来训练模型,因此泛化能力很强,对于降低模型的方差很有作用。当然对于训练集的拟合程度就会差一些,也就是模型的偏差会大一些。

Bagging算法流程

以上我们对bagging算法的原理做了总结,这里就对bagging算法的流程做一个总结。相对于Boosting系列的Adaboost和GBDT,bagging算法要简单的多。

输入:样本集D={(x,y1),(x2,y2),…(xm,ym)},弱学习器算法, 弱分类器迭代次数T。

输出:最终的强分类器f(x)。

算法步骤:

对于t=1,2…,T:

对训练集进行第t次随机采样,共采集m次,得到包含m个样本的采样集Dm

用采样集Dm训练第m个弱学习器Gm(x)

如果是分类算法预测,则T个弱学习器投出最多票数的类别或者类别之一为最终类别。如果是回归算法,T个弱学习器得到的回归结果进行算术平均得到的值为最终的模型输出。

Bagging应用:随机森林算法

理解了bagging算法,随机森林(Random Forest,以下简称RF)就好理解了。它是Bagging算法的进化版,也就是说,它的思想仍然是bagging,但是进行了独有的改进。

我们都知道,RF使用了CART决策树作为弱学习器;在使用决策树的基础上,RF对决策树的建立做了改进,对于普通的决策树,我们会在节点上所有的N个样本特征中选择一个最优的特征来做决策树的左右子树划分,但是RF通过随机选择节点上的一部分样本特征,这个数字小于M,假设为M,然后在这些随机选择的M个样本特征中,选择一个最优的特征来做决策树的左右子树划分。这样进一步增强了模型的泛化能力。    

如果M=N,则此时RF的CART决策树和普通的CART决策树没有区别。M越小,则模型鲁棒性越强,当然此时对于训练集的拟合程度会变差。也就是说M越小,模型的方差会减小,但是偏差会增大。在实际案例中,一般会通过交叉验证调参获取一个合适的M的值。

Refrence

标签: #bagging算法原理 #bagging算法模型可解释性强