用到了Adaboost来提升弱分类器成为强分类器,所以找一下相关的知识,主要是找到相关的例子和介绍。

一、AdaBoost简介

  1. Boosting, 也称为增强学习或提升法,是一种重要的集成学习技术, 能够将预测精度仅比随机猜度略高的弱学习器增强为预测精度高的强学习器,这在直接构造强学习器非常困难的情况下,为学习算法的设计提供了一种有效的新思路和新方法。其中最为成功应用的是,Yoav FreundRobert Schapire1995年提出的AdaBoost算法。<br /> AdaBoost是英文"Adaptive Boosting"(自适应增强)的缩写,它的自适应在于:前一个基本分类器被错误分类的样本的权值会增大,而正确分类的样本的权值会减小,并再次用来训练下一个基本分类器。同时,在每一轮迭代中,加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数才确定最终的强分类器。

二、基本原理

Adaboost算法基本原理就是将多个弱分类器(弱分类器一般选用单层决策树)进行合理的结合,使其成为一个强分类器。
Adaboost采用迭代的思想,每次迭代只训练一个弱分类器,训练好的弱分类器将参与下一次迭代的使用。也就是说,在第N次迭代中,一共就有N个弱分类器,其中N-1个是以前训练好的,其各种参数都不再改变,本次训练第N个分类器。其中弱分类器的关系是第N个弱分类器更可能分对前N-1个弱分类器没分对的数据,最终分类输出要看这N个分类器的综合效果。

🍡 关于Adaboost - 图1
图1. 训练原理图

三、Adaboost实例

3.1 数据

这里使用的是决策树桩作为弱分类器,使用GeGebra画图比较方便
image.png
图2. 数据分布

3.2 分类器

将这10个样本作为训练数据,根据 X 和Y 的对应关系,可把这10个数据分为两类,图中用蓝⚪表示类别1,用红❌表示类别-1。本例使用水平或者垂直的直线作为分类器,下图中已经给出了三个弱分类器,即:
🍡 关于Adaboost - 图3
image.png
图3. 弱分类器1
🍡 关于Adaboost - 图5
image.png
图2. 弱分类器2
🍡 关于Adaboost - 图7
image.png
图3. 弱分类器3

3.3 初始化:

首先需要初始化训练样本数据的权值分布,每一个训练样本最开始时都被赋予相同的权值:🍡 关于Adaboost - 图9,这样训练样本集的初始权值分布🍡 关于Adaboost - 图10
令每个权值🍡 关于Adaboost - 图11,其中,🍡 关于Adaboost - 图12,然后分别对于🍡 关于Adaboost - 图13等值进行迭代(🍡 关于Adaboost - 图14表示迭代次数,表示第🍡 关于Adaboost - 图15轮),下表已经给出训练样本的权值分布情况:
image.png
表1. 初始权值分布

3.4 第一次迭代

第1次迭代t=1:
初试的权值分布🍡 关于Adaboost - 图17🍡 关于Adaboost - 图18(10个数据,每个数据的权值皆初始化为0.1),
🍡 关于Adaboost - 图19
在权值分布🍡 关于Adaboost - 图20的情况下,取已知的三个弱分类器🍡 关于Adaboost - 图21🍡 关于Adaboost - 图22中误差率最小的分类器作为第1个基本分类器🍡 关于Adaboost - 图23(三个弱分类器的误差率都是0.3,那就取第1个吧).
在分类器🍡 关于Adaboost - 图24情况下,样本点🍡 关于Adaboost - 图25被错分,因此基本分类器🍡 关于Adaboost - 图26的误差率为:
🍡 关于Adaboost - 图27
根据误差率🍡 关于Adaboost - 图28计算🍡 关于Adaboost - 图29的权重:
🍡 关于Adaboost - 图30
然后,更新训练样本数据的权值分布,用于下一轮迭代,对于正确分类的训练样本🍡 关于Adaboost - 图31(共7个)的权值更新为:
🍡 关于Adaboost - 图32
对于错误分类的样本🍡 关于Adaboost - 图33的权值更新为:
🍡 关于Adaboost - 图34
这样,第1轮迭代后,最后得到各个样本数据新的权值分布:
🍡 关于Adaboost - 图35
由于样本数据“5 7 8”被H(x)分错了,所以它们的权值由之前的0.1增大到1/6;反之,其它数据皆被分正确,所以它们的权值皆由之前的0.1减小到1/14,下表给出了权值分布的变换情况:
image.png
表2. 权值分布变换情况
可得分类函数:🍡 关于Adaboost - 图37。此时,组合一个基本分类器🍡 关于Adaboost - 图38作为强分类器在训练数据集上有3个误分类点(即🍡 关于Adaboost - 图39),此时强分类器的训练错误为:0.3

3.5 第二次迭代

在权值分布🍡 关于Adaboost - 图40的情况下,再取三个弱分类器🍡 关于Adaboost - 图41🍡 关于Adaboost - 图42中误差率最小的分类器作为第2个基本分类器🍡 关于Adaboost - 图43

① 当取弱分类器h=X=2.5时,此时被错分的样本点为“5 7 8”: 🍡 关于Adaboost - 图44 ② 当取弱分类器h=X=8.5时,此时被错分的样本点为“3 4 6”: 🍡 关于Adaboost - 图45 ③ 当取弱分类器h=X=6.5时,此时被错分的样本点为“1 2 9”: 🍡 关于Adaboost - 图46 因此,取当前最小的分类器h作为第2个基本分类器H(x):

🍡 关于Adaboost - 图47把样本3,4,6分错了,根据🍡 关于Adaboost - 图48可知它们的权值为🍡 关于Adaboost - 图49,所以🍡 关于Adaboost - 图50在训练数据集上的误差率:
🍡 关于Adaboost - 图51
根据误差率🍡 关于Adaboost - 图52计算🍡 关于Adaboost - 图53的权重:
🍡 关于Adaboost - 图54
更新训练后样本数据的权值分布,对于正确分类的样本权值更新为:
🍡 关于Adaboost - 图55
对于错误分类的权值更新为:
🍡 关于Adaboost - 图56
这样,第2轮迭代后,最后得到各个样本数据新的权值分布:
🍡 关于Adaboost - 图57
下表给出了权值分布的变换情况:

🍡 关于Adaboost - 图58
表3. 权值更新情况
可得分类函数:🍡 关于Adaboost - 图59。此时,组合两个基本分类器🍡 关于Adaboost - 图60作为强分类器在训练数据集上有3个误分类点(即🍡 关于Adaboost - 图61),此时强分类器的训练错误为:0.3

3.6 第三次迭代

在权值分布D的情况下,再取三个弱分类器h、h和h中误差率最小的分类器作为第3个基本分类器H(x):

① 当取弱分类器h=X=2.5时,此时被错分的样本点为“5 7 8”: 🍡 关于Adaboost - 图62 ② 当取弱分类器h=X=8.5时,此时被错分的样本点为“3 4 6”: 🍡 关于Adaboost - 图63 ③ 当取弱分类器h=X=6.5时,此时被错分的样本点为“1 2 9”: 🍡 关于Adaboost - 图64 因此,取当前最小的分类器h作为第3个基本分类器H(x):

🍡 关于Adaboost - 图65把样本1,2,9分错了,根据🍡 关于Adaboost - 图66可知它们的权值为🍡 关于Adaboost - 图67,所以🍡 关于Adaboost - 图68在训练数据集上的误差率:
🍡 关于Adaboost - 图69
根据误差率🍡 关于Adaboost - 图70计算🍡 关于Adaboost - 图71的权重:
🍡 关于Adaboost - 图72
更新训练后样本数据的权值分布,对于正确分类的样本权值更新为:
🍡 关于Adaboost - 图73
对于错误分类的权值更新为:
🍡 关于Adaboost - 图74
这样,第2轮迭代后,最后得到各个样本数据新的权值分布:
🍡 关于Adaboost - 图75
下表给出了权值分布的变换情况:
🍡 关于Adaboost - 图76
表4. 权值更新情况
可得分类函数:🍡 关于Adaboost - 图77。此时,组合两个基本分类器🍡 关于Adaboost - 图78作为强分类器在训练数据集上有0个误分类点, 至此,整个训练过程结束。整合所有分类器,可得最终的强分类器为:
🍡 关于Adaboost - 图79
此时强分类器的训练错误为:0.

四 参考链接