跳到主要内容

提升回归

adaboost回归

AdaBoost.R2 按相对残差抬高难拟合样本的权重,再把弱回归器的叶均值做成加权组合。

更新日期 2026-08-29 机器学习

这篇能回答什么

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. 步骤 1 · 上传并扫极端总价

    综合评价 xlsx 进工作台后,先在画像里看总价最大值是否像录入多打了一个 0。提升会追这些点。

  2. 步骤 2 · 只留住房尺度特征

    特征用面积、楼层、总楼层、建筑年份。装修情况若是定类,本练习先放下,避免和残差层搅在一起。

  3. 步骤 3 · 点 adaboost 回归

    旁边的 adaboost 分类用于标签。总价必须走回归,否则权重更新看的是分错而不是 |残差|。

  4. 步骤 4 · 设定轮数后运行

    因变量:总价(万元)。特征同上。先用默认 50 轮;若高残差层人数几乎不降,再考虑加轮或改 GBDT。

  5. 步骤 5 · 看分层再看曲线

    A 层若稳定在 48 条左右,去抽这 48 行:是豪宅、是边远小盘,还是错字。误差曲线下降但 A 层全是错字,说明模型在记忆脏数据。

工作台上传房源表供 AdaBoost 回归
上传综合评价表并准备检查总价极端值。
画像中查看总价分布
在画像里确认总价为定量,并留意极端值。
目录中选定 adaboost 回归
选定「adaboost回归」,不要点 adaboost 分类。
为 AdaBoost 回归指定总价与特征
因变量为总价,特征为面积与楼龄相关列。

如何阅读输出

把类别 A / B / C 读成末轮残差层,不要读成城市或装修。N=378。高残差层 A 48(12.7%),中层 B 74(19.58%),低残差层 C 256(67.72%)。C 厚、A 薄,是常见形态:算法把火力集中在少数难点。

adaboost回归结果表
项目类别统计量取值
adaboost回归类别 A频数48
adaboost回归类别 B频数74
adaboost回归类别 C频数256
adaboost回归合计有效样本 N378
adaboost回归类别 A占比(%)12.7
adaboost回归类别 B占比(%)19.58
adaboost回归类别 C占比(%)67.72

左右滑动可查看完整表格

教学示例表在 StatsX 工作台中的计算结果口径。

AdaBoost 回归残差层占用表
三层人数应与 48 / 74 / 256 一致。
AdaBoost 回归误差曲线或拟合图
轮次误差曲线辅助看是否还在下降;分层人数以表为准。

阅读顺序: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]. 清华大学出版社.