Skip to content

Huber 回归

Huber Regression

回归模型的一个大问题是它们对离群点很敏感。以线性回归为例。哪怕只有少数离群点,也会显著影响线性回归的表现,如下图所示:

ds p245 1

而且不难找出这个问题的根源。本质上,损失函数(MSE)会随残差项(真实值-预测值)迅速放大。

ds p245 2

因此,哪怕只有少数残差很大的数据点,也会影响参数估计。

Huber 损失(或 Huber 回归)恰好解决这个问题。简而言之,它试图减小具有大残差的数据点对误差的贡献。一种简单、直观又显而易见的做法是,对残差项施加一个阈值 δ:

  • 如果残差小于阈值,就用 MSE(这里没有变化)。
  • 否则,就用一个输出比 MSE 更小的损失函数——比如线性的。如下图所示:
  • 对于小于阈值 δ 的残差 → 我们用 MSE。
  • 否则,我们用一个输出比 MSE 更小的线性损失函数。

ds p246 1

在数学上,Huber 损失定义如下:

ds p246 2

ds p247 1

它的有效性从下图可见一斑:

  • 线性回归受离群点影响
  • Huber 回归更稳健。

虽然试错是一种办法,但我常喜欢画一张残差图。如下图所示:下面的图通常被称为棒棒糖图,因为它的外观。

ds p247 2

  • 像往常一样训练一个线性回归模型。
  • 在训练数据上计算残差(=真实值-预测值)。
  • 为每个数据点绘制绝对残差。

一个好处是,我们可以为任意维度的数据集绘制这张图。目的只是绘制(真实值-预测值),而这些值始终是一维的。 254

接下来,你可以主观地决定一个合理的阈值 δ。

在 Huber 回归中使用线性损失函数,是为了减少本应由 MSE 产生的大误差贡献。因此,我们还可以进一步减小误差贡献,比如使用一个平方根损失函数,如下所示:

ds p248 1

我不确定这是否有人提出过,所以我决定把它叫做

ds p248 2

SqrtDasic Loss。

显然,对于所有超过阈值 δ 的残差,平方根损失函数的误差贡献都是最低的。

本站内容仅供学习交流,版权归原作者所有。