机器学习之Huber loss

 
 
        Huber Loss 是用于回归问题的带参损失函数, 优点是能增强平方误差损失函数(MSE, mean square error)对离群点的鲁棒性。

  • 当预测偏差小于 δ 时,它采用平方误差,
  • 当预测偏差大于 δ 时,采用的线性误差。

具体定义如下:
                        在这里插入图片描述
其中 a 表示误差,即 y − y ^ y-\hat{y}yy^ 或者 y − f ( x ) y-f(x)yf(x),因此上式可变为:
                        在这里插入图片描述

示例如下:

import numpy as np
import matplotlib.pyplot as plt
 
def huber_loss(a, d):                    # Definition
    return (abs(a)<=d)*a**2/2 + (abs(a)>d)*d*(abs(a)-d/2)
 
plt.figure(figsize=(6, 4.5), facecolor='w', edgecolor='k')

x = np.arange(-30, 30)
plt.plot(x, x**2/2, lw=2,label='Squared loss', color='g')
for d in (10, 6, 3, 1):
    plt.plot(x, huber_loss(x, d), label=r'Huber loss: $\delta$={}'.format(d), lw=2)
 
plt.legend(loc='best', frameon=False)
plt.xlabel('standard deviation')
plt.ylabel('loss')
plt.show()

                        在这里插入图片描述

δ 是 HuberLoss 的参数,y 是真实值,f(x) 是模型的预测值, 横坐标 x 则是误差值。

Reference:

  1. 【机器学习】Huber loss
  2. Huber Loss

版权声明:本文为qq_40520596原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。