一、损失函数:
1.1 回归问题:
1. 平方损失函数(最小二乘法):
L ( y , y ^ ) = ∑ i = 1 n ( y i − y i ^ ) 2 L(y, \hat{y}) = \sum_{i=1}^n(y_i- \hat{y_i})^2 L(y,y^)=i=1∑n(yi−yi^)2
回归问题中常用的损失函数,在线性回归中,可以通过极大似然估计(MLE)推导。计算的是预测值与真实值之间距离的平方和。实际更常用的是均方误差(Mean Squared Error-MSE):
L ( y , y ^ ) = 1 n ∑ i = 1 n ( y i − y i ^ ) 2 L(y, \hat{y}) = \frac{1}{n}\sum_{i=1}^n(y_i- \hat{y_i})^2 L(y,y^)=n1i=1∑n(yi−yi^)2
2 平均绝对值误差(L1)-- MAE:
L ( y i − y i ^ ) = 1 n ∑ i = 1 n ∣ y i − y i ^ ∣ L(y_i- \hat{y_i}) = \frac{1}{n} \sum_{i=1}^n|y_i- \hat{y_i}| L(yi−yi^)=n1i=1∑n∣yi−yi^∣
MAE是目标值和预测值之差的绝对值之和,可以用来衡量预测值和真实值的距离。但是它不能给出,模型的预测值是比真实值小还是大。
3 MAE(L1) VS MSE(L2):
- MSE计算简便,但MAE对异常点有更好的鲁棒性:
当数据中存在异常点时,用MSE/RMSE计算损失的模型会以牺牲了其他样本的误差为代价,朝着减小异常点误差的方向更新。然而这就会降低模型的整体性能。
直观上可以这样理解:如果我们最小化MSE来对所有的样本点只给出一个预测值,那么这个值一定是所有目标值的平均值。但如果是最小化MAE,那么这个值,则会是所有样本点目标值的中位数。众所周知,对异常值而言,中位数比均值更加鲁棒,因此MAE对于异常值也比MSE更稳定。
-
NN中MAE更新梯度始终相同,而MSE则不同:
MSE损失的梯度随损失增大而增大,而损失趋于0时则会减小。 -
Loss选择建议:
- MSE: 如果异常点代表在商业中很重要的异常情况,并且需要被检测出来
- MAE: 如果只把异常值当作受损数据
4. Huber损失:
L δ ( y i − y i ^ ) = { 1 2 ( y i − y i ^ ) 2 for ∣ y − f ( x ) ∣ ≤ δ δ ∣ y i − y i ^ ∣ − 1 2 δ 2 otherwise L_{\delta}(y_i- \hat{y_i})=\left\{\begin{array}{ll}{\frac{1}{2}(y_i- \hat{y_i})^{2}} & {\text { for }|y-f(x)| \leq \delta} \\ {\delta|y_i- \hat{y_i}|-\frac{1}{2} \delta^{2}} & {\text { otherwise }}\end{array}\right. Lδ(yi−yi^)={ 21(yi−yi^)2δ∣yi−yi^∣−21δ2 for ∣y−f(x)∣≤δ otherwise