AdaBoost回归
这个方法是做什么的
预测一个数值型因变量。它顺序训练一串弱学习器,每训练完一个就按残差大小给样本重新加权——上一轮预测得越离谱的样本,下一轮权重越大,于是后续的弱学习器被迫去啃前面啃不动的部分;最终预测取各弱学习器预测的加权中位数。这跟同族“每轮拟合残差本身”的梯度提升不是一回事:它调整的是样本的注意力分配,而不是沿梯度往前迈步。定类自变量可直接拖入,管线内独热编码;不产出回归系数,也没有针对自变量的显著性检验。
报告共五张卡。主结果口径是 5 折 KFold 交叉验证:表4 给验证折 R²、RMSE、MAE 的均值、折间标准差与 95%CI,另附“训练折均值”与一次留出测试集两列,表5 是逐折明细。卡① 给建模设置与前提诊断(n∶p 比、尺度差异、VIF、因变量分布形态、疑似数据泄漏、重复观测);卡③ 给逐折 R² 柱状图、拟合散点与残差图;卡④ 给测试集上 20 次随机重排的置换重要性、Cohen f² 与相对均值基线的 RMSE 降幅;卡⑤ 给论文用的规范表述。这一族八个模块的报告结构相同,本模块的着眼点在卡① 表1:“超参数”只有两行(弱学习器数量、学习率),是提升类模块里最少的——读表4 的落差时要记住(见下)。
需要准备什么数据
- 放入因变量Y:不限
- 放入自变量X:至少 1 个
数据要求
- 数据表至少 30 行。
- 单列缺失率不超过 30%。
- 不接受取值全都一样的列(零方差列没有可分析的变异)。
以上条目由系统从该方法的校验规则直接生成,与上传数据时的实际拦截规则一致。
什么时候用它
- 数据里存在一部分“难样本”,别的模型总是在同一批观测上系统性地预测不准
- 关系非线性、自变量之间有交互,而你希望模型结构比深树集成更轻
- 数据已经清洗过、极端值可控(这是使用本模块的硬前提,见下)
- 只需要预测精度与变量重要性排序,不需要系数与显著性
前提:因变量必须是连续数值且有真实波动。有效样本量建议 ≥30,且“样本量 / 独热编码后特征维度”比值 ≥10,卡① 表3 会给出实测值与判定。同族其它模块在这里各有一条样本量相关的提醒,本模块的数据要求里加的却是另一条、也更硬:对离群点敏感,建议先做异常值处理(见下)。所选变量上有缺失的整行会被剔除;缺失多的列先补齐再进模型,可用「多重插补」。
什么时候不要用它
- 因变量是类别:用「AdaBoost分类」。
- 数据里有清洗不掉的极端值或厚尾:加权机制会把它们越放越大(见下)。要预测就换取平均、单点影响被稀释的「随机森林回归」;要一个天生抗离群、还能给出系数的模型,用估计条件中位数的「分位数回归」。
- 要系数、置信区间与 p 值:本模块一项都不给;用「线性回归 (最小二乘法)」,自变量多时用「Lasso回归」。
- 想调单棵弱学习器的复杂度:本模块的控件里只有弱学习器数量与学习率,树深没有暴露出来;需要直接控制树深的,用带“最大深度”控件的「GBDT梯度提升回归」。
- 要预测训练取值范围之外的样本:本模块不能外推(见下),用「线性回归 (最小二乘法)」。
- 观测之间不独立(同一对象多期、分层嵌套):用「面板模型」或「混合模型」。
容易误读的地方
- 本模块对离群点特别敏感,而报告不替你查这件事。 每一轮按残差重新加权,残差越大权重越大——一个录错的极端值会被反复放大,最后拉着整条回归函数往它那边偏。卡① 表3 一共七项诊断(n∶p 比、定量特征尺度差异、VIF、因变量分布形态、疑似数据泄漏、重复观测、预处理泄漏防护),没有一项是查离群点的。数据要求里那句“对离群点敏感,建议先做异常值处理”只是提示,不是会亮红灯的检查。跑之前先用「缩尾处理(Winsorize)」把极端值压住;因变量严重右偏时用「数据变换(Box-Cox/Yeo-Johnson)」。
- 落差最小不等于模型最好。 本次训练折 R²=0.6928、验证折 R²=0.4250,落差 0.2678,是这一族树模型里最小的——但这不是因为它泛化得好,而是因为弱学习器被限制得很死:默认的弱学习器是一棵深度 3 的回归树,而本模块的控件里根本没有这个旋钮可调。真正该看的仍然是“交叉验证均值”那一列(0.4250,95%CI[0.2214, 0.6287])以及折间标准差 0.1640:第 5 折只有 0.1620,第 4 折有 0.5875,同一个模型换个划分差了三倍多,卡⑤ 因此判为“泛化结论对样本划分敏感”。同一张表最右的“留出测试集”(0.2831)也不是第二次独立验证:它虽是另一次划分、种子已与交叉验证错开,但交叉验证跑在全部 240 条上,这 48 条仍在各折的训练折里;单次划分的波动也大,0.2831 只比五折里最差的那一折好。
- “学习率”默认值是 1,和同族其它提升模块不是同一个量。 「GBDT梯度提升回归」「XGBoost回归」「LightGBM回归」的学习率默认都是 0.1,本模块默认 1、可填到 5。这里的学习率同时缩放弱学习器的权重与样本权重的更新幅度,与“每棵树沿梯度迈多大一步”不是一回事,别处“学习率调小、轮数调大”的经验不能直接搬。改完参数一律以表4 的交叉验证均值重判。
- “这个变量稳健贡献”也只是对这个模型说的。 本次“促销折扣力度”的 ΔR²=0.1407、95%CI[0.0387, 0.2684] 下限大于 0,判为稳健贡献者、占比 22.63%;而「随机森林回归」的演示输出里,同一个变量的 ΔR² 只有 0.0438、区间跨 0、占比 4.58%——两边的示例数据由同一套规则生成,变量含义完全相同。样本加权把随机森林顺手忽略掉的那批难拟合观测推到了前台,这个变量于是显得有用。置换重要性回答的是“打乱这一列,这个模型会掉多少 R²”,不是变量的因果效应,也不等价于回归系数的显著性;整份报告不含任何针对自变量的 p 值,需要显著性检验请用「线性回归 (最小二乘法)」。
- 不能外推。 最终预测是各弱学习器预测的加权中位数,而每个弱学习器是回归树、吐出的是训练样本因变量的平均——所以整个模型的预测被夹在训练集因变量的最小值与最大值之间,中位数聚合甚至比取平均更死板。自变量走出训练范围后,样本落进同一批边界叶子,预测值固定不动。本模块示例数据里“广告投入”是 1.76~10.72 万元,超出这一段的预测没有依据。
报告里有什么
- 输出结果一:数据概览与前提检验
- 输出结果二:主结果表(交叉验证性能)
- 输出结果三:可视化(逐折性能 / 拟合散点 / 残差)
- 输出结果四:效应量与事后分析
- 输出结果五:结论与学术表述
三张图分别回答:模型在不同数据划分下稳不稳(逐折 R²)、预测值贴不贴近真实值(散点)、误差是否随预测水平系统性变化(残差图)。