机器学习之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
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回归问题的损失函数是用来衡量模型预测值与真实值之间的差异的函数。以下是几种常见的机器学习回归损失函数: 1. 均方误差(Mean Squared Error,MSE):MSE是最常见的回归损失函数之一,它计算预测值与真实值之间的平方差的平均值。MSE越小,表示模型的预测结果越接近真实值。 ```python def mse(y_true, y_pred): return np.mean((y_true - y_pred)**2) ``` 2. 平均绝对误差(Mean Absolute Error,MAE):MAE计算预测值与真实值之间的绝对差的平均值。与MSE相比,MAE更加关注预测值与真实值之间的差异,而不是差异的平方。 ```python def mae(y_true, y_pred): return np.mean(np.abs(y_true - y_pred)) ``` 3. Huber损失:Huber损失是一种介于MSE和MAE之间的损失函数,它对预测值与真实值之间的差异进行平方和绝对值两种方式的计算,从而在预测值与真实值之间存在较大差异时,能够更好地平衡两种损失函数的优缺点。 ```python def huber_loss(y_true, y_pred, delta=1.0): error = y_true - y_pred abs_error = np.abs(error) quadratic = np.minimum(abs_error, delta) linear = abs_error - quadratic return np.mean(0.5 * quadratic**2 + delta * linear) ``` 4. Log-Cosh损失:Log-Cosh损失是一种平滑的损失函数,它对预测值与真实值之间的差异进行了对数和双曲余弦两种方式的计算,从而在预测值与真实值之间存在较大差异时,能够更好地平衡两种损失函数的优缺点。 ```python def logcosh_loss(y_true, y_pred): error = y_true - y_pred return np.mean(np.log(np.cosh(error))) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值