基于自适应增强的回归算法:AdaBoost.R2的原理与误差加权过程
题目描述
自适应增强(AdaBoost)算法最初是为二分类问题设计的,但可推广到回归任务,即 AdaBoost.R2。该算法的目标是通过顺序训练一系列“弱”回归器,并基于每个弱回归器在训练集上的表现动态调整样本权重和弱回归器权重,从而组合成一个强回归器。请详细讲解 AdaBoost.R2 算法的误差定义、权重更新机制、以及最终强回归器的构建过程,确保阐明与分类 AdaBoost 的核心差异。
解题过程讲解
步骤1:算法初始化
设有训练集 \(D = \{ (x_1, y_1), (x_2, y_2), ..., (x_N, y_N) \}\),其中 \(y_i \in \mathbb{R}\) 是连续值标签。
- 初始化样本权重:对每个样本 \(i\),赋予初始权重 \(w_1(i) = \frac{1}{N}\),即所有样本等权重。
- 设定弱回归器数量 \(T\),并准备一个弱回归器族(如深度很小的决策树)。
与分类 AdaBoost 的差异:分类中初始权重也常设为均匀分布,但回归任务需重新定义误差度量,因为不能直接使用 0-1 误分类误差。
步骤2:迭代训练弱回归器(t=1 到 T)
对第 \(t\) 轮迭代:
- 用当前样本权重分布 \(w_t\) 训练一个弱回归器 \(f_t(x)\)。
- 计算每个样本 \(i\) 的误差 \(L_i\)。
AdaBoost.R2 采用相对误差,常用形式有:- 线性误差:\(L_i = \frac{|y_i - f_t(x_i)|}{\max_i |y_i - f_t(x_i)|}\)
- 平方误差:\(L_i = \frac{(y_i - f_t(x_i))^2}{\max_i (y_i - f_t(x_i))^2}\)
- 指数误差:\(L_i = 1 - \exp\left(-\frac{|y_i - f_t(x_i)|}{\max_i |y_i - f_t(x_i)|}\right)\)
其中分母的归一化确保 \(L_i \in [0,1]\)。
- 计算第 \(t\) 个弱回归器的平均误差:
\[ \bar{L}_t = \sum_{i=1}^N w_t(i) L_i \]
注意:\(\bar{L}_t\) 是加权平均,反映了当前权重下模型的拟合程度。
关键点:回归误差被归一化到 [0,1],以模仿分类的错误率概念,使后续权重更新机制可类比分类 AdaBoost。
步骤3:计算弱回归器权重 \(\beta_t\)
定义弱回归器的置信度权重:
\[\beta_t = \frac{\bar{L}_t}{1 - \bar{L}_t} \]
若 \(\bar{L}_t \ge 0.5\),可提前终止迭代(因为弱回归器比随机猜测还差)。
推导逻辑:当平均误差 \(\bar{L}_t\) 越小(接近 0),\(\beta_t\) 越小,表示该弱回归器权重应较低(因误差大);当 \(\bar{L}_t\) 接近 0.5 时,\(\beta_t \approx 1\),表示贡献中等;当 \(\bar{L}_t\) 很小时,\(\beta_t\) 很小,给予较高权重。
与分类的对比:分类中弱分类器权重为 \(\alpha_t = \frac{1}{2} \ln\left(\frac{1-\epsilon_t}{\epsilon_t}\right)\),其中 \(\epsilon_t\) 是误分类率;回归中用 \(\beta_t\) 替代,但后续更新中会以 \(\beta_t\) 的幂形式调整权重。
步骤4:更新样本权重
为下一轮迭代更新样本权重:
\[w_{t+1}(i) = w_t(i) \cdot \beta_t^{1 - L_i} \]
更新后需归一化:
\[w_{t+1}(i) = \frac{w_{t+1}(i)}{\sum_{j=1}^N w_{t+1}(j)} \]
直观解释:
- 若样本 \(i\) 的误差 \(L_i\) 小(接近 0),则 \(1 - L_i \approx 1\),权重乘以 \(\beta_t^1 = \beta_t\);由于 \(\beta_t < 1\)(当 \(\bar{L}_t < 0.5\)),权重减小(该样本已拟合较好,后续可降低关注)。
- 若样本 \(i\) 的误差 \(L_i\) 大(接近 1),则 \(1 - L_i \approx 0\),权重乘以 \(\beta_t^0 = 1\),权重几乎不变(该样本难拟合,后续需继续关注)。
- 与分类 AdaBoost 的权重更新 \(w_{t+1}(i) = w_t(i) \exp(\alpha_t \cdot I(y_i \ne f_t(x_i)))\) 不同,回归中用连续误差度量替代离散指示函数。
步骤5:构建最终强回归器
完成 \(T\) 轮迭代后,组合所有弱回归器。由于回归输出是连续值,不能像分类那样直接加权投票,常用方法是加权中位数:
对输入 \(x\),每个弱回归器给出预测 \(f_t(x)\),将其按 \(f_t(x)\) 值从小到大排序,记对应权重为 \(\ln(1/\beta_t)\)。然后找到最小 \(k\) 使得:
\[\sum_{t=1}^k \ln(1/\beta_t) \ge \frac{1}{2} \sum_{t=1}^T \ln(1/\beta_t) \]
取 \(f_k(x)\) 作为最终预测值。
注:加权中位数对异常值不敏感,比加权平均更稳健,尤其当某些弱回归器误差较大时。
总结核心差异
- 误差定义:分类用 0-1 误分类率,回归用归一化相对误差。
- 权重更新:分类中以指数函数更新,回归中以 \(\beta_t^{1-L_i}\) 更新。
- 组合策略:分类用加权投票,回归用加权中位数(或加权平均)。
- 终止条件:回归中若 \(\bar{L}_t \ge 0.5\) 可提前停止,因弱回归器已不优于随机猜测。
AdaBoost.R2 延续了 Boosting 的核心思想——聚焦于之前模型拟合差的样本,但通过连续误差的归一化与加权中位数机制,使其适用于回归任务。