逻辑回归是应用非常广泛的一个分类机器学习算法,有关LR的算法推导以及计算过程有很多资料可以参考,在这里我们就不再赘述。这里我们主要关心两个问题,也是在面试的过程经常会被问到的,下面我们就分别介绍。
LR为什么使用sigmoid函数
Logistic回归虽然名字里带“回归”,但是它实际上是一种分类方法,主要用于两分类问题(即输出只有两种,分别代表两个类别)。假设训练样本的类别为
C1
和
C2
,样本中属于
C1
和
C2
的样本数分别为
N1
和
N2
个。这里我们通过使用贝叶斯概率推导出LR中为什么使用的是Sigmoid函数。样本属于
C1
的概率如下:
P(C1|x)=P(x|C1)P(C1)P(x|C1)P(C1)+P(x|C2)P(C2)=11+P(x|C2)P(C2)P(x|C1)P(C1)=11+exp(−z)=σ(z)
z=lnP(x|C1)P(C1)P(x|C2)P(C2)z=lnP(x|C1)P(x|C2)+lnP(C1)P(C2)
lnP(C1)P(C2)=lnN1N1+N2N2N1+N_2=lnN1N2
接下来是很关键的一步,我们假设训练集中的样本服从高斯分布。即类别为
C1
的样本服从均值为
μ1
方差为
Σ1
的高斯分布,类别为
C2
的样本服从均值为
μ2
方差为
Σ2
的高斯分布。
P(x|C1)=1(2π)D/21|Σ1|1/2exp{−12(x−μ1)T(Σ1)−1(x−μ1)}
P(x|C2)=1(2π)D/21|Σ2|1/2exp{−12(x−μ2)T(Σ2)−1(x−μ2)}
有了上面的假设,我们就可以继续计算
z
了
lnP(x|C1)P(x|C2)=ln1(2π)D/21|Σ1|1/2exp{−12(x−μ1)T(Σ1)−1(x−μ1)}1(2π)D/21|Σ2|1/2exp{−12(x−μ2)T(Σ2)−1(x−μ2)}=ln|Σ2|1/2|Σ1|1/2−12[(x−μ1)T(Σ1)−1(x−μ1)−(x−μ2)T(Σ2)−1(x−μ2)]
所以
z=ln|Σ2|1/2|Σ1|1/2−12xT(Σ1)−1x+(μ1)T(Σ1)−1x−12(μ1)T(Σ1)−1μ1+12xT(Σ2)−1x−(μ2)T(Σ2)−1x+−12(μ2)T(Σ2)−1μ2+lnN1N2
P(C1|x)=σ(z)
此时
z
仍然很复杂,我们进一步假设两类样本服从方差一样,均值不一样的高斯分布,即
Σ1=Σ2=Σ
,此时,
z=(μ1−μ2)TΣ−1x−12(μ1)TΣ−1μ1+12(μ2)TΣ−1μ2+lnN1N2
到这里,是不是就很熟悉了,
w=(μ1−μ2)TΣ−1
,
b=−12(μ1)TΣ−1μ1+12(μ2)TΣ−1μ2+lnN1N2
P(C1|x)=σ(w⋅x+b)
w
和
b
就是LR模型要学习的参数,也是假设样本的高斯分布的参数的组合。如果我们假设样本服从的是其他的分布,可能得到的就不是Sigmoid函数了,以上就是LR中为什么使用的是Sigmoid函数。
LR中损失函数为什么不能使用平方损失函数
LR的损失函数是交叉熵损失函数,使用梯度下降的方法去训练模型的参数。在回归问题中,我们常使用平方损失作为损失函数,然后使用最小二乘计算。那么问题来了,在LR中能否使用平方损失作为损失函数呢?答案是否定的,理由如下–假设我们使用平方损失作为LR的损失函数,那么
L(f)
定义如下:
fw,b(x)=σ(∑iwixi+b)
L(f)=12∑n(fw,b(xn)−yn)2
那么
∂L∂wi=∂(fw,b(x)−y)2∂wi=2(fw,b(x)−y)∂fw,b(x)∂z∂z∂wi=2(fw,b(x)−y)fw,b(x)(1−fw,b(x))xi
当样本的label
y=0
时,如果模型预测为
fw,b(x)=1
,这是模型离正确的预测很远,但是
∂L∂wi=0
,此时利用梯度更新参数时,给我们的假象却是我们已经达到了最优解,而实际上我们还远远没有达到最优解!这就说明在LR中,我们是不能使用平方损失作为损失函数的!