logistic regression教程3

在线性拟合的基础上,我们实现logistic regression。

如前所述,样本集是 

{x1,y1},{x2,y2},...,{xn,yn}[1]


其中,xi=[1,xi,1,xi,2,xi,3,...,xi,k]T,且yi(0,1)。注意,这里对yi有值上的要求,必须如此,如果值不再这个区间,要以归一化的方式调整到这个区间。对于分类问题,则yi的取值或者是0,或者是1,也就是yi{0,1}

当然,从严格的意义上说,logistic regression拟合后,yi的值只能无限地逼近0和1,而不能真正达到0和1,但在处理实际问题上,可以设定成形如 ifyi>0.5thenyi=1ifyi<=0.5thenyi=0解决。

Logistic regression的拟合形式如下: 

yi=f(zi)[2]
zi=Wxi[3]


其中,f(z)=11+ez[4],也就是Logistic函数。

根据公式[2]和公式[3],则: 

yi=f(Wxi)[4]

那么,如果用公式[4]拟合xiyi的关系,需要求解W,使得在公式[1]上误差最小。对应的损失函数就是 

Loss=12i=1n(yif(Wxi))2[5]

跟前面的一样,我们用梯度下降法求解。 
所以,要对公式[5]wj的一阶偏导,于是有 

Losswj=i=1n(yif(Wxi))×(1)×f(Wxi)wj=i=1n(yif(Wxi))×(1)×f(zi)zi×ziwj[6]

注意,问题来了,公式[6]的最后一步,实际上是将Wxi视为一个变量zi,分别求导。这一步是在高等数学有详细描述了,不解释。

公式[6]中的f(zi)zi等价于f(z),因为只有一个自变量z。根据公式[4],可以求出

f(z)=ez(ez+1)2[7]


对公式[7]可以做一次变形,以方便求解: 
根据公式[4],可以知道

ez=f(z)1f(z)[8]


将公式[8]代入到公式[7],就可以得到

f(z)=f(z)×(1f(z))[9]


也就是说,我们可以根据f(z)得到f(z),而且计算量很小。

把公式[9]代入公式[6],就得到 

Losswj=i=1n(yif(Wxi))×(1)×f(zi)zi×ziwj=i=1n(yif(Wxi))×(1)×f(zi)×(1f(zi))×ziwj=i=1n(yif(Wxi))×(1)×f(Wxi)×(1f(Wxi))×(Wxi)wj=i=1n(yif(Wxi))×(1)×f(Wxi)×(1f(Wxi))×(Wxi)wj=i=1n(yif(Wxi))×(1)×f(Wxi)×(1f(Wxi))×xi,j=i=1n(yif(Wxi))×f(Wxi)×(f(Wxi)1)×xi,j[10]


于是公式[10]可以写成 

Losswj=i=1n(yif(Wxi))f(Wxi)(f(Wxi)1)xi,j[11]


那么,wj在梯度下降法的迭代公式就是 

wj=wj+wj=wjLosswj[12]


现在,我们开始做最麻烦的一步,将公式[11]进行矩阵化 
令 

Y=[y1,y2,...,yn][13]


W=[w0,w1,w2,...,wk][14]


X=⎛⎝⎜⎜⎜⎜11...1x1,1x2,1...xn,1x1,2x2,2...xn,2............x1,kx2,k...xn,k⎞⎠⎟⎟⎟⎟[15]


V=⎛⎝⎜⎜⎜⎜f(Wx1)(f(Wx1)1)0...00f(Wx2)(f(Wx2)1)...0............00...f(Wxn)(f(Wxn)1)⎞⎠⎟⎟⎟⎟[16]


L=[f(Wx1),f(Wx2),...,f(Wxn)][17]


公式[16]略有一点复杂,它是对角矩阵。 
根据上述设定,公式[11]的矩阵化形式就是 

Losswj=(YL)V⎛⎝⎜⎜⎜⎜x1,jx2,j...xn,j⎞⎠⎟⎟⎟⎟[18]


那么,对W而言,更新公式就是 

W=W(YL)VX[19]


到这里,logisitci regression的梯度下降法推导就结束了。下一篇我们用python实现求解过程。

原文地址:https://www.cnblogs.com/developer-ios/p/5014893.html