为什么不用平方误差(MSE)作为Logistic回归的损失函数?
Posted 拉风小宇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么不用平方误差(MSE)作为Logistic回归的损失函数?相关的知识,希望对你有一定的参考价值。
在学习logistic regression(逻辑斯蒂回归)的时候,我们用类似交叉熵的损失函数Log误差: L ( y − y ^ ) = − ∑ i = 1 n y i log ( y ^ i ) L(y-\\haty)=-\\sum_i=1^ny_i\\log(\\haty_i) L(y−y^)=−∑i=1nyilog(y^i),而不是在线性回归里常用的平均平方误差(MSE): L ( y − y ^ ) = ∑ i = 1 n ( y i − y ^ i ) 2 L(y-\\haty)=\\sum_i=1^n(y_i-\\haty_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
^
\\haty
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 ^ \\haty y^是在用了sigmoid函数之后的预测值标签
从上式中, y ^ × ( 1 − y ^ ) \\haty\\times(1-\\haty) y^×(1−y^)在 [ 0 , 1 ] [0,1] [0,1].因此我们必须检查对于任意的" x x x", H ( y ^ ) H(\\haty) H(y^)是否是正的,以检查其是否是凸函数。
我们已知 y y y可以取的值是0或者1.因此我们对于这两种情况分别检查凸函数的条件
在上述情况,也就是当 y = 0 y=0 y=0时候。当 y ^ ∈ [ 0 , 2 / 3 ] \\haty\\in [0,2/3] y^∈[0,2/3],函数 H ( y ^ ) ≥ 0 H(\\haty)\\geq0 H(y^)≥0,并且当 y ^ ∈ [ 1 / 3 , 1 ] \\haty\\in [1/3,1] y^∈[1/3,1], H ( y ^ ) ≤ 0 H(\\haty)\\leq0 H(y^)≤0。这代表函数是非凸的
y = 1 y=1 y=1。当 y ^ ∈ [ 0 , 1 / 3 ] \\haty\\in [0,1/3] y^∈[0,1/3],函数 H ( y ^ ) ≤ 0 H(\\haty)\\leq0 H(y^)≤0,并且当 y ^ ∈ [ 1 / 3 , 1 ] \\haty\\in [1/3,1] y^∈[1/3,1], H ( y ^ ) ≥ 0 H(\\haty)\\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函数在所有情况下都是凸函数!!
以上是关于为什么不用平方误差(MSE)作为Logistic回归的损失函数?的主要内容,如果未能解决你的问题,请参考以下文章
均方误差(MSE)和均方根误差(RMSE)和平均绝对误差(MAE)
回归任务中的评价指标之MSE,RMSE,MAE,R-Squared,MAPE
数学基础--MATLAB 数据拟合 SSE,MSE,RMSE,R-square