机器学习中的损失函数

监督学习问题是在假设空间中选取模型作为决策函数,对于给定的输入X,由f(x)给出对应的输出Y,这个输出的预测值可能与真实值一致或不一致,可以用损失函数(loss function)代价函数(cost function) 来度量预测错误的程度。

  • 0-1损失函数:

f(x)={1,Yf(X)0,Y=f(X) f ( x ) = { 1 , Y ≠ f ( X ) 0 , Y = f ( X )

  • 平方损失函数:

L(Y,f(X))=(Yf(X))2 L ( Y , f ( X ) ) = ( Y − f ( X ) ) 2

def mse(true, pred):
    return np.sum(((true – pred) ** 2))


from sklearn.metrics import mean_squared_error
  • 绝对损失函数:

L(Y,f(X))=|Yf(X)| L ( Y , f ( X ) ) = | Y − f ( X ) |

def mae(true, pred):
    return np.sum(np.abs(true – pred))

from sklearn.metrics import mean_absolute_error

MSE vs MAE

  • 由于MSE对误差(e)进行平方操作(y - y_predicted = e),如果e> 1,误差的值会增加很多。如果我们的数据中有一个离群点,e的值将会很高,将会远远大于|e|。这将使得和以MAE为损失的模型相比,以MSE为损失的模型会赋予更高的权重给离群点
  • MAE损失适用于训练数据被离群点损坏的时候(即,在训练数据而非测试数据中,我们错误地获得了不切实际的过大正值或负值)

如果离群点是会影响业务、而且是应该被检测到的异常值,那么我们应该使用MSE。另一方面,如果我们认为离群点仅仅代表数据损坏,那么我们应该选择MAE作为损失。

  • 对数损失函数(对数似然损失函数):

L(Y,P(Y|X))=logP(Y|X) L ( Y , P ( Y | X ) ) = − l o g P ( Y | X )

  • 指数损失(exponential loss):

lexp(z)=exp(z) l e x p ( z ) = e x p ( − z )

  • 对率损失(logistic loss):

llog(z)=log(1+exp(z)) l l o g ( z ) = l o g ( 1 + e x p ( − z ) )

  • hinge损失:

lhinge(z)=max(0,1z) l h i n g e ( z ) = m a x ( 0 , 1 − z )

经验风险最小化:当模型是条件概率分布,损失函数是对数损失函数时,经验风险最小化等价于极大似然估计(MLE)。

结构风险最小化:防止过拟合提出的策略,在经验风险熵加上表示模型复杂度的正则化项或罚项。贝叶斯估计中的最大后验概率估计(MAP)就是结构风险最小化的一个例子。

《统计学习方法》 P7

《机器学习》 P130

《深度学习》

你可能感兴趣的:(机器学习)