二元分类为什么不能用MSE做为损失函数?

  统计/机器学习 监督式学习 损失函数    浏览次数:26612        分享

如果预测值为概率,真实值是0、1标签,那么为什么不能用MSE作为训练二元分类的损失函数呢?


 

剪叔   2018-03-05 13:27



   8个回答 
18

如果要具体地说的话,那是因为用MSE作为二元分类的损失函数会有梯度消失的问题。

给你推导一番:

$loss=\sum^{N}_{i}(y_{i}-\sigma(w^{T}x_{i}))^{2}$    ,其中$\sigma(w^{T}x_{i})=\frac{1}{1+exp(-w^{T}x_{i})}$

$\frac{\partial loss}{\partial w}=\sum^{N}_{i}(-2(y_{i}-\sigma(w^{T}x_{i}))\sigma(w^{T}x_{i})(1-\sigma(w^{T}x_{i}))x_{i})$

因为$\sigma(w^{T}x_{i})$的优化目标是接近$y_{i}$

所以$\sigma(w^{T}x_{i})$和$(1-\sigma(w^{T}x_{i}))$中的一个也会越来越接近0,也就是梯度消失。

而CrossEntropy的梯度是$\sum^{N}_{i}(\sigma(w^{T}x_{i})-y_{i})x_{i}$就没有这个问题。


关于CrossEntropy的梯度用SGD计算逻辑回归时的迭代公式是什么?

SofaSofa数据科学社区DS面试题库 DS面经

nobodyoo1   2018-07-30 16:03

对于正确分类的数据点,CE梯度有一项趋近0,MSE中有两项趋近于0,也就是MSE的梯度消失速度是CE的平方。我觉得梯度消失的问题也不会太严重,因为是正确分类的数据点的梯度才接近0,错误的数据点还是会有较大的梯度。 - Zealing   2018-07-31 00:34
11

不用MSE也是有理论依据的。理论依据来源于surrogate loss function

准确率(accuray)是不连续的,所以需要用连续的函数来代理

红色是Hing Loss,绿色是Log Loss,而浅蓝色是MSE。明显可以看出浅蓝色不是好的代理,所以优化MSE并不能优化模型的准确度。


SofaSofa数据科学社区DS面试题库 DS面经

染盘   2018-03-08 11:13

谢谢!长见识了! - 剪叔   2018-03-09 05:37
7

CrossEntropy比MSE的优点是:

1.在nobodyoo1中说的,MSE有梯度消失的问题。

2.在Andrew Ng的ppt中(参考),$MSE(y,\sigma(X^Tw))$是non-convex。有很多local minimum。

这个所谓的“Non-convex”应该指因为梯度消失问题,数据点是loss上的saddle point,如果learning rate不是足够大,有些saddle point会变成很难跳出的“local minimum”。

SofaSofa数据科学社区DS面试题库 DS面经

Zealing   2018-10-09 05:51

6

我的理解是MSE可以作为二元分类的损失函数,但是效果不好。

其实某种意义上也可以将二元分类看做回归问题,即将$y=1$,$y=0$看做实数域上的两个值就可以了,不要想着类别,最终应该也可以得到一个模型,但是效果很差(网络上有人试过,你也可以自己试一试)。

其实机器学习很多问题是很灵活的,对于很多问题,可以考虑不同的模型、损失函数等等,但是当然要具体问题具体分析选择适合他的喽

SofaSofa数据科学社区DS面试题库 DS面经

dzzxjl   2018-03-05 21:16

6

如果把平方损失函数用在逻辑回归上,那么就是下图这样的过程

最后两行的意思说,如果真是标签是1,你的预测值越接近接近0,梯度越小。这样的目标函数显然是无法进行二元分类的。

SofaSofa数据科学社区DS面试题库 DS面经

数据痴汉   2019-01-18 10:33

2

之所以用logloss来作为逻辑回归的损失函数,是因为它是通过最大似然估计得到的。

类似地,mse是线性回归的损失函数,也是通过最大似然估计得到的。


SofaSofa数据科学社区DS面试题库 DS面经

Marvin_THU   2018-07-30 14:01

1

感觉这就是个常识。均方根误差(MSE)只能用回归,二元分类一般用log loss。

我也不知道有没有什么科学道理。


SofaSofa数据科学社区DS面试题库 DS面经

Robin峰   2018-03-06 11:35

1

从梯度来讲,mse容易梯度消失

SofaSofa数据科学社区DS面试题库 DS面经

wqtang   2019-01-26 13:33



  相关讨论

Hamming Loss汉明损失的计算公式是什么?

怎么理解surrogate loss function代理损失函数?

logloss的取值范围是多少?一般好的分类器能达到多少?

关于损失函数h(x), J(x), cost的概念问题

python求logloss

向量梯度下降优化的最佳步长?

hinge loss的公式是什么?

focal loss是什么?

LR中若标签为+1和-1,损失函数如何推导,求大佬解答

逻辑回归的损失函数是怎么来的

  随便看看

sklearn训练classifier的时候报错Unknown label type

如何理解VC dimension?

单一变量下的异常检测该怎么做?

matplotlib画图怎么确保横坐标和纵坐标的单位长度一致?

pandas把一列日期转换为星期