损失函数在梯度提升中的作用是什么?与梯度下降中的作用是否类似?
梯度提升中损失函数的误差惩罚特性
答案是肯定的:平方误差损失在梯度提升中依然比绝对误差损失对大误差的惩罚更重,这一特性的核心逻辑和梯度下降是相通的,只是梯度提升的实现方式是加法模型+前向分步学习,具体影响体现在每一步基学习器的拟合目标上。
核心逻辑拆解
梯度提升的每一步,都是训练一个基学习器去拟合当前模型预测结果的负梯度(伪残差),而损失函数的形式直接决定了伪残差的计算规则:
- 平方误差损失(
squared_error):损失公式为 $L(y, \hat{y}) = \frac{1}{2}(y-\hat{y})^2$,其负梯度就是真实残差 $y-\hat{y}$。误差越大,伪残差的绝对值就越大,意味着下一步的基学习器会分配更多的学习权重去修正这个大误差——相当于对大误差的惩罚力度更强。 - 绝对误差损失(
absolute_error):损失公式为 $L(y, \hat{y}) = |y-\hat{y}|$,其负梯度是符号函数 $sign(y-\hat{y})$(取值仅为+1或-1)。无论误差是大是小,伪残差的绝对值都是1,下一步的基学习器对所有误差的修正力度完全一致,不会针对大误差额外加重惩罚。
实际表现差异
用sklearn的GradientBoostingRegressor做对比时,这种差异会很明显:
- 当数据集存在离群点(大误差样本)时,使用
squared_error的模型会更“在意”这些离群点,甚至会为了拟合它们牺牲大部分正常样本的拟合精度; - 而使用
absolute_error的模型对离群点的敏感度低得多,拟合结果更稳健,不会被少数大误差样本带偏。
另外,huber损失是两者的折中方案:小误差范围内用平方损失(保持对小误差的精准修正),超过阈值的大误差切换为绝对损失(避免过度惩罚离群点),兼顾了拟合精度和模型稳健性;quantile损失则用于分位数回归,能预测不同分位数的结果,和误差惩罚的逻辑不同。
内容的提问来源于stack exchange,提问作者Sanyo Mn
相关产品推荐
相关产品推荐

