Bagging与随机森林

来源:互联网 发布:申通淘宝面单打印软件 编辑:程序博客网 时间:2024/05/08 17:01

一、Bagging算法


Bagging是并行集成学习方法最著名的代表,可以用来提高学习算法准确度的方法,这种方法通过构造一个预测函数系列,然后以一定的方式将它们组合成一个预测函数。Bagging要求“不稳定”(不稳定是指数据集的小的变动能够使得分类结果的显著的变动)的分类方法。比如:决策树,神经网络算法。

Bagging的基本流程为:

1、首先采取随机采样(bootsrap),也就是从我们的训练集里面随机采集固定个数的样本,但是每采集一个样本后,都将样本放回。对于我们的Bagging算法,一般会随机采集和训练集样本数m一样个数的样本。这样得到的采样集和训练集样本的个数相同,但是样本内容不同。如果我们对有m个样本训练集做T次的随机采样,,则由于随机性,T个采样集各不相同。

2、随机采样后对样本进行训练,建立分类器(ID3、C4.5、CART、SVM、Logistic回归等算法)。

3、重复上述步骤n次,即可得到n个分类器。

4、将这些弱分类器按照一定策略结合起来就可以形成强分类器,进行结合时,Bagging通常会对分类任务使用简单投票法,对回归任务使用简单平均法。

Bagging算法的流程图:


在Bagging的随机采样中,有的样本出现了多次有的样本从未出现。对于一个样本,它在某一次含m个样本的训练集的随机采样中,大约有36.8%的数据没有被采样集。对于这部分大约36.8%的没有被采样到的数据,我们常常称之为袋外数据(Out Of Bag, 简称OOB)。这些数据没有参与训练集模型的拟合,因此可以用来检测模型的泛化能力。

从偏差-方差的角度来看,Bagging主要关注降低方差(处理过拟合),因此它在不剪枝的决策树、神经网络等一首样本扰动的学习器上效用更为明显。


二、随机森林


随机森林是Bagging的一个变体,它在Bagging的基础上做了一些修改,相当于Bagging算法的进化版。

随机森林的流程为:

1、从样本集中采用随机抽样选取出n个样本

2、从所有属性中随机选取包含k个属性的子集,然后从这个子集中选择最佳分割节点简历CART树。这里参数k控制了随机性的引入:若令k等于所有属性,则和传统的决策树算法一致,若令k=1,则是随机选取一个属性用于划分,一般情况下,推荐值k为log2

3、’重复以上步骤m次,就建立了m个CART树

4、这m个CART树形成随机森林,然后按照与Bagging相同的方法,决定数据属于哪一类。

也就是说随机森林主要对Bagging算法在第二步上做了改进,如果Bagging算法是以普通的决策树算法做为训练模型的话,则随机森林又在决策树的训练过程中引入了随机属性选择。当然,当基本分类器不为决策树算法,比如为SVM、Logistics等算法时,仍然可以运用随机森林算法。


三、结合策略


在Bagging和随机森林中都会将一些弱分类器按照一定的策略结合形成强分类器,下面就来看一下结合策略。

1.平均法

对于数值型输入h(x),最常见的结合策略是使用平均法。

简单平均法:


加权平均法:

简单平均法和加权平均法都比较好理解,这里不再详述。

2.投票法

对于分类任务,从一个类别集合中预测出一个标记,最常见的结合策略是使用投票法。投票机制简单来说就是对于训练好的多个基本分类器,分别使用这些分类器对测试数据进行预测每预测出一个类别相当于对这个类别投了一票,最后根据下面这些方法选出所属类别。

绝对多数投票法:

即若某标记得票过半即预测为该标记类别,否则拒绝预测。

相对多数投票法:

即得票最多的为分类结果,若有多个类别同时获得最高票,则随机选取一个。

加权投票法:

原创粉丝点击