原文链接:GitHub - massquantity/Loss-Functions
常见回归和分类损失函数比较
损失函数的定义为,衡量真实值和预测值之间不一致的程度,一般越小越好。为了便于不同损失函数的比较,常将其表示为单变量的函数,在回归问题中这个变量为,在分类问题中则为。下面分别进行讨论。
回归问题的损失函数
回归问题中和皆为实数,因此用残差 来度量二者的不一致程度。残差(的绝对值)越大,则损失函数越大,学习出来的模型效果就越差(这里不考虑正则化问题)。
常见的回归损失函数有:
- 平方损失 (squared loss) :
- 绝对值 (absolute loss) :
-
Huber损失 (huber loss) :
其中最常用的是平方损失,然而其缺点是对于异常点会施以较大的惩罚,因而不够robust。如果有较多异常点,则绝对值损失表现较好,但绝对值损失的缺点是在处不连续可导,因而不容易优化。
Huber损失是对二者的综合,当小于一个事先指定的值时,变为平方损失,大于时,则变成类似于绝对值损失,因此也是比较robust的损失函数。三者的图形比较如下:
[站外图片上传中...(image-bbe46-1619331359945)]
分类问题的损失函数
对于二分类问题,,损失函数常表示为关于的单调递减形式。如下图:
被称为margin,其作用类似于回归问题中的残差。
二分类问题中的分类规则通常+为
可以看到如果,则样本分类正确, 则分类错误,而相应的分类决策边界即为。所以最小化损失函数也可以看作是最大化margin的过程,任何合格的分类损失函数都应该对margin<0的样本施以较大的惩罚。
1、 0-1损失 (zero-one loss)
0-1损失对每个错分类点都施以相同的惩罚,这样那些“错的离谱“ (即 )的点并不会收到大的关注,这在直觉上不是很合适。另外0-1损失不连续、非凸,优化困难,因而常使用其他的代理损失函数进行优化。
2、Logistic loss
logistic Loss为Logistic Regression中使用的损失函数,下面做一下简单证明:
Logistic Regression中使用了Sigmoid函数表示预测概率:
而
因此利用,可写为,此为一个概率模型,利用极大似然的思想:
$$max(\prod P(y|x)) = max(\prod \frac{1}{1+e^{-yf(x)}})$$
两边取对数,又因为是求损失函数,则将极大转为极小:
这样就得到了logistic loss。
如果定义,则极大似然法可写为:
取对数并转为极小得:
上式被称为交叉熵损失 (cross entropy loss),可以看到在二分类问题中logistic loss和交叉熵损失是等价的,二者区别只是标签y的定义不同。
。。。。。。。。