逻辑回归也被称为对数几率回归,是一种分类算法,用条件概率分布的形式表示
P(Y|X)
,这里随机变量
X
取值为
n
维实数向量。
例如
x=(x1,x2,…,xn)
,
Y
取值为
0
或
1
。
逻辑回归模型
逻辑回归的模型定义如下:
P(Y=1|x)=exp(w·x+b)1+exp(w·x+b)
P(y=0|x)=11+exp(w·x+b)
假设有一个二分类问题,输出为
y={0,1}
,而线性回归模型产生的预测值为
z=wx+b
是实数值,我们希望有一个理想的阶跃函数来帮我们实现z值到0/1值的转化.
我们可以很自然的想到如下函数:
ϕ(z)=⎧⎩⎨⎪⎪00.51if z<0if z=0if z>0
但是由于该函数在定义域内不连续,而我们需要一个单调可微的函数来供我们使用,于是便找到了Sigmoid函数:
ϕ(z)=11+e−z

由于Sigmoid函数的取值范围为
[0,1]
,我们就可以将其视为类1的后验概率估计
P(y=1|x)
。说白了,就是如果有了一个测试点
x
,那么就可以用Sigmoid 函数算出来的结果来当做该点x属于类别1的概率大小。
于是,非常自然地,我们把Sigmoid函数计算得到的值大于等于0.5的归为类别1,小于0.5的归为类别0:
yˆ={10if ϕ(z)⩾ 0otherwise
逻辑回归的损失函数
逻辑回归模型的损失函数(误差平方和)定义如下:
J(w)=∑i12(ϕ(z(i))−y(i))2
其中:
z(i)=wTx(i)+bi
,表示第
i
个样本点;
y(i)
表示第
i
个样本的真实值;
ϕ(z(i))
表示第
i
个样本的预测值。
这时,如果我们将
ϕ(z)=11+e−z
带入的话,会发现这是一个非凸函数,这就意味着代价函数(代价即预测值和实际值之间的差距)有着许多的局部最小值,这非常不利于我们求解。
左:非凸函数;右:凸函数

因此我们需要换一个思路去解决问题,我们注意到,在逻辑回归的分类任务中,分类结果非0即1,所以我们有:
P(y=1|x;w)=ϕ(z)
P(y=0|x;w)=1−ϕ(z)
其中:
ϕ(z)=ϕ(wTx+b)
;
P(y=1|x;w)
表示给定
w
,那么
x
点
y=1
的概率大小。
于是上式可以整合为:
P(y|x;w)=ϕ(z)y(1−ϕ(z))1−y
逻辑回归模型参数估计
求解
P(y|x;w)=ϕ(z)y(1−ϕ(z))1−y
中的参数
w
可以用极大似然估计(最大可能性估计)的方法:
L(w)=∏i=1nP(y(i)|x(i);w)=∏i=1n(ϕ(z(i)))y(i)(1−ϕ(z(i)))1−y(i)
等式两边做对数变换可得
l(w)=lnL(w)=∑i=1ny(i)ln(ϕ(z(i)))+(1−y(i))ln(1−ϕ(z(i)))
我们现在就得到了代价函数
l(w)
,为了方便使用梯度下降法求解代价函数,我们取代价函数的相反数,然后将代价函数定义为原代价函数的相反数:
J(w)=−l(w)=−∑i=1n[y(i)ln(ϕ(z(i)))+(1−y(i))ln(1−ϕ(z(i)))]
逻辑回归的模型求解
由于Sigmoid函数的自身性质,其对参数求偏导后:
ϕ(z)=11+e−z
⇒ϕ′(z)=dϕ(z)dz=ϕ(z)(1−ϕ(z))
偏导数推导过程:

接下来使用梯度下降法求解回归模型:
w:=w+∇w
其中
∇w=−ηJ(w)=−η∂J(w) 接下来使用梯度下降法求解回归模型:
其中
∇w=−ηJ(w)=−η∂J(w)∂wj=−η[−
w:=w+∇w