详细整理几种常见的损失函数|机器学习
机器学习|常见的损失函数公众号:数据山谷在学习过程中我们经常会接触到损失函数、代价函数、目标函数三个词语,本文让我们来总结一下机器学习中常见的损失函数和代价函数。概念首先让我们来了解一下三种损失函数的概念。损失函数(Loss Function )是定义在单个样本上的,算的是一个样本的误差。代价函数(Cost Function )是定义在整个训练集上的,是所有样本误差的平均,也就是损失函数的平均。目
机器学习|常见的损失函数
公众号:数据山谷
在学习过程中我们经常会接触到损失函数、代价函数、目标函数三个词语,本文让我们来总结一下机器学习中常见的损失函数和代价函数。
概念
首先让我们来了解一下三种损失函数的概念。
损失函数(Loss Function )是定义在单个样本上的,算的是一个样本的误差。
代价函数(Cost Function )是定义在整个训练集上的,是所有样本误差的平均,也就是损失函数的平均。
目标函数(Object Function)定义为:最终需要优化的函数。等于经验风险+结构风险(也就是代价函数 + 正则化项)。
关于目标函数和代价函数的区别还有一种通俗的区别:
目标函数是最大化或者最小化,而代价函数是最小化。
常见的损失函数
0-1损失函数(0-1 loss function)
函数表达式:
L ( y , f ( x ) ) = { 1 , y ≠ f ( x ) 0 , y = f ( x ) L(y,f(x))=\left\{\begin{matrix} 1, y\neq f(x) \\ 0, y=f(x) \end{matrix}\right. L(y,f(x))={1,y=f(x)0,y=f(x)
函数说明:
- 关于0-1损失函数,也就是说当我们预测错误时,损失函数的值为1,预测正确时,损失函数的值为0,该函数无需考虑预测值和真实值的误差程度,只要预测错误就会输出1。
函数特点:
- 0-1损失函数直接对应分类判断错误的个数,但是它是一个非凸函数,不太适用。
- 感知机通常会使用该损失函数,在使用的时候我们也可以通过设置一个阈值的方式来放宽它的条件,改变成下面的形式:
L ( y , f ( x ) ) = { 1 , ∣ y − f ( x ) ∣ ⩾ T 0 , ∣ y − f ( x ) ∣ < T L(y,f(x))=\left\{\begin{matrix} 1, |y-f(x)|\geqslant T \\ 0, |y-f(x)| <T \end{matrix}\right. L(y,f(x))={1,∣y−f(x)∣⩾T0,∣y−f(x)∣<T
平方损失函数(quadratic loss function)
函数表达式:
L ( y , f ( x ) ) = ( y − f ( x ) ) 2 L(y,f(x))=(y-f(x))^2 L(y,f(x))=(y−f(x))2
函数说明:
- 平方损失函数指的是预测值与实际值差的平方。
函数特点:
- 平方损失函数经常应用在回归问题上。
绝对值损失函数(absolute loss function)
函数表达式:
L ( y , f ( x ) ) = ∣ y − f ( x ) ∣ L(y,f(x))=|y-f(x)| L(y,f(x))=∣y−f(x)∣
函数说明:
- 该损失函数本质上和平方损失函数没有什么差别,只不过此时取的是绝对值而不是平方,差距不会因为平方而被放大。
函数特点:
- 绝对值损失函数经常用在回归问题上。
对数损失函数(logarithmic loss function)
函数表达式:
L ( y , p ( y ∣ x ) ) = − log p ( y ∣ x ) L(y,p(y|x))=-\log p(y|x) L(y,p(y∣x))=−logp(y∣x)
函数说明:
- 对数损失函数用到了极大似然估计的思想,我们对p(y|x)通俗的解释就是:在当前模型的基础上,对于样本x它的预测值为y,也就是我们预测正确的概率,但是我们在概率之间的同时满足需要使用乘法,考虑到计算方便,我们取对数将其转化为加法,同时由于是损失函数,所以预测正确的概率越高,其损失值应该是越小,因此再加个负号取反。
函数特点:
- log损失函数能够很好的表示概率分布,适用于很多的分类场景中,如果需要知道结果属于每个类别的置信度log损失函数非常适合。
- log损失函数对噪声很敏感。
- 逻辑回归的损失函数就是log损失函数。
合页损失函数(Hinge loss function)
函数表达式:
L ( w , b ) = m a x { 0 , 1 − y f ( x ) } L(w,b)=max\{0,1-yf(x)\} L(w,b)=max{0,1−yf(x)}
y = ± 1 , f ( x ) = w x + b y=\pm1,f(x)=wx+b y=±1,f(x)=wx+b
函数说明:
- hinge损失函数一般用作分类算法的损失函数。
函数特点:
- SVM使用的就是hinge损失函数,hinge损失函数表示如果被分类正确,损失为0,否则损失就为1-yf(x)。
- 一般的f(x)是预测值,在[-1,1]之间,y是目标值(-1或1)。我们并不鼓励|f(x)|>1,也就是不鼓励分类器过度的自信,让某个正确分类的样本距离分割线超过1并不会有任何奖励,从而使分类器可以更加专注于整体的误差。
- Hinge算是函数对异常点、噪声并不敏感,但是相对于log损失函数来说它没有很好的概率解释。
指数损失函数(exponential loss)
函数表达式:
L ( y ∣ f ( x ) ) = exp ( − y f ( x ) ) L(y|f(x))=\exp(-yf(x)) L(y∣f(x))=exp(−yf(x))
函数说明:
- 一种很少接触并使用的损失函数。
函数特点:
- AdaBoost算法使用的就是指数损失函数,该损失函数对噪声、离群点非常敏感。
常见的代价函数
均方误差(Mean Squared Error)
函数表达式:
M S E = 1 N ∑ i = 1 N ( y i − f ( x i ) ) 2 MSE=\frac{1}{N}\sum_{i=1}^N(y^i-f(x^i))^2 MSE=N1∑i=1N(yi−f(xi))2
函数说明:
- 均方误差是指预测值与真实值之差平方的期望值;MSE可以评价数据的变化程度,MSE的值越小,说明预测模型描述实验数据具有更好的精确度。
函数特点:
- 均方误差通常用来做回归问题的代价函数。
均方根误差(Root Mean Squared Error)
函数表达式:
R M S E = 1 N ∑ i = 1 N ( y i − f ( x i ) ) 2 RMSE=\sqrt{\frac{1}{N}\sum_{i=1}^N(y^i-f(x^i))^2} RMSE=N1∑i=1N(yi−f(xi))2
函数说明:
- 均方根误差是均方误差的算术平方根,能够直观观测预测值与实际值的离散程度。
函数特点:
- 通常用来作为回归算法的性能指标
平均绝对误差(Mean Absolute Error)
函数表达式:
M A E = 1 N ∑ i = 1 N ∣ y i − f ( x i ) ∣ MAE=\frac{1}{N}\sum_{i=1}^{N}|y^i-f(x^i)| MAE=N1∑i=1N∣yi−f(xi)∣
函数说明:
- 平均绝对误差是绝对误差的平均值 ,平均绝对误差能更好地反映预测值误差的实际情况。
函数特点:
- 通常用来作为回归算法的性能指标。
交叉熵代价函数(Cross Entry)
函数表达式:
H ( p , q ) = − ∑ i = 1 N p ( x i ) log q ( x − i ) H(p,q)=-\sum_{i=1}^Np(x^i)\log q(x^{-i}) H(p,q)=−∑i=1Np(xi)logq(x−i)
函数说明:
- 交叉熵是用来评估当前训练得到的概率分布与真实分布的差异情况,减少交叉熵损失就是在提高模型的预测准确率。其中p(x)指的是真实分布的概率,q(x)是模型通过数据计算出来的概率估计。
函数特点:
- 通常用做分类问题的代价函数。
举例说明:
逻辑回归(二分类)的损失函数:
L o s s = − 1 N ∑ i = 1 N ( y ( i ) l o g ( h ( θ ) ( x ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − h ( θ ) ( x ( i ) ) ) ) Loss = -\frac{1}{N}\sum_{i=1}^{N}(y^{(i)}log (h_{(\theta) }(x^{(i)}))+(1-y^{(i)})log(1- h_{(\theta) }(x^{(i)}))) Loss=−N1∑i=1N(y(i)log(h(θ)(x(i)))+(1−y(i))log(1−h(θ)(x(i))))
这里的h(x)可以是sigmoid函数,也可以是深度学习中的其他激活函数。
更多推荐
所有评论(0)