Bagging算法最全解析-机器学习

Bagging算法报告

目录

  1. 基本概念以及算法流程 1
    1.1基本概念 1
    1.2 算法流程 1

  2. 基本性质及其物理意义 3
    2.1. 自举汇聚法 3
    2.2. OOB 错误 4

  3. 类似算法分析比较 5
    3.1 Bagging和Boosting 5
    3.2 Bagging和Rand Forest 6

  4. 可能的发展方向与改进 6
    4.1 Rand Forest 6
    4.2 extra trees 7
    4.3 Totally Random Trees Embedding 7
    4.4 Isolation Forest 8

  5. 具体算法应用 8
    5.1 图像分类 8
    5.2文本分类 9
    5.3局部Bagging方法在人脸识别中的应用 9

  6. 基本概念以及算法流程
    1.1基本概念
    Bagging是并行式集成学习的最著名代表,名字是由Bootstrap AGGregatING缩写而来, Bagging 是最早,也是最基本的集成技术之一。它是由 Leo Breiman 在 1994 年提出的。在集成算法中,Bagging 方法在原始训练集的随机子集上构建一类黑盒估计器的多个实例,然后把这些估计器的预测结果结合起来形成最终的预测结果。该算法的思想是让学习算法训练多轮,每轮的训练集由从初始的训练集中随机取出的M个训练样本组成,某个初始训练样本在某轮训练集中可以出现多次或根本不出现(即有放回抽样),训练之后可得到一个预测函数序列 ,最终的预测函数 对分类问题采用投票方式,对回归问题采用简单平均方法对新示例进行判别。
    1.2 算法流程
    Bagging是并行式集成学习方法的典型代表,它直接基于自助采样法。给定包含M个样本的数据集,我们先随机取出一个样本放入采样中,再把该样本放回初始数据集,使得下次采样时该样本仍有可能被选中。这样,经过M次随机采样操作,我们得到含M个样本的采样集,初始训练集中有的样本在采样集里多次出现,有的则从未出现。初始训练集中约有63.2%的样本出现在采样集中。
    照这样,我们可采样出T个含M个训练样本的采样集,然后基于每个采样集训练出一个基学习器,再将这些基学习器进行结合。这就是Bagging的基本流程。在对预测输出进行结合时,Bagging通常对分类任务使用简单投票法,对回归任务使用简单平均法。若分类预测时出现两个收到同样票数的情形,则最简单的做法是随机选择一个,也可进一步考察学习器投票的置信度来确定最终胜者。
    1) 采样
    设大小为 N 的样本 X。我们可以通过随机均匀的从训练集中抽取 N 个元素,作为采集池,每个元素被抽取到的概率都是 。假设我们一个人从一个袋子里面拿球。在每个步骤中,将所选择的球放回到袋子中,以便相应的进行下一次选择,即从相同数量的球 N 开始。请注意,因为我们将球是放回的,所以新样本中可能存在重复。我们称这个新样本为 。通过重复该过程 M 次,我们创建 M 个采集样本 。重复以上采样步骤T次,最后,我们有T个足够数量的训练集,可以计算原始分布的各种统计数据。
    2) 训练
    为每一个生成的样本 ,我们都去训练一个专属于它的分类器 。这个分类器可根据具体的情况而定,可以是决策树,KNN等
    3) 分类和回归
    对于分类问题:由投票表决产生的分类结果;对于回归问题,由T个模型预测结果的均值作为最后预测的结果

Bagging通过在不同数据集上训练模型降低分类器的方差。换句话说,Bagging可以预防过拟合。Bagging的有效性来自不同训练数据集上单独模型的不同,它们的误差在投票过程中相互抵消。此外,某些Bootstrap训练样本很可能略去离散值。

  1. 基本性质及其物理意义
    2.1. 自举汇聚法
    Bagging是通过结合几个模型降低泛化误差的技术。主要想法是分别训练几个不同的模型,然后让所有模型表决测试样例的输出。 这是机器学习中常规策略的一个例子,被称为模型平均(Model Averaging)。采用这种策略的技术被称为集成方法。
    该方法通过在构建模型的过程中引入随机性,来减少基估计器的方差(例如,决策树)。 在多数情况下,Bagging 方法提供了一种非常简单的方式来对单一模型进行改进,而无需修改背后的算法。 因为 Bagging 方法可以减小过拟合,所以通常在强分类器和复杂模型上使用时表现的很好(例如,完全决策树,Fully Developed Decision Trees),相比之下 Boosting 方法则在弱模型上表现更好(例如,浅层决策树,Shallow Decision Trees)。
    将 Bagging 在实践中与决策树进行比较。为此,我将使用 sklearn 文档中的例子:

(假设个体错误不相关)
决策树的误差为:

Bagging 的误差为:

从上图中可以看出,Bagging 误差中的方差比决策树要小很多,已经在理论层面证明了这一点。Bagging 算法对小样本数据集是非常有效的。甚至丢弃训练数据的一小部分构建异构数据集也是可以的。如果你有一个大型数据集,则可以考虑生成尺寸小得多的 Bootstrap 样本。

2.2. OOB 错误
对于一个样本,它在某一次含N个样本的训练集的随机采样中,每次被采集到的概率是 。不被采集到的概率为 。如果N次采样都没有被采集中的概率是 。当N→∞时, 。也就是说,在Bagging的每轮随机采样中,训练集中大约有36.8%的数据没有被采样集采集中。对于这部分大约36.8%的没有被采样到的数据,我们常常称之为袋外数据(Out Of Bag, 简称OOB)。这些数据没有参与训练集模型的拟合,因此可以用来检测模型的泛化能力。
由于Bagging算法每次都进行采样来训练模型,因此泛化能力很强,对于降低模型的方差很有作用。当然对于训练集的拟合程度就会差一些,也就是模型的偏倚会大一些。自助采样法为Bagging算法提供了估计模型泛化性能的方法,即包外估计。由于每个基学习器只是用了初始训练集中约63.2%的样本,剩下约36.8%的样本可用作验证集来对泛化性能进行“包外估计”。为此需记录每个基学习器所使用的训练样本,不妨设 表示 实际使用的训练样本集,令 表示对样本x的包外预测,则仅考虑那些未使用x训练的基学习器在x上的预测,有

则Bagging泛化误差的包外估计为:

从偏差-方差的角度看,Bagging主要关注降低方差,Boosting主要关注降低偏差。

  1. 类似算法分析比较
    3.1 Bagging和Boosting
    当训练集有很小地变化时都会导致预测结果有明显地不同,在这种情况下,Bagging会有很好地效果。Bagging更适合应用到具有很小偏差(small bias)地分类方法中。Bagging减小方差通过平均方法(averaging),如果你的模型具有很高的偏差,Bagging并不会对模型有很大的影响,就好比是一堆臭皮匠平均下来还是臭皮匠。但是,如果你的模型个个都是诸葛亮(都很好地拟合训练集,低方差),那么如果我把这些诸葛亮的决策结果平均下来,会产生很好地效果。
    Boosting的原理就好比每个人(weak learners)都是一个比平民(随机猜测)厉害点的人物,我这里有个大问题需要这些人解决一下,Boosting派出第1个人解决了一些问题,但是剩下了一些难题,接着Boosting派出第2个人主要解决第1个人剩下地难题,接着Boosting派出第3个人解决第2个人剩下地难题,依此类推……到最后,Boosting一定可以很好地解决问题。从上面地例子中,我们也看出了每个人有很高地偏差(更适合解决某一部分问题,也就是不能很好地拟合训练集),但是,Boosting通过上面的手段不仅平均了大家的智慧而且还减小了某个人偏差的问题。
    对于稳定的模型来说,Bagging并不会工作地很好,而Boosting可得会有帮助。如果在训练集上有noisy数据,Boosting会很快地过拟合,降低模型的性能,而Bagging不存在这样地问题。
    Bagging和Boosting的使用区别如下:
    1)样本选择:
    Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
    Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。
    2)样例权重
    Bagging:使用均匀取样,每个样例的权重相等
    Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。
    3)预测函数
    Bagging:所有预测函数的权重相等。
    Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。
    4)并行计算
    Bagging:各个预测函数可以并行生成
    Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。
    5)计算效果
    Bagging主要减小了variance,而Boosting主要减小了bias,而这种差异直接推动结合Bagging和Boosting的MultiBoosting的诞生。

3.2 Bagging和Rand Forest
1)Rand Forest是选与输入样本的数目相同多的次数(可能一个样本会被选取多次,同时也会造成一些样本不会被选取到),而Bagging一般选取比输入样本的数目少的样本
2)bagging是用全部特征来得到分类器,而Rand Forest是需要从全部特征中选取其中的一部分来训练得到分类器; 一般Rand forest效果比Bagging效果好!

  1. 可能的发展方向与改进

由于Bagging在实际应用中的良好特性,基于Bagging,有很多变种算法,应用也很广泛,不光可以用于分类回归,还可以用于特征转换,异常点检测等。
4.1 Rand Forest
Rand Forest是Bagging算法的进化版,简称RF。是在Bagging的基础之上,进一步引入了随机属性选择,即在决策树的训练过程中,引入了随机属性选择,增加了基学习器的多样性。也就是说,它的思想仍然是bagging,但是进行了独有的改进。
首先,RF使用了CART决策树作为弱学习器,这让我们想到了梯度提升树GBDT。第二,在使用决策树的基础上,RF对决策树的建立做了改进,对于普通的决策树,我们会在节点上所有的N个样本特征中选择一个最优的特征来做决策树的左右子树划分,但是RF通过随机选择节点上的一部分样本特征,这个数字小于N,假设为 ,然后在这些随机选择的 个样本特征中,选择一个最优的特征来做决策树的左右子树划分。这样进一步增强了模型的泛化能力。
4.2 extra trees
extra trees是RF的一个变种, 原理几乎和RF一模一样,仅有区别有:
1) 对于每个决策树的训练集,RF采用的是随机采样bootstrap来选择采样集作为每个决策树的训练集,而extra trees一般不采用随机采样,即每个决策树采用原始训练集。
2) 在选定了划分特征后,RF的决策树会基于基尼系数,均方差之类的原则,选择一个最优的特征值划分点,这和传统的决策树相同。但是extra trees比较的激进,他会随机的选择一个特征值来划分决策树。
从第二点可以看出,由于随机选择了特征值的划分点位,而不是最优点位,这样会导致生成的决策树的规模一般会大于RF所生成的决策树。也就是说,模型的方差相对于RF进一步减少,但是偏倚相对于RF进一步增大。在某些时候,extra trees的泛化能力比RF更好。
4.3 Totally Random Trees Embedding
Totally Random Trees Embedding(简称 TRTE)是一种非监督学习的数据转化方法。它将低维的数据集映射到高维,从而让映射到高维的数据更好的运用于分类回归模型。我们知道,在支持向量机中运用了核方法来将低维的数据集映射到高维,此处TRTE提供了另外一种方法。
TRTE在数据转化的过程也使用了类似于RF的方法,建立T个决策树来拟合数据。当决策树建立完毕以后,数据集里的每个数据在T个决策树中叶子节点的位置也定下来了。比如我们有3颗决策树,每个决策树有5个叶子节点,某个数据特征x划分到第一个决策树的第2个叶子节点,第二个决策树的第3个叶子节点,第三个决策树的第5个叶子节点。则x映射后的特征编码为(0,1,0,0,0, 0,0,1,0,0, 0,0,0,0,1), 有15维的高维特征。这里特征维度之间加上空格是为了强调三颗决策树各自的子编码。
映射到高维特征后,可以继续使用监督学习的各种分类回归算法了。
4.4 Isolation Forest
Isolation Forest(以下简称IForest)是一种异常点检测的方法。它也使用了类似于RF的方法来检测异常点。
对于在T个决策树的样本集,IForest也会对训练集进行随机采样,但是采样个数不需要和RF一样,对于RF,需要采样到采样集样本个数等于训练集个数。但是IForest不需要采样这么多,一般来说,采样个数要远远小于训练集个数。为什么呢?因为我们的目的是异常点检测,只需要部分的样本我们一般就可以将异常点区别出来了。
对于每一个决策树的建立, IForest采用随机选择一个划分特征,对划分特征随机选择一个划分阈值。这点也和RF不同。
另外,IForest一般会选择一个比较小的最大决策树深度max_depth,原因同样本采集,用少量的异常点检测一般不需要这么大规模的决策树。
对于异常点的判断,则是将测试样本点x拟合到T颗决策树。计算在每颗决策树上该样本的叶子节点的深度 ,从而可以计算出平均高度h(x)。此时我们用下面的公式计算样本点x的异常概率:

其中,m为样本个数。c(m)的表达式为:
, 为欧拉常数
s(x,m)的取值范围是[0,1],取值越接近于1,则是异常点的概率也越大。

  1. 具体算法应用

Bagging的优势在于当原始样本中有噪声数据时,通过Bagging抽样,那么就有1/3的噪声样本不会被训练。对于受噪声影响的分类器,Bagging对模型是有帮助的。所以说Bagging可以降低模型的方差,不容易受噪声的影响,广泛应用在不稳定的模型,或者倾向于过拟合的模型。
5.1 图像分类
为了增强集成分类器中各个基分类器之间的差异性,有文献[1]提出了一种基于Bagging算法的异构多分类器。首先,Bagging算法将对初始训练样本进行预处理,获得差异化的训练样本集。其次,在基分类器的选择上,极限学习机(Extreme learning machine, ELM)和支撑矢量机(Support vector machine,SVM)将按照1:1的比例作为集成分类器中的个体,组成最终的异构多分类器。通过图像分类对比实验证明,基于Bagging算法的异构多分类器在图像分类的正确率上和输出稳定性都表现出了较好的性能。
5.2文本分类
在文本分类中,集成学习是提高分类器预测能力的方法之一。Bagging算法是目前比较流行的集成学习方法。针对袋装算法中较弱的分类器权重相同的问题,提出了一种改进的袋装算法。通过弱分类器的结果得到弱分类器的置信度,通过置信度得到投票权重。将该算法应用到属性Baggingalgorithm中,设计了一个中文文本分类器。以kNN作为较弱的分类器模型,对搜狗实验室的新闻语料库进行分类,实验结果表明,该算法比属性Bagging算法有更高的准确率。
5.3局部Bagging方法在人脸识别中的应用
Bagging方法无法在稳定的分类器(如最近邻分类器)上构建多样的分量分类器,因此它不适合于稳定的分类器。同时,小样本特性Bagging也很难应用于人脸识别等任务中。有文章提出了一种局部Bagging(L-Bagging)方法以同时解决上述两个问题。L-Bagging和Bagging的主要区别是L-Bagging在每个事先划分好的局部区域内进行自助集的采样而不是如Bagging那样在原始的样本集上采样。由于局部区域的维数通常远远小于训练样本数,并且分量分类器又是构建在不同的局部区域上的,因此L-Bagging方法不仅有效地解决了小样本问题,而且产生了更多样的分量分类器。在4个标准的人脸数据库(AR,Yale,ORL和YaleB)上的实验结果表明所提出的L-Bagging方法是有效的,并且对光照、遮挡及轻微的姿态变化是鲁棒的。

你可能感兴趣的:(机器学习,机器学习)