机器学习之Huber loss

本文深入解析了HuberLoss,一种用于回归问题的带参损失函数,重点介绍了其如何结合平方误差和线性误差来增强MSE对离群点的鲁棒性。通过Python示例展示了不同δ值下HuberLoss的表现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
 
        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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值