一:Bootstrap方法简介

简称自助法,是一种有放回的抽样方法,他是非参数统计中一种重要的方法,通过估计样本方差,进而对总体的分布特性进行统计推断。首先,Bootstrap通过重抽样(通过boostrap 采样法,初始训练集中约有63.2%的样本出现在采样集中),避免了Cross-Validation造成的样本减少问题,其次,Bootstrap也可以创造数据的随机性**。Bootstrap是一种有放回的重复抽样方法,抽样策略就是简单的随机抽样。**
采样步骤:
1,采用有放回的抽样的方式从原始样本中抽取一定数量的数据(采样数=样本数,假设样本为m个 )重复抽m次,得到一个自助样本。
2,根据得到的自助样本计算特定统计量。
3,重复上面过程N次,得到n个自助统计量
4,根据上述的n个自助统计量估计出真实值

二:bagging算法

2.1 算法原理:

Bagging(Bootstrapped Aggregation的简称)是并行式集成学习方法最著名的代表,对于给定数据处理任务,采用不同的模型、参数、特征训练出多个模型,最后采用简单多数投票(分类任务)或者加权平均的方式(回归任务)输出最终结果。基学习器可以是相同的模型,也可以是不同的,一般使用的是同一种基学习器,最常用的是cart决策树和神经网络。

随机森林抽取特征不平衡处理方法 随机森林 抽样原则_决策树


从上图可以看出,Bagging的弱学习器之间的确没有boosting那样的联系。它的特点在“随机采样”。那么什么是随机采样?其实就是基于boostrap算法进行采样。

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

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

在bagging的每轮随机采样中,训练集中大约有36.8%的数据没有被采样集采集中。

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

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

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

2.2 算法流程:

通过booststrap 算法随机采样出T个含m个训练样本的采样集,然后基于每个采样集训练出一个基学习器,然后再将这些基学习器进行结合输出结果,如上面所述,bagging算法通常对分类任务采用简单多数投票法产生结果,对于回归任务通常采用简单平均来产生结果。一个经典的trick是,弱分类预测时出现了两个类收到了同样票数的情形,则最简单的做法是随机选一个,也可以进一步考察学习器投票的置信度来确定最终胜者。

随机森林抽取特征不平衡处理方法 随机森林 抽样原则_机器学习_02


从偏差方差的角度看,bagging主要关注降低样本方差,因此他在不剪枝决策树,神经网络等易受样本扰动的学习器上效果更为明显。

三:随机森林算法(RF)

3.1 概念介绍:
在机器学习中,随机森林是由众多决策树(实际上是cart树)组成的,因为树的生成采用了随机的方法,所以又称为随机决策树,因此,随机森林中的每一棵树之间是没有任何关系的。随机森林其实就是一个包含多个决策树的分类器,并且最终的输出种类是由个别决策树输出种类的众数决定的(简单多数投票法则)。随机森林既可以处理连续值(c4.5),又可以处理离散值(id3),另外,还可以用来做聚类和异常值检测。
3.2 RF构造过程:
1,假如有N个样本,则有放回的随机选择N个样本(每次随机选择一个样本,然后返回继续选择)。这选择好了的N个样本用来训练一个决策树,作为决策树根节点处的样本。

2. 当每个样本有M个属性时,在决策树的每个节点需要分裂时,随机从一个样本的M个属性中选取出m个属性(虽说是随机的选择,实际上还是需要人工考察选择m个属性),满足条件m << M。然后从这m个属性中采用某种策略(比如说信息增益)来选择1个属性作为该节点的分裂属性。一般经验为m = log2M

3. 决策树形成过程中每个节点都要按照步骤2来分裂(很容易理解,如果下一次该节点选出来的那一个属性是刚刚其父节点分裂时用过的属性,则该节点已经达到了叶子节点,无须继续分裂了)。一直到不能够再分裂为止。注意整个决策树形成过程中没有进行剪枝。

4. 按照步骤1~3建立大量的决策树,这样就构成了随机森林了。

注意:
1,从上面的构建过程来看,随机森林的随机性体现在每棵树的训练样本是随机选择的,每个节点分裂属性也是随机的,有了这两个随机性质的保证,就使得最终集成的森林的泛化性能可通过个体学习器之间的差异度的提升而进一步提升,使得随机森林收敛到更低的泛化误差。同时,大大降低过拟合现象。这一点,也是随机森林和bagging的不同(随机森林对bagging的改动)–除了样本扰动外,还引入了属性扰动。
2, 在构建决策树的过程中是不需要剪枝的。 整个森林的树的数量和每棵树的特征需要人为进行设定。 构建决策树的时候分裂节点的选择是依据最小基尼系数的。
3.3随机森林的性能评估:
1,分类间隔
所谓的分裂间隔,就是指将正确分类的决策树比例减去错误分类的决策树的比例,通过平均每一个样本的分类间隔,就得到了随机的分类间隔,这个数目越大越好,说明准确性高,泛化效果好,稳定性高。
2,袋外误差
对于每一棵树都有一些样本没有被抽到,这些样本就被称为袋外样本,随机森林对于袋外样本的预测错误率成为袋外误差,袋外误差计算方式如下
1:计算每一个样本作为带外样本的分类情况
2:以投票方式判定每个样本分类情况
3:将错误分类的样本个数占总体样本的比率作为袋外误差
3.4随机森林的优缺点
随机森林具有很多的优点:

1,所有的数据都能够有效利用,而且不用人为的分出一部分数据来做cross-validation
,2,随机森林可以实现很高的精确度,但是只有很少的参数,而且对于分类和回归都适用,
3,不用担心过拟合的问题,
4,不需要事先做特征选择,每次只用随机的选取几个特征来训练树
它的缺点是:
相比于其他算法,其输出预测可能较慢。因为他对训练样本的拟和速度较慢。