统计机器学习的策略通常是最小化代价函数(目标函数),因此代价函数的选取对学习效果影响很大。损失函数与代价函数是一回事,但有的书籍定义损失函数指单个样本的损失(l),而代价函数指损失函数之和或加上正则化项(L)。本文用l表示单个样本的损失,L表示所有样本的平均损失,yp表示预测值f(x)。
分类模型损失函数
分类模型的损失函数通常用yyp来表示。
Zero-One
0-1损失函数对每个错分类点施加相同的惩罚。表达式如下:l(yi,yip)={0yiyip≥01yiyip<0
Logistic
Logistic损失函数是二分类问题中用得最多的损失函数,表达式如下:l(yi,yip)=log(1+e−yyp)模型输出值通常是连续值,需要采用logistic函数将连续值转化为属于正类的概率P(y=1)=1+e−f(x)1(对连续值做一个逻辑回归分析)。进一步推导P(yi∣xi)=1+e−yif(xi)1。最大化P(yi∣xi)与最小化逻辑损失函数是等价的。
Hinge
支持向量机采用的损失函数。表达式如下:l(yi,yip)=max(0,1−yiyip)可见该损失函数使得yiyip大于1的样本损失值为0,抛弃其在模型构建中的作用,即非支持向量对模型的构建不产生任何作用。
Exponential
指数损失是Adaboost中的损失函数,表达式如下:l(yi,yip)=e−yiyip预测结果与真实值相差较大时,损失值过大,对局外点过于敏感。
Modified Huber
Huber损失函数在分类模型中的变种,结合了Hinge以及Logistic损失函数的优点。表达式如下:lδ(yi,yip)={max(0,1−yiyip)2yiyip∣≥−1−4yiyipotherwise可见在yiyip≥1时产生稀疏解提高训练效率,对预测误差较大的样本(yiyip<−1),惩罚以线性增加,受局外点的影响较小。

回归模型损失函数
MSE
平方误差损失函数(mean square error,MSE )或称quadratic loss、L2损失函数,是最常用的损失函数。表达式如下:L(y,yp)=n∑i=1n(yi−yip)2
优点:曲线平滑,一阶二阶均可导,在极值点导数也不会有很大跃变
缺点:对于局外点,其值过大,导致模型会过分拟合局外点,性能降低
MAE
平均绝对误差损失函数(mean absolute error, MAE),又称L1损失函数。表达式如下:L(y,yp)=n∑i=1n∣yi−yip∣
优点:对局外点不像MSE那么敏感
缺点:在极值点梯度跃变(不可导),靠近极值点时需要降低学习率
Huber
Huber损失函数可以看作MSE以及MAE的结合。表达式如下:lδ(yi,yip)=⎩⎪⎨⎪⎧21(yi−yip)2∣yi−yip∣≤δδ∣yi−yip∣−21δ2otherwise
可见δ趋近于0则退化成MAE, 趋于无穷则退化成MSE。
优点: 综合了MSE以及MAE的优点,即既对局外点不敏感,同时连续可导。
缺点:超参数δ不容易调节
Log-Cosh
对数双曲余弦损失函数是一种比MSE更加光滑的损失函数。表达式如下:L(y,yp)=i=1∑nlog(cosh(yip−yi))
优点:拥有Huber损失函数的所有优点,且处处二阶可导
缺点:当预测值与真实值相差非常大时,一阶二阶导数接近于常数
Quantile
分位数损失函数通过分位数γ对过拟合以及欠拟合施加不同的权重。γ>0.5惩罚过拟合较多,反之惩罚欠拟合较多。Lγ(y,yp)=i=yi<yip∑(γ−1)∣yi−yip∣+i=yi≥yip∑γ∣yi−yip∣

参考资料
https://www.cnblogs.com/massquantity/p/8964029.html
https://www.afenxi.com/56326.html
https://en.wikipedia.org/wiki/Huber_loss
注:如有不当之处,请指正。