在学习logistic regression(逻辑斯蒂回归)的时候,我们用类似交叉熵的损失函数Log误差: L ( y − y ^ ) = − ∑ i = 1 n y i log ( y ^ i ) L(y-\hat{y})=-\sum_{i=1}^{n}y_i\log(\hat{y}_i) L(y−y^)=−∑i=1nyilog(y^i),而不是在线性回归里常用的平均平方误差(MSE): L ( y − y ^ ) = ∑ i = 1 n ( y i − y ^ i ) 2 L(y-\hat{y})=\sum_{i=1}^{n}(y_i-\hat{y}_i)^2 L(y−y^)=∑i=1n(yi−y^i)2.
我最近找到一篇博文讲得不错,这两天翻译一下,顺便求一波thesis高分😏
Why not Mean Squared Error(MSE) as a loss function for Logistic Regression? – Rajesh Shreedhar Bhat, Souradip Chakraborty
在这篇博文中,我们主要对比在逻辑斯蒂回归中的log loss(对数损失)和mean squared error(平均平方误差),并且根据经验和数学分析证明为什么我们推荐使用“log loss”
分类问题和损失函数基础
两种误差的数学公式如下图:
Log loss:
Mean Squared Loss:
在上面两公式中的字母含义如下:
y
y
y: actual label(真实标签)
y
^
\hat{y}
y^: predicted value(预测标签)
n
n
n: number of classes(类别数)
当我们有一个两个类的数据集时( n = 2 n=2 n=2),我们用“0”和“1”来表示这两个类。
下面我们展示当预测标签和真实标签出现错误的时候,为什么log-loss比MSE更优
例如:
- 在数据集中的样例的真实标签是“1”
- 在用sigmoid函数之后,预测值给的标签是“0”
当以MSE为损失值:
(
1
−
0
)
2
=
1
(1 - 0)^2 = 1
(1−0)2=1
当以log loss为损失值:
在计算之前,我们先来看一下
log
(
x
)
\log(x)
log(x)的函数图像
可以看出当 x x x趋近于0时, log ( x ) \log(x) log(x)倾向于负无穷。
因此。loss value损失值为:
−
(
1
×
log
(
0
)
+
0
×
log
(
1
)
)
→
i
n
f
i
n
i
t
y
-(1\times \log(0) + 0\times \log(1)) \rightarrow infinity
−(1×log(0)+0×log(1))→infinity
可以看出,计算MSE的损失值大大小于log loss.因此可以得到结论:计算MSE不会重重地惩罚错误分类,哪怕是完全分错!
然而,当预测准了的时候,我们再计算一下损失值如下:
真实标签:“1”
预测值:“1”
MSE:
(
1
−
1
)
2
=
0
(1-1)^2 = 0
(1−1)2=0
Log loss:
−
(
1
×
log
(
1
)
+
0
×
log
(
0
)
)
=
0
-(1\times \log(1) + 0\times \log(0))=0
−(1×log(1)+0×log(0))=0
至此,我们已经展示了MSE对于二分类问题不是一个好的选择。相似的结论可以扩展到(one-hot)1-热点编码的多分类问题。
MSE和在Logistic回归的非凸问题
在分类问题中,我们通常会利用梯度下降手段(例如Newton Raphson,梯度下降等等)通过最小化损失函数去寻找系数的最优解。因此如果损失函数是非凸的,我们无法保证总能找到全局最小值,相对地,我们会很可能陷入局部最小值。
在证明为什么MSE在logistic 回归中不是一个凸函数之前,让我们来看一下函数为凸的条件是什么。
在 n − n- n−维区间上的一个实值函数是凸的:任意两点的连线都等于或者大于函数图像。(如下图)
如果
f
f
f是二次可微的而且定义域是实数轴,我们有如下结论:
f
f
f是凸的,当且仅当
f
′
′
(
x
)
≥
0
f''(x) \geq0
f′′(x)≥0.也就是损失函数的二重微分大于等于0,因此是凸的,关于凸函数可以参考这只影片
现在我们将数学地证明对于逻辑斯蒂回归的MSE损失是非凸的
简单来讲,假设对于一个给定数据集只有一个特征" x x x"和"二分类标签",下图中 f ( x ) = M S E f(x)= MSE f(x)=MSE并且 y ^ \hat{y} y^是在用了sigmoid函数之后的预测值标签
从上式中,因为 y ^ ∈ [ 0 , 1 ] \hat{y}\in[0,1] y^∈[0,1],所以 y ^ × ( 1 − y ^ ) \hat{y}\times(1-\hat{y}) y^×(1−y^)这个函数永远在 [ 0 , 1 4 ] [0,\frac{1}{4}] [0,41]。我们要证明 H ( y ^ ) H(\hat{y}) H(y^)在 [ 0 , 1 ] [0,1] [0,1]上是否一直为正,所以不需要考虑这部分。这导致我们必须检查对于任意的" x x x", H ( y ^ ) H(\hat{y}) H(y^)是否是正的,以检查其是否是凸函数。
我们已知 y y y可以取的值是0或者1.因此我们对于这两种情况分别检查凸函数的条件
在上述情况,也就是当 y = 0 y=0 y=0时候。当 y ^ ∈ [ 0 , 2 / 3 ] \hat{y}\in [0,2/3] y^∈[0,2/3],函数 H ( y ^ ) ≥ 0 H(\hat{y})\geq0 H(y^)≥0,并且当 y ^ ∈ [ 1 / 3 , 1 ] \hat{y}\in [1/3,1] y^∈[1/3,1], H ( y ^ ) ≤ 0 H(\hat{y})\leq0 H(y^)≤0。这代表函数是非凸的
y = 1 y=1 y=1。当 y ^ ∈ [ 0 , 1 / 3 ] \hat{y}\in [0,1/3] y^∈[0,1/3],函数 H ( y ^ ) ≤ 0 H(\hat{y})\leq0 H(y^)≤0,并且当 y ^ ∈ [ 1 / 3 , 1 ] \hat{y}\in [1/3,1] y^∈[1/3,1], H ( y ^ ) ≥ 0 H(\hat{y})\geq0 H(y^)≥0。这同样代表函数是非凸的
因此,基于以上分析我们已经得到在logistic回归中的MSE是非凸的,因此我们不推荐使用之。
log loss在Logistic回归的凸性
下面来到我们的最终问题了:那么“log loss”函数是凸的吗?我们会数学地展示对于logistic回归log损失函数是凸的
其中 θ \theta θ是自变量 x x x的系数
从上面公式的最后一行( l o g log log损失函数的二重微分)可以看出:平方项始终是非负的,并且我们知道 e x e^x ex的值域是 ( 0 , + ∞ ) (0,+\infty) (0,+∞)。因此最终项始终是非负的,从而可以得到我们的最终结论:
l o g l o s s log\ loss log loss函数在所有情况下都是凸函数!!