逻辑回归也被称为对数几率回归,是一种分类算法,用条件概率分布的形式表示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)∂wj=−η[−∑i=1n(y(i)−ϕ(z(i)))x(i)j]
wj表示第
j个特征的权重;
η为学习率,用来控制步长。
梯度推导过程:

所以使用梯度下降法更新权重时,根据下列式子即可:
wj:=wj+η∑i=1ny(i)−ϕ(z(i)))x(i)j
当样本量极大时,更新权重会非常耗时,我们可以采用随机梯度下降的方法,把每次迭代时需要的样本打乱:
wj:=wj+η(y(i)−ϕ(z(i)))x(i)j,for i in range(n)
也就是去掉了求和,而是对每个样本点都进行更新。
多项逻辑回归模型
将逻辑回归应用推广为多项式逻辑回归,用于解决多分类问题,这时公式定义为:
P(Y=k|x)=exp(wk·x)1+∑K−1k=0exp(wk·x),k=1,2,...,K−1
P(Y=K|x)=11+∑K−1k=0exp(wk·x)