如何在boosting regression中提升observation的权重
Boosting回归任务的样本权重更新逻辑与误差范围设置
样本权重的判定与更新方法
分类任务里的预测结果是离散标签,用0-1损失就能直接判定样本预测正确/错误,直接给预测错误的样本提权即可。回归任务的预测值是连续值,没有绝对的「正确/错误」边界,通用的处理逻辑是基于残差计算误差,按误差大小调整权重,最经典的AdaBoost.R2算法流程是:
- 每一轮基学习器训练完成后,先计算所有样本的残差,即
真实标签y - 预测值y_pred - 对残差做归一化处理得到0~1区间的相对误差,常用的归一化方式有三种:
- 绝对误差:
|y - y_pred| / 本轮所有样本的最大绝对残差 - 平方误差:
(y - y_pred)² / 本轮所有样本的最大平方残差 - Huber型误差:残差小于设定阈值时用平方误差计算,超过阈值时用线性误差计算,降低极端离群点的影响
- 绝对误差:
- 基于相对误差更新下一轮的样本权重:相对误差越大的样本,权重提升幅度越高,误差越小的样本权重会被适当压低,保证下一轮训练的基学习器会优先拟合上一轮没学好的样本。
误差范围的相关设置
Boosting回归支持自定义误差判定的范围,常见的设置方式有两类:
- 固定阈值设置:可以根据业务需求自定义可接受的误差范围,比如规定残差在真实值的±3%以内就算预测合格,只有超出这个范围的样本才会被判定为高误差样本,参与权重提升。
- 分位数截断设置:不需要固定阈值,每一轮训练后对所有样本的残差做排序,只给残差排名前N%(比如前20%)的样本提权,既保证模型持续优化拟合效果,也能避免个别极端离群点的残差过大,拉偏整个模型的训练方向。
另外主流的Boosting回归工具包也内置了误差规则的配置参数,比如scikit-learn的AdaBoostRegressor类可以通过loss参数切换误差计算逻辑,通过learning_rate参数调整权重更新的幅度,本质也是间接调整误差对权重的影响程度。
内容的提问来源于stack exchange,提问作者foyeyefo
相关产品推荐
相关产品推荐

