Adaboost
Adaptive Boosting,自适应增强。
1. 核心思想
通过逐轮训练弱分类器,每一轮根据分类器的表现调整样本权重,最终将这些弱分类器进行加权组合,形成一个强分类器。弱分类器可以是任何表现略优于随机猜测的模型。
2. 算法步骤
初始化训练样本的权值分布:最开始对每个训练样本赋予相同的权重: \[w_i^{(1)} = \frac{1}{N}, \quad i=1,2,\dots,N\] 其中,\(N\)为训练样本的总数,\(w_i^{(1)}\)为第 \(i\)个样本在初始阶段的权重。
训练弱分类器:在每一轮迭代中,用当前的权值分布训练一个弱分类器 \(h_t\)。对于训练样本集 \(X = \{x_1, x_2, \dots, x_N\}\),若弱分类器 \(h_t\)对样本 \(x_i\)分类错误,权重 \(w_i\)就会增加;若分类正确,则 \(w_i\)减少。
计算弱分类器的误差率:分类器 \(h_t\)的分类误差率 \(\epsilon_t\)为: \[ \epsilon_t = \frac{\sum_{i=1}^{N} w_i^{(t)} \cdot \mathbb{I}(h_t(x_i) \neq y_i)}{\sum_{i=1}^{N} w_i^{(t)}} \] 其中,\(\mathbb{I}(\cdot)\)是指示函数,当 \(h_t(x_i) \neq y_i\)时取值为 1,否则为 0。\(y_i\)为样本 \(x_i\)的真实标签。
计算弱分类器的权重:根据分类误差率 \(\epsilon_t\),计算该弱分类器的权重 \(\alpha_t\),权重越高,表示该分类器的效果越好: \[ \alpha_t = \frac{1}{2} \ln \left( \frac{1 - \epsilon_t}{\epsilon_t} \right) \] 其中,\(\alpha_t\)反映了该分类器在最终组合分类器中的重要性。
更新样本权重:为了让下一个弱分类器更多关注分类错误的样本,更新样本权重。更新公式为: \[ w_i^{(t+1)} = w_i^{(t)} \cdot \exp\left( \alpha_t \cdot \mathbb{I}(h_t(x_i) \neq y_i) \right) \] 经过归一化处理后,使得所有权重之和仍然为 1: \[ w_i^{(t+1)} = \frac{w_i^{(t+1)}}{\sum_{i=1}^{N} w_i^{(t+1)}} \]
构建最终分类器:在所有弱分类器训练完成后,将每个弱分类器按其权重 \(\alpha_t\)进行加权投票,得到最终的强分类器: \[ H(x) = \text{sign}\left( \sum_{t=1}^{T} \alpha_t h_t(x) \right) \] 其中,\(T\)是弱分类器的总数,\(\text{sign}(\cdot)\)是符号函数,用于确定最终分类的正负。
3. 损失函数
3.1 指数损失函数
在 Adaboost 中,分类问题常使用 指数损失函数 来计算损失:
\[ L(x_i) = \exp(-y_i f(x_i)) \]
其中: \(x_i\)是样本数据, \(y_i\)是样本的真实标签(+1 或 -1), \(f(x_i)\)是通过弱分类器的加权组合形成的决策函数。
当 \(y_i \cdot f(x_i)\)较大时,表示分类正确,损失较小;而当 \(y_i \cdot f(x_i)\)较小时,表示分类错误,损失会快速增加。
3.2 均方误差
在 回归问题 中,常用的损失函数是 均方误差(MSE, Mean Squared Error),其公式为:
\[ L = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y_i})^2 \]
其中: \(y_i\)是真实值, \(\hat{y_i}\)是预测值。
4. 优势
- 自适应性:Adaboost 通过动态调整样本权重,使得后续分类器重点关注难以分类的样本。
- 理论保障:Adaboost 有较强的理论支持,尤其是在误分类率低的情况下,能够显著提升分类性能。
- 不易过拟合:尽管 Adaboost 会不断加强对误分类样本的关注,但在弱分类器性能有限的情况下,它不容易产生过拟合问题。
5. 缺点
- 对噪声敏感:Adaboost 在处理含有噪声的数据时可能表现不佳,因为它会过度关注那些难以分类的样本,可能导致模型偏向噪声数据。
- 分类器局限:Adaboost 要求弱分类器的错误率要小于 0.5,如果弱分类器过于弱或误差率高,整个模型的效果可能较差。