Return loss function: L1, L2, Huber, Log-Cosh, Quantile Loss

Return loss function: L1, L2, Huber, Log-Cosh, Quantile Loss

Disclaimer: This article is a blogger original article, follow the  CC 4.0 BY-SA  copyright agreement, reproduced, please attach the original source link and this statement.
This link: https://blog.csdn.net/clover_my/article/details/90777964

Return loss function: L1, L2, Huber, Log-Cosh, Quantile Loss

Machine learning algorithms require all maximize or minimize a function that is called "objective function." Wherein, we generally minimize the class of functions, called "loss function." According to the results it can predict, measure the predictive power of the model is good or bad.

In practical applications, the loss of function select restricted by many factors, such as whether there is an abnormal value, the machine learning algorithm is selected, the time complexity of gradient descent, and the ease of derivation confidence like predicted values. Thus, there is a loss function is not suitable for handling all types of data. Loss functions can be broadly divided into two categories: the loss of function and loss of function regression classification problems. This article describes the different types of return loss of function as well as they do.

 

1, MAE / L1 + MSE / L2

(1) the mean absolute error (MAE / L1)

Y-axis: MAE loss. X-axis: expected.

Mean absolute error (MAE) is a loss function regression model is used. MAE is the absolute value of the difference between the predicted value and the target value and. Which only measure an average prediction error of the length of the mold, regardless of the direction, the range is from 0 to positive infinity (the direction in consideration, it is the sum of the residual / error - mean deviation (MBE)).

 

(2) the mean square error (MSE / L2)

Y-axis: MSE loss. X-axis: expected.

均方误差(MSE)是最常用的回归损失函数,计算方法是求预测值与真实值之间距离的平方和。MSE函数的图像中,目标值是100,预测值的范围从-10000到10000,Y轴代表的MSE取值范围是从0到正无穷,并且在预测值为100处达到最小。

 

(3)MSE(L2损失)与MAE(L1损失)的分析

简单来说,MSE计算简便,但MAE对异常点有更好的鲁棒性。训练一个机器学习模型时,目标就是找到损失函数达到极小值的点。当预测值等于真实值时,这两种函数都能达到最小。 

分析:MSE对误差取了平方(令e=真实值-预测值),因此若e>1,则MSE会进一步增大误差。如果数据中存在异常点,那么e值就会很大,而e²则会远大于|e|。因此,相对于使用MAE计算损失,使用MSE的模型会赋予异常点更大的权重。用RMSE(即MSE的平方根,同MAE在同一量级中)计算损失的模型会以牺牲了其他样本的误差为代价,朝着减小异常点误差的方向更新。然而这就会降低模型的整体性能。

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

如何选择损失函数:如果训练数据被异常点所污染(比如,在训练数据中存在大量错误的反例和正例标记,但是在测试集中没有这个问题)或者异常点代表在商业中很重要的异常情况,并且需要被检测出来,则应选用MSE损失函数。相反,如果只把异常值当作受损数据,则应选用MAE损失函数。

MAE存在一个严重的问题(特别是对于神经网络):更新的梯度始终相同,也就是说,即使对于很小的损失值,梯度也很大。这样不利于模型的学习。为了解决这个缺陷,可以使用变化的学习率,在损失接近最小值时降低学习率。

MSE在这种情况下的表现就很好,即便使用固定的学习率也可以有效收敛。MSE损失的梯度随损失增大而增大,而损失趋于0时则会减小。这使得在训练结束时,使用MSE模型的结果会更精确。

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

二者兼有的问题是:在某些情况下,上述两种损失函数都不能满足需求。例如,若数据中90%的样本对应的目标值为150,剩下10%在0到30之间。那么使用MAE作为损失函数的模型可能会忽视10%的异常点,而对所有样本的预测值都为150。这是因为模型会按中位数来预测。而使用MSE的模型则会给出很多介于0到30的预测值,因为模型会向异常点偏移。上述两种结果在许多商业场景中都是不可取的。最简单的办法是对目标变量进行变换。而另一种办法则是换一个损失函数。

 

2、Huber Loss

Y轴:Huber损失。X轴:预测值。真值取0。

Huber损失,平滑的平均绝对误差。Huber损失对数据中的异常点没有平方误差损失那么敏感。它在0也可微分。本质上,Huber损失是绝对误差,只是在误差很小时,就变为平方误差。误差降到多小时变为平方误差由超参数δ(delta)来控制。当Huber损失在 [0-δ,0+δ] 之间时,等价为MSE,而在 [-∞,δ] 和 [δ,+∞] 时为MAE。

这里超参数delta的选择非常重要,因为这决定了对异常点的定义。当残差大于delta,应当采用L1(对较大的异常值不那么敏感)来最小化,而残差小于超参数,则用L2来最小化。

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

 

3、Log-Cosh Loss

Y轴:Log-cosh损失。X轴:预测值。真值取0。

Log-cosh损失是另一种应用于回归问题中的,且比L2更平滑的的损失函数。它的计算方式是预测误差的双曲余弦的对数。

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

如何选择损失函数:许多机器学习模型如XGBoost,就是采用牛顿法来寻找最优点。而牛顿法就需要求解二阶导数(Hessian)。因此对于诸如XGBoost这类机器学习框架,损失函数的二阶可微是很有必要的。但Log-cosh损失也并非完美,其仍存在某些问题。比如误差很大的话,一阶梯度和Hessian会变成定值,这就导致XGBoost出现缺少分裂点的情况。

 

4、Quantile Loss

γ是所需的分位数,其值介于0和1之间。

Y轴:分位数损失。X轴:预测值。Y的真值为0。

许多商业问题的决策通常希望了解预测中的不确定性,更关注区间预测而不仅是点预测时,分位数损失函数就很有用。

使用最小二乘回归进行区间预测,基于的假设是残差(y-y_hat)是独立变量,且方差保持不变。一旦违背了这条假设,那么线性回归模型就不成立。这时,就可以使用分位数损失和分位数回归,因为即便对于具有变化方差或非正态分布的残差,基于分位数损失的回归也能给出合理的预测区间。

理解分位数损失函数:如何选取合适的分位值取决于我们对正误差和反误差的重视程度。损失函数通过分位值(γ)对高估和低估给予不同的惩罚。例如,当分位数损失函数γ=0.25时,对高估的惩罚更大,使得预测值略低于中值。

这个损失函数也可以在神经网络或基于树的模型中计算预测区间。在用Sklearn实现梯度提升树回归模型的示例中,使用分位数损失可以得到90%的预测区间。其中上限为γ=0.95,下限为γ=0.05。

Guess you like

Origin www.cnblogs.com/think90/p/11787135.html