算法

AdaBoost是一种最常用的Boosting 算法。AdaBoos t的核心思想是根据前一个基本分类器的错误率来调整每个样本的权重,使得之前被错误分类的样本在后续的分类器中得到更多的关注。同时,每个基本分类器都会被赋予一个权重,这个权重与它的准确性有关。最终的模型是这些加权分类器的组合。

输入:训练集 ,训练轮数

输出:

过程:

  • 初始化样本分布
    • 基于分布 从数据集 中训练出分类器
    • 估计 的误差
    • 确定分类器 的权重
    • 更新样本分布

第一个基分类器 是通过直接将基学习算法用于初始数据分布而得,此后迭代地生成 ,当基分类器 基于分布 产生后,该基分类器的权重 应该使得 最小化指数损失函数

图示

举一个简单的例子来看看 AdaBoost 的实现过程。图中共 10 个训练数据,其中 + 和 - 分别表示两种类别。基分类器使用水平或垂直直线来进行分类。

开始每个样本的权值设为 ,得到第一个样本分布 ,图中表示为所有样本的大小相同

img-2024-04-15 15-24-21.png

第一个分类器 依据初始样本分布 进行训练,结果如左图所示,其中有右边三个样本被分类错误。计算 的误差 ,并依次计算 的权重 且更新样本分布,右图表示依据 的分类结果对样本权重进行了调整,其中分类正确的减少权值,分类错的增大权值,得到下一个样本分布 ,图中表示为大小的改变

img-2024-04-15 18-47-33.png

第二个分类器 依据样本分布 进行训练,结果如左图所示。图中画圈的样本表示分类错误,计算 的误差 ,并依此计算 的权重 ,且更新样本分布。右图表示依据 的分类结果对样本权重进行了调整,其中分类正确的减少权值,分类错误的增大权值,得到下一个样本分布 ,图中表示为大小的改变。

img-2024-04-15 18-49-33.png

第三个分类器 依照样本分布 进行训练,结果如图所示

img-2024-04-15 18-50-05.png

将上述三个分类器经过线性加权,得到最终的分类器

img-2024-04-15 18-50-30.png

使用这个最终分类器对最初的样本进行分类,得到结果如下

img-2024-04-15 18-50-47.png

例题

给定下列样本,使用简单的基于阈值比较的基学习器,用 Adaboost 算法学习一个强分类器

序号 1 2 3 4 5 6 7 8 9 10
x 0 1 2 3 4 5 6 7 8 9
y +1 +1 +1 -1 -1 -1 +1 +1 +1 -1

解:初始化数据权值分布为 ,即

第一轮,基于 训练分类器 ,计算其错误率 与权值 ,生成新样本分布 。首先在权值分布为 的训练数据上,阈值 是分类错误率最低,故基分类器为

可以发现, 在训练数据集上有 3 个误分类点,错误率为 。然后计算 的系数

更新训练数据的权值分布,产生 的权重。首先计算新的权重

归一化结果为

利用计算 的权重

得到序列

0 1 2 3 4 5 6 7 8 9
+1 +1 +1 -1 -1 -1 +1 +1 +1 -1
.1 .1 .1 .1 .1 .1 .1 .1 .1 .1
+1 +1 +1 -1 -1 -1 -1 -1 -1 -1
.0655 .0655 .0655 0.655 0.655 0.655 .1527 .1527 .1527 .0655
.0715 .0715 .0715 .0715 .0715 .0715 .1666 .1666 .1666 .0715
.4236 .4236 .4236 .4236 .4236 .4236 .4236 .4236 .4236 .4236
+1 +1 +1 -1 -1 -1 -1 -1 -1 -1

综上,第一次集成的学习器为

其中

第二次迭代,基于 训练分类器 ,计算其错误率 与权值 ,生成新样本分布

在权值分布为 的训练数据上,阈值 的分类错误率最低,故基分类器为

在训练数据集上有 3 个误分类点,此时新的错误率(需要加权)为

然后计算新分类器 的权值

以及各个数据的权值。上一次权值的归一化结果为

利用公式更新权值

得到

第二次迭代后得到的第二个分类器可表示为

其中