监督学习问题是在假设空间中选取模型作为决策函数,对于给定的输入X,由f(x)给出对应的输出Y,这个输出的预测值可能与真实值一致或不一致,可以用损失函数(loss function) 或 代价函数(cost function) 来度量预测错误的程度。
- 0-1损失函数:
f(x)={1,Y≠f(X)0,Y=f(X)f(x)={1,Y≠f(X)0,Y=f(X)
- 平方损失函数:
L(Y,f(X))=(Y−f(X))2L(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))=|Y−f(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))=−logP(Y|X)
- 指数损失(exponential loss):
lexp(z)=exp(−z)lexp(z)=exp(−z)
- 对率损失(logistic loss):
llog(z)=log(1+exp(−z))llog(z)=log(1+exp(−z))
- hinge损失:
lhinge(z)=max(0,1−z)lhinge(z)=max(0,1−z)
经验风险最小化:当模型是条件概率分布,损失函数是对数损失函数时,经验风险最小化等价于极大似然估计(MLE)。
结构风险最小化:防止过拟合提出的策略,在经验风险熵加上表示模型复杂度的正则化项或罚项。贝叶斯估计中的最大后验概率估计(MAP)就是结构风险最小化的一个例子。
《统计学习方法》 P7
《机器学习》 P130
《深度学习》