首页 > Python机器学习 阅读数:41

机器学习中常见的损失函数

我们知道,在机器学习中的监督学习算法里,在假设空间中构造一个决策函数 f,对于给定的输入 X,相应的输出  与原先的预期值 Y 可能不一致。于是,我们需要定义一个损失函数(Loss Function)来度量这二者之间的“落差”。这个损失函数通常记作 L(Y, )=L(Y,f(X )),为了方便起见,这个函数的值为非负数。

常见的损失函数有如下四类。

1) 0-1 损失函数(0-1 Loss Function):


2) 绝对损失函数(Absolute Loss Function):

L(Y, f(X)) =|Y - f(X)|


3) 平方损失函数(Quadratic Loss Function):

L(Y, f(X)) =(Y - f(X))2


4) 对数损失函数(logarithmic Loss Function):

L(Y, P(Y|X)) = -log P(Y|X) 


损失函数值越小,说明实际输出 和预期输出Y之间的差值就越小,也就说明我们构建的模型越好。第一类损失函数很容易解释,就是表明目标达到了没有。达到了,输出为0(没有落差);没有达到,输出为1。

第二类损失函数就更具体了。拿减肥的例子来说,当前体重秤上的读数和减肥目标的差值有可能为正,也有可能为负。比如,假设我们的减肥目标是70公斤,但一不小心减肥过猛,减到60公斤,这时差值就是“-10”公斤,为了避免这样的正负值干扰,干脆就取绝对值好了。

第三类损失函数类似于第二类,同样起到避免正负值干扰的目的。但是为了计算方便(主要是为了求导),有时还会在前面加一个系数“1/2”(如以下公式所示),这样一求导,指数上的“2”和系数的“1/2” 相乘就可以得到“1”了。

(Y, f(X)) = 1/2(Y - f(X))2


当然,为了计算方便,还可以使用对数损失函数,即第四类损失函数。这样做的目的在于,可以使用最大似然估计来求极值(将难以计算的乘除法变成相对容易计算的加减法)。总而言之一句话,怎么求解方便,就怎么来!

或许你会问,这些损失函数到底有什么用呢?当然有用了!因为我们靠这些损失函数的大小来“监督”机器学习算法,使之朝着预期目标前进,因此,它是监督学习的核心标志之一。