提升回归
adaboost回归
AdaBoost.R2 按相对残差抬高难拟合样本的权重,再把弱回归器的叶均值做成加权组合。
这篇能回答什么
AdaBoost 回归不给房源贴「成交/未成交」,它盯的是相对残差有多大。残差大的点在下一轮权重上升,浅回归树被逼着去修那些总价离当前组合最远的样本。最终预测是弱学习器输出(各叶均值)的加权中位数或加权平均,视实现而定。本页占用表把末轮样本按残差幅度分成三层,而不是按户型分类。
适合:中等噪声的连续预测,你怀疑少数难点(极端总价、奇异户型)在普通平均里被淹没。教学完整个案 378。高残差层 A 48 条(12.7%),中层 B 74(19.58%),低残差层 C 256(67.72%)。A 只有约一成三,但它们会吸收大量下一轮权重——这是提升,也是对离群总价过敏的来源。
什么时候不该用
总价里有明显录入错误或天价豪宅、你又不想让模型围着它们转时,先截尾或改GBDT 回归的 Huber 损失;AdaBoost.R2 会把这些点越权越大。需要 B 与 VIF 时用线性回归。标签预测用adaboost分类,那里加权的是分错的样本,不是残差。只要平行平均、不想改权重,用随机森林回归。
如何选择方法
同样是「多棵弱回归树」,AdaBoost 改样本权重,GBDT 沿损失的负梯度加树,森林做自助平均。难点少、想逼模型去修大残差 → AdaBoost.R2。想用学习率与早停平滑地爬残差 → GBDT。要稳健、不怕难点 → 森林。要斜率 → OLS。不要用分类 AdaBoost 去「预测总价档」。
AdaBoost 回归:按相对残差更新权重;本页用三层残差占用检查难点有多厚。
GBDT 回归:新树拟合残差本身;学习率 ν 控制步长。
随机森林回归:平行平均,不抬高难点权重。
线性回归:可加均值、可推断;写不出残差加权路径。
输入、输出与限制
输入
定量因变量 + 特征。基学习器默认是浅回归树(深度 3)。轮数和学习率(收缩)可调。缺失成表删除。
因变量:1 个定量列(总价(万元))。
特征:1–40 个;本练习用面积(平米)、楼层、总楼层、建筑年份。
输出
占用表是末轮残差分层:A 高残差 48(12.7%)、B 中 74(19.58%)、C 低 256(67.72%),合计 378。另有训练误差随轮数下降的曲线、预测对照图。指标是 RMSE/MAE/R²,没有混淆矩阵。
产品限制
有效行少于 40 拒绝。
默认 50 轮、基树深度 3;轮数加到 200 而没有收缩时,高残差层会被反复点名。
实现按 AdaBoost.R2(Drucker),损失可选线性 / 平方 / 指数型相对残差,与分类 SAMME 不是同一套。
曲线展示轮次误差,完整分层人数以表为准。
案例
研究问题。 中等价位、面积中等的房源残差往往更大:既不是学区豪宅那种「面积决定一切」,也不是超小户型的平台价。研究者想看提升会不会把这批难点的权重堆上去,而不是再平均 100 棵彼此独立的树。
完整个案 378。末轮残差层:高 48(12.7%)、中 74(19.58%)、低 256(67.72%)。C 占三分之二,说明多数点已经被组合拟合得较近;真正被加权追打的是 A 那 48 条。下载综合评价表后,Y 仍用总价(万元),特征用面积、楼层、总楼层、建筑年份。先扫总价极端值:若 A 层全是录入错误,应先清洗再提升。
在 StatsX 中操作
步骤 1 · 上传并扫极端总价
综合评价 xlsx 进工作台后,先在画像里看总价最大值是否像录入多打了一个 0。提升会追这些点。
步骤 2 · 只留住房尺度特征
特征用面积、楼层、总楼层、建筑年份。装修情况若是定类,本练习先放下,避免和残差层搅在一起。
步骤 3 · 点 adaboost 回归
旁边的 adaboost 分类用于标签。总价必须走回归,否则权重更新看的是分错而不是 |残差|。
步骤 4 · 设定轮数后运行
因变量:总价(万元)。特征同上。先用默认 50 轮;若高残差层人数几乎不降,再考虑加轮或改 GBDT。
步骤 5 · 看分层再看曲线
A 层若稳定在 48 条左右,去抽这 48 行:是豪宅、是边远小盘,还是错字。误差曲线下降但 A 层全是错字,说明模型在记忆脏数据。




如何阅读输出
把类别 A / B / C 读成末轮残差层,不要读成城市或装修。N=378。高残差层 A 48(12.7%),中层 B 74(19.58%),低残差层 C 256(67.72%)。C 厚、A 薄,是常见形态:算法把火力集中在少数难点。
| 项目 | 类别 | 统计量 | 取值 |
|---|---|---|---|
| adaboost回归 | 类别 A | 频数 | 48 |
| adaboost回归 | 类别 B | 频数 | 74 |
| adaboost回归 | 类别 C | 频数 | 256 |
| adaboost回归 | 合计 | 有效样本 N | 378 |
| adaboost回归 | 类别 A | 占比(%) | 12.7 |
| adaboost回归 | 类别 B | 占比(%) | 19.58 |
| adaboost回归 | 类别 C | 占比(%) | 67.72 |
左右滑动可查看完整表格
教学示例表在 StatsX 工作台中的计算结果口径。


阅读顺序:N → A 层是谁(抽 48 行)→ 训练误差是否随轮数仍在降 → 测试或留出 RMSE → 不要在这里找 B 系数。预测单位是万元。若实现输出加权中位数,个别极端弱学习器的叶均值不会像算术平均那样把预测拉飞。
过拟合在本页的样子:轮数增加,训练 RMSE 继续降,A 层却越来越像「同一批离群总价被反复点名」。此时应减小轮数、加大基树的叶最小样本,或先修剪 Y 的极端百分位。C 占 67.72% 不表示模型已经「够好」,只表示多数点相对残差已经较小。
理论与公式
AdaBoost.R2 先算本轮最大绝对残差 D_t,再把每个样本的相对损失压到 [0,1]。线性损失为:
平均损失 L̄_t 决定弱学习器权重 β_t,样本权重按 β_t 的幂更新,残差越小权重降得越多:
最终组合常取加权中位数:把各弱回归器的叶均值按 log(1/β_t) 加权后取中位。平方或指数损失只改 L_i 的形状,不改「残差大则权重大」的方向。分类 AdaBoost 用的是指示函数 1{ŷ≠y},与本页无关。教学分层把 L_i 切成高/中/低三档,对应 48/74/256。
注意事项
A 层 48 条会被反复加权;先确认它们不是录入错误。
没有 VIF 与斜率,不能代替线性回归写进「每平米多少万元」。
轮数过多且不收缩时,对噪声的追打强于森林。
基树过深,每一轮就已经过拟合,提升只是把过拟合叠起来。
加权中位数与加权平均的点预测可能不同,核对软件时要看聚合方式。
本页三层不是户型,也不是城市。
常见问题
参考文献
Drucker, H. Improving regressors using boosting techniques[C]//ICML. 1997.
Freund, Y., & Schapire, R. E. A decision-theoretic generalization of on-line learning and an application to boosting[J]. Journal of Computer and System Sciences, 1997.
周志华. 机器学习[M]. 清华大学出版社.