统计机器学习的策略通常是最小化代价函数(目标函数),因此代价函数的选取对学习效果影响很大。损失函数与代价函数是一回事,但有的书籍定义损失函数指单个样本的损失(ll),而代价函数指损失函数之和或加上正则化项(LL)。本文用ll表示单个样本的损失,LL表示所有样本的平均损失,ypy^p表示预测值f(x)f(x)

分类模型损失函数

分类模型的损失函数通常用yypyy^p来表示。

Zero-One

0-1损失函数对每个错分类点施加相同的惩罚。表达式如下:l(yi,yip)={0yiyip01yiyip<0l(y_i, y_i^p)=\left\{ \begin{aligned} 0 \qquad y_iy_i^p\ge 0 \\ 1\qquad y_iy_i^p\lt 0\end{aligned} \right.

Logistic

Logistic损失函数是二分类问题中用得最多的损失函数,表达式如下:l(yi,yip)=log(1+eyyp)l(y_i, y_i^p)=log(1+e^{-yy^p})模型输出值通常是连续值,需要采用logistic函数将连续值转化为属于正类的概率P(y=1)=11+ef(x)P(y=1)=\frac{1}{1+e^{-f(x)}}(对连续值做一个逻辑回归分析)。进一步推导P(yixi)=11+eyif(xi)P(y_i|x_i)=\frac{1}{1+e^{-y_if(x_i)}}。最大化P(yixi)P(y_i|x_i)与最小化逻辑损失函数是等价的。

Hinge

支持向量机采用的损失函数。表达式如下:l(yi,yip)=max(0,1yiyip)l(y_i, y_i^p)=max(0, 1-y_iy_i^p)可见该损失函数使得yiyipy_iy_i^p大于1的样本损失值为0,抛弃其在模型构建中的作用,即非支持向量对模型的构建不产生任何作用。

Exponential

指数损失是Adaboost中的损失函数,表达式如下:l(yi,yip)=eyiyipl(y_i, y_i^p)=e^{-y_iy_i^p}预测结果与真实值相差较大时,损失值过大,对局外点过于敏感。

Modified Huber

Huber损失函数在分类模型中的变种,结合了Hinge以及Logistic损失函数的优点。表达式如下:lδ(yi,yip)={max(0,1yiyip)2yiyip14yiyipotherwisel_{\delta}(y_i,y_i^p)=\left\{ \begin{aligned} max(0, 1-y_iy_i^p)^2 \qquad y_iy_i^p|\ge-1 \\ -4y_iy_i^p\qquad otherwise \end{aligned} \right.可见在yiyip1y_iy_i^p \ge 1时产生稀疏解提高训练效率,对预测误差较大的样本(yiyip<1y_iy_i^p \lt -1),惩罚以线性增加,受局外点的影响较小。
机器学习模型的损失函数

回归模型损失函数

MSE

平方误差损失函数(mean square error,MSE )或称quadratic loss、L2损失函数,是最常用的损失函数。表达式如下:L(y,yp)=i=1n(yiyip)2nL(y,y^p)=\frac{\sum_{i=1}^{n}{(y_i-y_i^p)^2}}{n}
优点:曲线平滑,一阶二阶均可导,在极值点导数也不会有很大跃变
缺点:对于局外点,其值过大,导致模型会过分拟合局外点,性能降低

MAE

平均绝对误差损失函数(mean absolute error, MAE),又称L1损失函数。表达式如下:L(y,yp)=i=1nyiyipnL(y,y^p)=\frac{\sum_{i=1}^{n}{|y_i-y_i^p|}}{n}
优点:对局外点不像MSE那么敏感
缺点:在极值点梯度跃变(不可导),靠近极值点时需要降低学习率

Huber

Huber损失函数可以看作MSE以及MAE的结合。表达式如下:lδ(yi,yip)={12(yiyip)2yiyipδδyiyip12δ2otherwisel_{\delta}(y_i,y_i^p)=\left\{ \begin{aligned} \frac12(y_i -y_i^p)^2 \qquad |y_i-y_i^p|\le\delta \\ \delta |y_i-y_i^p| - \frac 12\delta^2\qquad otherwise \end{aligned} \right.
可见δ\delta趋近于0则退化成MAE, 趋于无穷则退化成MSE。
优点: 综合了MSE以及MAE的优点,即既对局外点不敏感,同时连续可导。
缺点:超参数δ\delta不容易调节

Log-Cosh

对数双曲余弦损失函数是一种比MSE更加光滑的损失函数。表达式如下:L(y,yp)=i=1nlog(cosh(yipyi))L(y,y^p)=\sum_{i=1}^{n}{log(cosh(y_i^p-y_i))}
优点:拥有Huber损失函数的所有优点,且处处二阶可导
缺点:当预测值与真实值相差非常大时,一阶二阶导数接近于常数

Quantile

分位数损失函数通过分位数γ\gamma对过拟合以及欠拟合施加不同的权重。γ>0.5\gamma>0.5惩罚过拟合较多,反之惩罚欠拟合较多。Lγ(y,yp)=i=yi<yip(γ1)yiyip+i=yiyipγyiyipL_{\gamma}(y, y^p)=\sum_{i=y_i<y_i^p}{(\gamma -1)|y_i-y_i^p|+\sum_{i=y_i\ge y_i^p}{\gamma|y_i-y_i^p|}}

机器学习模型的损失函数

参考资料

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

相关文章:

猜你喜欢
  • 2022-01-06
  • 2021-12-30
  • 2021-06-04
  • 2021-12-09
相关资源
相似解决方案