机器学习中常见的损失函数
损失函数(Loss function)是用来估量你模型的预测值 f(x)f(x) 与真实值 YY 的不一致程度,它是一个非负实值函数,通常用 L(Y,f(x))L(Y,f(x)) 来表示。损失函数越小,模型的鲁棒性就越好。损失函数是经验风险函数的核心部分,也是结构风险函数的重要组成部分。
一,回归问题
1,MSE(均方误差)(Mean Square Error)
均方误差也叫方法损失函数或者最小二乘法
作为机器学习中常常用于损失函数的方法,均方误差频繁的出现在机器学习的各种算法中,但是由于是舶来品,又和其他的几个概念特别像,所以常常在跟他人描述的时候说成其他方法的名字。
均方误差的数学表达为:
MSE=1n∑in(yi−f(xi))2 MSE=\frac{1}{n}\sum_{i}^{n}(y_i-f(x_i))^2 MSE=n1​i∑n​(yi​−f(xi​))2
如公式所示,通过计算每个预测值和实际值之间的差值的平方和再求平均,机器学习中它经常被用于表示预测值和实际值相差的程度。平方损失函数是光滑的,可以用梯度下降法求解,但是,当预测值和真实值差异较大时,它的惩罚力度较大,因此对异常点较为敏感。

2,RMSE(均方根误差)
即RMSE (均方根误差)(Root Mean Square Error)
对方差开平方就是均方差,而均方差又称标准差,即:
RMSE=1n∑in(yi−f(xi))2 RMSE=\sqrt{\frac{1}{n}\sum_{i}^{n}(y_i-f(x_i))^2} RMSE=n1​i∑n​(yi​−f(xi​))2​
与MSE一样对于异常点也是非常敏感。

3,MAE (平均绝对误差)
MAE=1n∑i=0n∣yi^−yi∣MAE=\frac{1}{n}\sum_{i=0}^{n}|\hat{y_i}-y_i|MAE=n1​∑i=0n​∣yi​^​−yi​∣

4,MAPE(平均绝对百分比)
MAPE=∑i=1n∣yi−f(xi)yi∣∗100n MAPE=\sum_{i=1}^{n}|\frac{y_i-f(x_i)}{y_i}|*\frac{100}{n} MAPE=i=1∑n​∣yi​yi​−f(xi​)​∣∗n100​
MAPE不仅仅考虑预测值与真实值的误差,还考虑了误差与真实值之间的比例,在某些场景下,比如房价从0.5w到5w之间,将0.5预测成1.0与将5.0预测成4.5,实际上预测差距是非常大的,如果用RMSE的话两者效果相同,而用MAPE的后者要比前者好一些。

二,分类问题
1,0-1损失函数
f(x)={0y=f(x)1y!=f(x)f(x)= \begin{cases} 0& \text{y=f(x)}\\ 1& \text{y!=f(x)} \end{cases}f(x)={01​y=f(x)y!=f(x)​
或者是:
f(x)=I(y(x))f(x)=I(y(x))f(x)=I(y(x))
2,logLoss (对数损失函数,也叫binary cross entropy,二元交叉熵损失,LR)
log loss function表达式:
logloss=−1m∑i=0m(yilog(pi)+(1−yi)log(1−pi)) logloss=-\frac{1}{m}\sum_{i=0}^{m}(y_ilog(p_i)+(1-y_i)log(1-p_i)) logloss=−m1​i=0∑m​(yi​log(pi​)+(1−yi​)log(1−pi​))
其中yiy_iyi​是个样本的真实标签,pip_ipi​是第i个样本预测为正样本的概率。

3,Cross-Entropy损失函数
交叉熵刻画的是两个概率分部之间的距离,或可以说其刻画的是通过概率分布q来表达概率分布p的困难程度,p代表正确答案,q代表的是预测值,交叉熵越小,两个概率的分布越接近。
交叉熵损失函数通常使用在softmax上,而softmax通常使用在神经网络的末端,使其预测结果以概率的形式输出。
交叉熵损失函数的数学表达如下所示:
H(p,q)=−∑i=0m∑j=1np(xij)log(q(xij)) H(p,q)=-\sum_{i=0}^{m}\sum_{j=1}^{n}p(x_{ij})log(q(x_{ij})) H(p,q)=−i=0∑m​j=1∑n​p(xij​)log(q(xij​))
m为样本数量,n为样本所属的不同类别个数。p(xij)p(x_{ij})p(xij​)表示样本i所属类别j,q(xij)q(x_{ij})q(xij​)表示预测样本i属于类别j的概率。

logloss与交叉熵的对比
对数损失函数(Log loss function)和交叉熵损失函数(Cross-entroy loss funtion)在很多文献内是一致的,因为他们的表示式的本质是一样的。但是两种损失函数所对应的上一层结构不同,log loss经常对应的是Sigmoid函数的输出,用于二分类问题;而cross-entropy loss经常对应的是Softmax函数的输出,用于多分类问题。
所以在神经网络中经常使用cross-entropy作为评判参数优化的函数,而在二分类的场景下经常使用log loss作为评判参数优化的函数。

4,Hinge损失函数(SVM)
用于svm,svm通过间隔最大化方式,通过拉格朗日乘子法转化成对偶问题进行建模求解的。
Hinge-loss的数学表达如下:
L(y)=max(0,1−f(x)) L(y) = max(0,1-f(x)) L(y)=max(0,1−f(x))
5,指数损失函数(exp-loss)
应用于AdaBoost。
指数损失(exp-loss)函数的标准形式为:
L(y,f(x))=exp(−y∗f(x)) L(y,f(x))=exp(-y*f(x)) L(y,f(x))=exp(−y∗f(x))
在Adaboost算法学习的过程中,经过m轮迭代之后,可以得到fm(x)f_m(x)fm​(x) :
fm(x)=fm−1(x)+am∗Gm(x)f_m(x)=f_{m-1}(x)+a_m*G_m(x)fm​(x)=fm−1​(x)+am​∗Gm​(x)
在给定n个样本的情况下,Adaboost的损失函数为:
L(y,f(x))=1n∑i=0nexp(−yi∗f(xi)) L(y,f(x))=\frac{1}{n}\sum_{i=0}^{n}exp(-y_i*f(x_i)) L(y,f(x))=n1​i=0∑n​exp(−yi​∗f(xi​))

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐