转载于:https://blog.csdn.net/chenyukuai6625/article/details/73692347
https://blog.csdn.net/u012535605/article/details/78048573
一、bagging算法
1.1、bagging算法思想
bagging是bootstrap aggregating的缩写。该算法的思想是让学习算法训练多轮,每轮的训练集由从初始的训练集中随机取出的n个训练样本组成,某个初始训练样本在某轮训练集中可以出现多次或根本不出现(即所谓的有放回抽样),训练之后可得到一个预测函数序列h_1,⋯ ⋯h_n ,最终的预测函数H对分类问题采用投票方式,对回归问题采用简单平均方法对新示例进行判别。上面的算法思想可通过下图来进行理解:
算法的基本流程为:
输入为样本集D={(x,y1),(x2,y2),…(xm,ym)},弱学习器算法, 弱分类器迭代次数T。 输出为最终的强分类器f(x)
(1)对于t=1,2…,T:
(a)对训练集进行第t次随机采样,共采集m次,得到包含m个样本的采样集Dm;
(b)用采样集DmDm训练第m个弱学习器Gm(x);
(2) 如果是分类算法预测,则T个弱学习器投出最多票数的类别或者类别之一为最终类别。如果是回归算法,T个弱学习器得到的回归结果进行算术平均得到的值为最终的模型输出。
1.2、bagging算法案例
为了更好理解bagging的概念,提供下面一个例子。
X 表示一维属性,Y 表示类标号(1或-1)测试条件:当x<=k时,y=?;当x>k时,y=?;k为最佳分裂点
下表(绿色)为属性x对应的唯一正确的y类别。
现在进行5轮随机抽样(蓝色),结果如下:
每一轮随机抽样后,都生成一个分类器。然后再将五轮分类融合。
对比符号和实际类,我们可以发现:在该例子中,Bagging使得准确率可达90%。由此,总结一下bagging方法:
(1) Bagging通过降低基分类器的方差,改善了泛化误差;
(2)其性能依赖于基分类器的稳定性;如果基分类器不稳定,bagging有助于降低训练数据的随机波动导致的误差;如果稳定,则集成分类器的误差主要由基分类器的偏倚引起;
(3)由于每个样本被选中的概率相同,因此bagging并不侧重于训练数据集中的任何特定实例。
二、boosting算法
2.1、boosting算法的基本思想
boosting算法是Adaptive boosting的缩写,是一种迭代算法。每轮迭代中会在训练集上产生一个新的分类器,然后使用该分类器对所有样本进行分类,以评估每个样本的重要性(informative)。
具体来说,算法会为每个训练样本赋予一个权值。每次用训练完的新分类器标注各个样本,若某个样本点已被分类正确,则将其权值降低,并以该权重进行下一次数据的抽样(抽中的概率减小);若样本点分类错误,则提高其权值,并以该权重进行下一次数据的抽样(抽中的概率增大)。权值越高的样本在下一次训练中所占的比重越大,也就是说越难区分的样本在训练过程中会变得越来越重要。 整个迭代过程直到错误率足够小或达到一定次数才停止。
2.2、boosting算法的案例
以下图为例,来说明boosting算法的核心思想:
由图可以发现,boosting算法在迭代的过程中不断加强识别错误样本的学习比重,从而实现最终的强化学习。
三、Bagging和Boosting算法的区别
3.1 样本选择:
- Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
- Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。
3.2 样例权重:
- Bagging:使用均匀取样,每个样例的权重相等
- Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。
3.3 预测函数:
- Bagging:所有预测函数的权重相等。
- Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。
3.4 并行计算:
- Bagging:各个预测函数可以并行生成
- Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。