机器学习最常用的5个“”回归损失函数”

本文系总结自文章机器学习大牛最常用的5个回归损失函数,你知道几个?
详细讲解请直接前往,本文只作为作者的笔记列出。

误差=真实值-预测值。

1 MAE(L1损失)与 MSE (L2损失)

1.1 MAE与MSE的定义

平均绝对值误差(MAE,也称L1损失)
在这里插入图片描述

均方误差(MSE,也称L2损失)
在这里插入图片描述

1.2 MAE与MSE的比较

  简单来说,MSE计算简便,但MAE对异常点有更好的鲁棒性
  让我们观察MAE和RMSE(即MSE的平方根,同MAE在同一量级中)在两个例子中的计算结果。第一个例子中,预测值和真实值很接近,而且误差的方差也较小。第二个例子中,因为存在一个异常点,而导致误差非常大。
在这里插入图片描述
左图:误差比较接近            右图:有一个误差远大于其他误差
其中 M A E = 1 5 ∑ i = 1 5 ∣ E r r o r ∣ MAE=\frac{1}{5}\sum_{i=1}^5{|Error|} MAE=51i=15Error M S E = 1 5 ∑ i = 1 5 E r r o r 2 MSE=\sqrt{\frac{1}{5}\sum_{i=1}^5{Error^2}} MSE=51i=15Error2

  MSE对误差取了平方(令e=真实值-预测值),因此若e>1,则MSE会进一步增大误差。如果数据中存在异常点,那么e值就会很大,而e则会远大于|e|。

  直观上可以这样理解:如果我们最小化MSE来对所有的样本点只给出一个预测值,那么这个值一定是所有目标值的平均值。但如果是最小化MAE,那么这个值,则会是所有样本点目标值的中位数。众所周知,对异常值而言,中位数比均值更加鲁棒,因此MAE对于异常值也比MSE更稳定。

1.3 怎么选择MAE和MSE呢?

如果异常点代表在商业中很重要的异常情况,并且需要被检测出来,则应选用MSE损失函数。
相反,如果只把异常值当作受损数据,则应选用MAE损失函数。

总而言之,处理异常点时,L1损失函数更稳定,但它的导数不连续,因此求解效率较低。
L2损失函数对异常点更敏感,但通过令其导数为0,可以得到更稳定的封闭解。

1.3 MAE与MSE都存在的问题

二者兼有的问题是:在某些情况下,上述两种损失函数都不能满足需求。例如,若数据中90%的样本对应的目标值为150,剩下10%在0到30之间。那么使用MAE作为损失函数的模型可能会忽视10%的异常点,而对所有样本的预测值都为150。

这是因为模型会按中位数来预测。而使用MSE的模型则会给出很多介于0到30的预测值,因为模型会向异常点偏移。上述两种结果在许多商业场景中都是不可取的。

这些情况下应该怎么办呢?最简单的办法是对目标变量进行变换。而另一种办法则是换一个损失函数,这就引出了下面要讲的第三种损失函数,即Huber损失函数。

2 Huber损失函数

2.1 Huber损失定义

  Huber损失,平滑的平均绝对误差。
  Huber损失对数据中的异常点没有平方误差损失那么敏感。它在0也可微分。本质上,Huber损失是绝对误差,只是在误差很小时,就变为平方误差。误差降到多小时变为二次误差由超参数δ(delta)来控制。当Huber损失在[0-δ,0+δ]之间时,等价为MSE,而在[-∞,δ]和[δ,+∞]时为MAE。
在这里插入图片描述
  这里超参数delta的选择非常重要,因为这决定了你对与异常点的定义。当残差大于delta,应当采用L1(对较大的异常值不那么敏感)来最小化,而残差小于超参数,则用L2来最小化。

2.2 为何要使用Huber损失

  使用MAE训练神经网络最大的一个问题就是不变的大梯度,这可能导致在使用梯度下降快要结束时,错过了最小点。而对于MSE,梯度会随着损失的减小而减小,使结果更加精确。
  在这种情况下,Huber损失就非常有用。它会由于梯度的减小而落在最小值附近。比起MSE,它对异常点更加鲁棒。因此,Huber损失结合了MSE和MAE的优点。但是,Huber损失的问题是我们可能需要不断调整超参数delta。

3 Log-Cosh损失

3.1 定义

在这里插入图片描述

3.2 优点

对于较小的x,log(cosh(x))近似等于(x^2)/2,对于较大的x,近似等于abs(x)-log(2)。这意味着‘logcosh’基本类似于均方误差,但不易受到异常点的影响。它具有Huber损失所有的优点,但不同于Huber损失的是,Log-cosh二阶处处可微

为什么需要二阶导数?许多机器学习模型如XGBoost,就是采用牛顿法来寻找最优点。而牛顿法就需要求解二阶导数(Hessian)。因此对于诸如XGBoost这类机器学习框架,损失函数的二阶可微是很有必要的。

4 分位数损失

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张之海

若有帮助,客官打赏一分吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值