【机器学习精研】——5种常见的回归损失函数

  • Post author:
  • Post category:其他


【引言】

所有机器学习算法都旨在

最小化或最大化目标函数

,其中,将目标函数最小化的过程称为

损失函数


损失函数

:是衡量预测模型预测期望结果表现的指标。常用方法为

梯度下降法

,通过设置一定的步长,让函数在求导的过程中逐渐逼近

谷值

。而损失函数往往因为机器学习算法的类别分为

回归损失函数和分类损失函数


1、回归损失函数

,常见的有:

1、最小平方误差法(MSE)
2、平均绝对值误差法(MAE)
3、平滑平均绝对值误差法(S-MAE)
4、Log-cosh对数损失
5、quantile-loss分位数损失点


2、分类损失函数

,常见的有:

1、对数损失法
2、Focal Loss
3、KL-Divergence
4、指数损失
5、Hinger Loss



1、均方误差(MSE——L2损失):

顾名思义:





M

S

E

=

1

2

m

i

=

1

m

(

y

^

y

)

2

MSE = \frac{1}{2m}\sum_{i=1}^{m}{(\hat{y}-y)^2}






M


S


E




=



















2


m














1































i


=


1



















m





















(










y







^























y



)










2















预测值与真实值的差值的平方之和,再求平均数。一般的,会用2m作为项数分母是为了便于求导。

利用的是欧氏距离




2、平均绝对误差(Mean Absolute Error——L1损失)

MAE是目标变量和预测变量之间差异绝对值之和。显然,MAE

利用的是曼哈顿距离

,公式如下:





M

A

E

=

1

m

i

=

1

m

y

^

y

MAE=\frac{1}{m}{\sum_{i=1}^{m}|\hat{y}-y|}






M


A


E




=



















m














1






























i


=


1



















m































y







^























y











L1与L2的比较:

使用MSE

更易求解

,但使用MAE对离群点

更加鲁棒

。当我们训练机器学习模型时,目的就是找到最小化损失函数的点。当然,当预测值正好等于真实值时,这两个损失函数都达到最小值。

不难观察,MSE自带了2范式,因此在出现e=y_hat – y 时,因为平方项的原因,会使得数据间隔变大。这将MSE与 MAE 相比,以前者为损失的模型会赋予更高的权重给离群点。

虽然可以利用 RMSE (标准差代替平方差)为损失的模型

将被调整以最小化这个离群数据点,但是却是以

牺牲其他正常数据点的预测效果

为代价,这最终会降低模型的整体性能。

因此可以得出,

MAE损失更适用于训练数据被离群点损坏的时候

不过,

针对神经网络

时使用 MAE 损失容易产生一个大问题是

它的梯度始终相同

,这意味着即使对于小的损失值,其梯度也是大的。此时使用MSE更好。

【总结】

如果离群点是会影响业务、而且是应该被检测到的异常值,那么我们应该使用 MSE。另一方面,如果我们认为离群点仅仅代表数据损坏,那么我们应该选择 MAE 作为损失。




3、Huber Loss或Smooth-MAE(平滑的平均绝对误差)

Huber Loss 对数据离群点的敏感度低于平方误差损失,在0处也可导。基本上它是绝对误差,当误差很小时,误差是二次形式的。误差何时需要变成二次形式取决于一个超参数δ,该超参数可以进行微调。当 ? ~ 0时, Huber Loss 接近 MAE,当 ? ~ ∞(很大的数)时,Huber Loss 接近 MSE。

Huber Loss类似于一个分段函数,拥有L1和L2损失的特点,其关键在于对δ的取值。使用 MAE 训练神经网络的一个大问题是经常会遇到很大的梯度,使用梯度下降时可能导致

训练结束时错过最小值

。对于 MSE,梯度会随着损失接近最小值而降低,从而使其更加精确。在这种情况下,Huber Loss 可能会非常有用,因为它会使最小值附近弯曲,从而降低梯度。另外它比 MSE 对异常值更鲁棒。因此,它

结合了 MSE 和 MAE 的优良特性

。但是,Huber Loss 的问题是我们可能

需要迭代地训练超参数δ




4、Log Cosh Loss

Log Cosh比L2更加的平滑,也它是预测误差双曲余弦的对数。





L

(

y

^

,

y

)

=

i

=

1

m

l

o

g

(

c

o

s

h

(

y

^

i

,

y

i

)

)

L(\hat{y},y) = \sum_{i=1}^{m}log(cosh(\hat{y}_i, y_i))






L


(










y







^
















,




y


)




=

















i


=


1



















m




















l


o


g


(


c


o


s


h


(











y







^
























i


















,





y










i


















)


)







【其优点在于】




l

o

g

(

c

o

s

h

(

y

^

,

y

)

)

log(cosh(\hat{y},y))






l


o


g


(


c


o


s


h


(










y







^
















,




y


)


)





对于小的<



y

^

,

y

\hat{y},y














y







^
















,




y





>来说,其大约等于



x

2

2

\frac{x^2}{2}


















2

















x










2































,而对于大的 x 来说,其大约等于



y

^

,

y

l

o

g

(

2

)

|{\hat{y}, y}| – log(2)


















y







^
















,




y

















l


o


g


(


2


)





。这意味着log-cosh的作用大部分与均方误差一样,但不会受到偶尔出现的极端不正确预测的强烈影响。它具有Huber Loss 的所有优点,和 Huber Loss 不同之处在于,其

处处二次可导




5、Quantile Loss(分位数损失)

(暂不补充)




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