机器学习中常见的损失函数
损失函数(Loss function)是用来估量你模型的预测值 f(x)f(x) 与真实值 YY 的不一致程度,它是一个非负实值函数,通常用 L(Y,f(x))L(Y,f(x)) 来表示。损失函数越小,模型的鲁棒性就越好。损失函数是经验风险函数的核心部分,也是结构风险函数的重要组成部分。
一,回归问题
1,MSE(均方误差)(Mean Square Error)
均方误差也叫方法损失函数或者最小二乘法
作为机器学习中常常用于损失函数的方法,均方误差频繁的出现在机器学习的各种算法中,但是由于是舶来品,又和其他的几个概念特别像,所以常常在跟他人描述的时候说成其他方法的名字。
均方误差的数学表达为:
如公式所示,通过计算每个预测值和实际值之间的差值的平方和再求平均,机器学习中它经常被用于表示预测值和实际值相差的程度。平方损失函数是光滑的,可以用梯度下降法求解,但是,当预测值和真实值差异较大时,它的惩罚力度较大,因此对异常点较为敏感。
2,RMSE(均方根误差)
即RMSE (均方根误差)(Root Mean Square Error)
对方差开平方就是均方差,而均方差又称标准差,即:
与MSE一样对于异常点也是非常敏感。
3,MAE (平均绝对误差)
4,MAPE(平均绝对百分比)
MAPE不仅仅考虑预测值与真实值的误差,还考虑了误差与真实值之间的比例,在某些场景下,比如房价从0.5w到5w之间,将0.5预测成1.0与将5.0预测成4.5,实际上预测差距是非常大的,如果用RMSE的话两者效果相同,而用MAPE的后者要比前者好一些。
二,分类问题
1,0-1损失函数
或者是:
2,logLoss (对数损失函数,也叫binary cross entropy,二元交叉熵损失,LR)
log loss function表达式:
其中是个样本的真实标签,是第i个样本预测为正样本的概率。
3,Cross-Entropy损失函数
交叉熵刻画的是两个概率分部之间的距离,或可以说其刻画的是通过概率分布q来表达概率分布p的困难程度,p代表正确答案,q代表的是预测值,交叉熵越小,两个概率的分布越接近。
交叉熵损失函数通常使用在softmax上,而softmax通常使用在神经网络的末端,使其预测结果以概率的形式输出。
交叉熵损失函数的数学表达如下所示:
m为样本数量,n为样本所属的不同类别个数。表示样本i所属类别j,表示预测样本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的数学表达如下:
5,指数损失函数(exp-loss)
应用于AdaBoost。
指数损失(exp-loss)函数的标准形式为:
在Adaboost算法学习的过程中,经过m轮迭代之后,可以得到 :
在给定n个样本的情况下,Adaboost的损失函数为: