机器学习通常分为回归和分类两大类,前者常用均方差(MSE),后者常用交叉熵(CE)。前人这么做,一定是有他的道理,我们这里从几个角度分析一下。
分布角度
MSE
作为损失函数其实是有一个先验假设:误差服从标准高斯分布。这里简单推导下MSE
损失函数的由来:
无非就是三步:假设分布、极大似然估计、推导出损失函数。
假设预测值和实际值之间的误差ϵ服从标准高斯分布, 即ϵ∼N(0,1) , 又因为ϵ=f(X)−Y , 所以Y∼N(f(X),1)
Y的概率密度函数为p(Y)=2π1exp[−2(f(X)−Y)2]。
再用极大似然估计法:logL=∑i=1logp(Yi)=−2nlog(2π)−21∑i=1[Yi−f(Xi)]2
这个时候就推导出了MSE
损失函数
这里稍微复习下
- 如果是Lasso损失函数,就是等价于参数服从拉普拉斯分布的最大后验估计;
- 如果是岭回归的损失函数,就是等价于参数服从高斯分布的最大后验估计;
而CE
是假设数据服从伯努利分布/多项式分布
伯努利分布即做N次试验,每次试验成功概率为p, 失败概率为1−p , 那么成功次数的期望为N⋅p, 方差为 N⋅p⋅(1−p) , 概率密度函数为f(x)=px(1−p)1−x
那么在二分类任务当中,给定数据集D, 那么对于每个样本Di, 其概率密度函数都是px(1−p)1−x, 我们依然是用既然似然估计,就是可以得到logL=∑i=1log[pxi(1−p)1−xi]=∑i=1xilogp+(1−xi)log(1−p) 。
这个时候就推导除了CE
损失函数在二分类的情况。
所以,从先验的角度上,分类任务中,假设数据服从伯努利分布是更加符合实际的,因此分类任务中常常使用CE
, 而回归任务中常常使用MSE
这里再讨论一下,mse
是假设数据分布为高斯分布。但是现实中,长尾分布也非常常见,如果直接用MSE就效果不好。所以有时候做数据EDA的时候,发现数据不符合高斯分布才需要修正,比如采用对数变换、boxcox变换。
优化角度
在优化的角度上,如果分类问题使用MSE
作为损失函数,这个时候是非凸优化,难以求出最优解。
L=N1i=1∑[f(xi)−yi]2=N1∑i=1[yi−σ(z)]=N1∑i=1[yi−1+exp(−wx)1]
这是一个非凸函数。