一文搞懂AdaBoost集成算法

一、Boosting算法

Boosting集成分类器包含多个非常简单的成员分类器,这些成员分类器的性能仅好于随机猜想,常被称为弱学习机。典型的弱学习机的例子就是单层决策树。Boosting算法主要针对难以区分的样本,弱学习机通过在分类错误的样本上进行学习来提高继承分类器的分类性能。Boosting与Bagging不同,在Boosting的初始化阶段采用的是无返回抽样从训练样本中随机抽取一个子集,而Bagging采用的是有放回的抽取。Boosting的过程由四个步骤组成:

1、从训练集D中以无放回抽样方式随机抽取一个训练子集d1,用于弱学习机C1的训练。

2、从训练集D中以无放回抽样方式随机抽取一个训练子集d2,并将C1中误误分类样本的50%加入到训练集中,训练得到弱学习机C2。

3、从训练集D中抽取C1和C2分类结果不一致的训练样本生成训练样本集d3,用d3来训练第三个弱学习机C3。

4、通过多数投票来组合弱学习机C1、C2和C3。

Boosting与Bagging模型相比,Boosting可以同时降低偏差也方差,Bagging只能降低模型的方差。在实际应用中,Boosting算法也还是存在明显的高方差问题,也就是过拟合。

二、AdaBoost算法

AdaBoost算法与Boosting算法不同,它是使用整个训练集来训练弱学习机,其中训练样本在每次迭代的过程中都会重新被赋予一个权重,在上一个弱学习机错误的基础上进行学习来构建一个更加强大的分类器。下面通过一个图来了解AdaBoost算法的工作过程

训练样本由两个不同的种类(蓝球和红球)所组成。在第一幅图中所有的样本都被赋予了相同的权重,通过训练集的训练,我们可以获取到一个单层的决策树(代表图中的虚线),它通过最小化代价函数(样本不纯度)来划分两类不同的样本,其中有两个篮球和一个红球被错误的划分。在第二次训练的过程中,两被错误划分个篮球和一个被错误划分的红色被赋予更大的权重(球变得更大),同时还可以降低正确划分样本的权重,在本次训练的过程中更加专注于权重大的样本,也就是划分错误的样本。通过重复这个过程,最后直至样本划分正确。然后,得到一个弱学习机的组合,通过多数投票的方式来决定最后的预测结果。

AdaBoost算法的步骤如下:

1、以相同的初始值来初始化样本的权重ω,并且样本权重之和为1。

2、在m轮boosting操作中,对第j轮做如下操作

3、训练一个加权的弱学习机:C(j)=train(X,y,ω)

4、预测样本类标pred_y=predict(C(j),X)

5、计算权重错误率ε=ω*(pred_y==y)

6、计算相关系数

7、更新权重

8、归一化权重,并保证权重之和为1

9、完成最终预测

可能看完上面AdaBoost的步骤之后还不是很明白,下面通过一个实例来说明一下

三、AdaBoost算法实例讲解

上表表示的是10个一维样本的数据。第一列表示样本的编号,第二列表示样本特征的值,第三列表示样本所对应的实际类标,第四列表示的是样本的权重值,第五列表示的是预测的样本,第六列表示预测的类标是否准确,第七列表示的是样本权重更新后的值。根据上面AdaBoost的步骤,详细介绍权重的更新过程

从第5步开始:

5、计算权重的错误率,预测类标与实际类标相等用0表示,否则用1表示,所以预测错误的样本有三个

6、计算相关系数

7、更新权重

8、权重归一化

通过一轮权重的更新可以发现,之前预测正确的权重由0.1变成了0.072,预测错误的权重由0.1变成了0.167。所以说,在权重更新的过程中,会增大预测错误样本的权重,同时也会减少预测正确样本的权重。

四、使用sklearn来应用AdaBoost算法

1、决策树在训练集和测试集上的准确率

2、AdaBoost在训练集和测试集上的准确率

结论:通过单层决策树和AdaBoost在训练集和测试集上表现可以发现,AdaBoost可以准确预测所有的训练集样本,与单层的决策树相比,AdaBoost在测试集上的准确率要稍微高点。但是,AdaBoost也存在明显的过拟合。所以说,AdaBoost在降低模型的偏差同时,也会提升模型的方差。

五、绘制决策边界

总结:通过决策区域可以发现,AdaBoost的决策区域要比单层的决策树复杂的多。集成分类器与单独分类器相比,集成学习提高了计算复杂度,计算复杂度的提高会带来计算成本的增加。所以在实际中,我们需要仔细权衡模型的性能和计算成本。

举报
评论 0