开公众号啦,分享读书心得,欢迎一起交流成长。
损失函数(Loss Function)用来估量模型的预测值
与真实值
的不一致程度。这里做一个简单梳理,以备忘。
常见的回归问题损失函数有绝对值损失、平方损失、Huber损失。
又叫做L1损失。
MAE一个问题是在
处不可导,优化比较困难。
又称为L2损失。
MSE一个问题是对异常点敏感,由于平方的存在,会放大对异常点的关注。
相当于是L1和L2损失的一个结合。
Huber损失是对上述两者的综合,当
小于指定的值
时,变为平方损失,大于
时,则变成类似于绝对值损失。即避免了在
在0处不可导问题,也解决了其值过大对异常值敏感的问题。值得注意的是,该函数在
处连续。
三种Loss随残差
的大致走势如下图。
algo-huber-loss
一般来说,二分类机器学习模型输出有两个部分:线性输出
和非线性输出
。其中,线性输出score一般是
非线性输出常见的如sigmoid:
对应label
一般两种表示方式,
或
表示正负类。其中用
表示正类有个好处,就是从
可以看出是否是误分类。
,则预测正确
,则预测错误
这样,
和回归模型中残差
非常类似,以
为自变量作图,方便理解。
0-1 Loss很直观,如果误分类则误差为1,否则为0。
有两个明显的问题
所以实际模型中0-1 Loss用的很少,后续介绍的误差,多数可看做0-1 Loss的一个上界。
Cross Entropy Loss是非常重要的损失函数,也是应用最多的分类损失函数之一。根据label的表示方式,一般有两种常见形式。
如果label表示为
,形式如下:
简单看其来由。模型输出预测类别的概率
以上可整合到一个公式中
根据极大似然估计原理,我们希望p越大越好,为了方便计算,同时引入负对数(不影响单调性)。
其中
代入可得出
$$ L(y, \hat y) = \begin{cases}
当y=1时,s越大loss越小;当y=0时,s越小loss越小,make sense。
如果label表示为
,形式如下:
其实上述式子完全等价,只不过将y=1或y=0两种情况整合到一起。ys的符号反映预测准确性,其数值大小反映预测置信度。
交叉熵损失在实数域内,Loss近似线性变化。尤其是当 ys << 0 的时候,Loss 更近似线性。这样,模型受异常点的干扰就较小。 而且交叉熵 Loss 连续可导,便于求导计算,应用比较广泛。
The hinge loss is used for maximum-margin classification, most notably for support vector machines (SVMs).
Hinge Loss名字很象形,其形状类似合页。一般用于SVM中,体现SVM距离最大化思想。当Loss大于0时,是线性函数,可以用梯度优化算法。此外
损失皆为0,可以带来稀疏解,使得SVM仅通过少量支持向量就能确定最终超平面。
algo-hinge-loss
指数损失,多用于AdaBoost中,其它算法中用的较少。
Huber Loss整合MAE和MSE的优点,稍作改进,同样可用于分类问题,称为Modified Huber Loss。
该函数分三段
线性
二次
常数0
对比不同损失函数随ys的变化趋势。有一点值得注意,就是各个损失函数在
很小时,损失一般不超过线性(指数损失除外),否则对异常值太敏感。
algo-loss-function-1
algo-loss-function-2