自适应增强(Adaptive Boosting, AdaBoost)算法的权重更新与误分类样本重加权过程
在机器学习中,AdaBoost是一种经典的集成学习算法,它通过组合多个弱分类器来构建一个强分类器。其核心思想是在每一轮训练中,根据当前样本的权重分布训练一个弱分类器,然后基于该弱分类器的错误率调整样本权重,使得被误分类的样本在下一轮获得更高的权重,从而让后续的弱分类器更加关注那些难以分类的样本。
为了让您清晰地理解这个过程,我将分步骤详细讲解AdaBoost算法的权重更新与重加权机制。
1. 问题描述与符号定义
假设我们有一个二分类数据集:
- 训练样本集:\(D = \{(x_1, y_1), (x_2, y_2), \dots, (x_N, y_N)\}\),其中 \(x_i\) 是特征向量,\(y_i \in \{-1, +1\}\) 是类别标签。
- 目标:训练一系列弱分类器 \(h_t(x)\)(例如决策树桩),并组合它们形成一个强分类器 \(H(x)\)。
算法会进行 \(T\) 轮迭代(即训练 \(T\) 个弱分类器)。在每一轮 \(t\) 中:
- 每个样本 \(i\) 有一个权重 \(w_{t, i}\)(初始时所有权重相等)。
- 根据当前权重分布 \(w_t\) 训练弱分类器 \(h_t(x)\)。
- 计算 \(h_t(x)\) 的加权错误率 \(\epsilon_t\)。
- 根据 \(\epsilon_t\) 计算该弱分类器的权重(或称重要性) \(\alpha_t\)。
- 更新样本权重:增加被 \(h_t\) 误分类样本的权重,减少正确分类样本的权重。
2. 初始化样本权重
在训练开始时(第 \(t=1\) 轮),所有样本的权重被初始化为相等:
\[w_{1, i} = \frac{1}{N}, \quad i = 1, 2, \dots, N \]
这意味着每个样本对第一个弱分类器的影响是相同的。
3. 第 \(t\) 轮迭代的详细步骤
步骤1:训练弱分类器
基于当前的样本权重分布 \(w_t\),训练一个弱分类器 \(h_t: \mathcal{X} \to \{-1, +1\}\)。训练的目标是最小化加权错误率(而非普通的错误率),即:
\[h_t = \arg\min_{h} \sum_{i=1}^{N} w_{t, i} \cdot \mathbb{I}(h(x_i) \ne y_i) \]
其中 \(\mathbb{I}(\cdot)\) 是指示函数,当括号内条件为真时取1,否则取0。
实践中,许多弱分类器(如决策树桩)可以通过对每个特征阈值计算加权错误率来找到最佳分割。
步骤2:计算加权错误率 \(\epsilon_t\)
弱分类器 \(h_t\) 在当前权重下的加权错误率为:
\[\epsilon_t = \frac{\sum_{i=1}^{N} w_{t, i} \cdot \mathbb{I}(h_t(x_i) \ne y_i)}{\sum_{i=1}^{N} w_{t, i}} \]
注意:初始权重和通常为1(经过归一化),因此分母常简化为1。
要求:AdaBoost要求每个弱分类器比随机猜测略好,即 \(\epsilon_t < 0.5\)(对于二分类)。若 \(\epsilon_t \ge 0.5\),则需重新训练或调整弱分类器。
步骤3:计算弱分类器权重 \(\alpha_t\)
该权重用于在最终强分类器中组合各弱分类器的预测结果。计算公式为:
\[\alpha_t = \frac{1}{2} \ln\left( \frac{1 - \epsilon_t}{\epsilon_t} \right) \]
理解:
- 当 \(\epsilon_t\) 很小(接近0)时,\(\frac{1 - \epsilon_t}{\epsilon_t}\) 很大,\(\alpha_t\) 为正且较大 → 该弱分类器在最终投票中占较大权重。
- 当 \(\epsilon_t\) 接近0.5时,\(\frac{1 - \epsilon_t}{\epsilon_t} \approx 1\),\(\alpha_t \approx 0\) → 该弱分类器几乎不起作用。
- 当 \(\epsilon_t > 0.5\) 时,\(\alpha_t\) 为负,但通常算法会避免这种情况。
步骤4:更新样本权重
这是AdaBoost的核心重加权过程。更新公式为:
\[w_{t+1, i} = w_{t, i} \cdot \exp\left( -\alpha_t \cdot y_i \cdot h_t(x_i) \right) \]
分析更新规则:
- 对于正确分类的样本:\(y_i \cdot h_t(x_i) = +1\)(因为预测与真实标签同号),因此 \(\exp(-\alpha_t) < 1\)(因为 \(\alpha_t > 0\)),权重减小。
- 对于错误分类的样本:\(y_i \cdot h_t(x_i) = -1\),因此 \(\exp(\alpha_t) > 1\),权重增大。
更直观的形式:
将更新公式拆开:
\[w_{t+1, i} = \begin{cases} w_{t, i} \cdot e^{-\alpha_t} & \text{if } h_t(x_i) = y_i \quad \text{(正确分类)} \\ w_{t, i} \cdot e^{\alpha_t} & \text{if } h_t(x_i) \ne y_i \quad \text{(错误分类)} \end{cases} \]
由于 \(e^{\alpha_t} = \sqrt{(1-\epsilon_t)/\epsilon_t}\),错误分类样本的权重会被放大 \(e^{2\alpha_t} = (1-\epsilon_t)/\epsilon_t\) 倍。
步骤5:权重归一化
更新后的权重通常需要进行归一化,以确保它们构成一个概率分布(方便下一轮训练):
\[w_{t+1, i} \leftarrow \frac{w_{t+1, i}}{\sum_{j=1}^{N} w_{t+1, j}} \]
归一化后,所有权重之和为1。
4. 最终强分类器的构建
经过 \(T\) 轮迭代后,我们得到 \(T\) 个弱分类器及其权重 \(\alpha_t\)。最终的强分类器是这些弱分类器的加权投票:
\[H(x) = \operatorname{sign}\left( \sum_{t=1}^{T} \alpha_t h_t(x) \right) \]
即,对每个弱分类器的预测结果乘以 \(\alpha_t\) 后求和,然后取符号作为最终分类结果。
5. 示例说明(数值演示)
假设有5个样本,初始权重均为 \(1/5 = 0.2\)。第 \(t=1\) 轮训练后:
- 弱分类器 \(h_1\) 的加权错误率 \(\epsilon_1 = 0.3\)(假设样本1和2被误分类,其余正确)。
- 计算 \(\alpha_1 = 0.5 \cdot \ln((1-0.3)/0.3) \approx 0.4236\)。
- 更新权重:
- 错误分类样本(1和2):新权重 \(= 0.2 \cdot e^{0.4236} \approx 0.2 \cdot 1.527 \approx 0.3054\)。
- 正确分类样本(3、4、5):新权重 \(= 0.2 \cdot e^{-0.4236} \approx 0.2 \cdot 0.6547 \approx 0.1309\)。
- 归一化:总权重和 \(= 0.3054 \times 2 + 0.1309 \times 3 = 0.6108 + 0.3927 = 1.0035 \approx 1\)(因四舍五入略有误差)。归一化后,错误分类样本的权重增大(约0.304),正确分类样本的权重减小(约0.131)。
在下一轮(\(t=2\)),算法将基于新的权重分布训练 \(h_2\),它会更加关注样本1和2,从而可能修正之前的错误。
6. 算法背后的直观理解
- 样本权重更新:通过增加误分类样本的权重,迫使后续弱分类器“聚焦”于之前难以分类的样本,类似于“查漏补缺”。
- 弱分类器权重 \(\alpha_t\):错误率越低的弱分类器,在最终投票中的话语权越大。
- 指数损失函数视角:AdaBoost等价于在前向分步加法模型中最小化指数损失函数 \(\sum_i e^{-y_i H(x_i)}\),权重更新正是该损失的梯度方向。
7. 注意事项
- 弱分类器只需比随机猜测略好即可,不必非常精确。
- 样本权重可能会在某些轮次后集中在少数困难样本上,导致后续弱分类器过拟合这些样本,因此需控制总轮数 \(T\) 防止过拟合。
- AdaBoost对噪声数据和异常值较敏感,因为噪声样本可能被持续误分类并获得极高权重。
通过以上步骤,AdaBoost实现了自适应地调整样本权重,逐步提升整体分类性能。这个过程体现了集成学习中“聚焦难点”的核心思想。