逻辑回归(logistics regression)

逻辑回归是一种广义的线性回归模型,它通过一个单调可微的函数将结果标签和线性回归预测值联系起来,在西瓜书中开头便介绍了单位阶跃函数
f ( x ) = { 0 = z < 0 0.5 = z = 0 1 = z < 0 f(x)=\left\{ \begin{aligned} 0 & = & z<0\\ 0.5 & = & z=0 \\ 1 & = & z<0 \end{aligned} \right. f(x)=00.51===z<0z=0z<0
显然这个函数不连续也不可微,那么我们便找到了一种新的替代函数:sigmoid函数
s i g m o i d           f ( z ) = 1 1 + e − z sigmoid\ \ \ \ \ \ \ \ \ f(z)=\frac{1}{1+e^{-z}} sigmoid         f(z)=1+ez1
这个函数曾经是深度学习最常用的激活函数,但是因为求导最大值为0.25,容易造成梯度消失等原因,被像线性整流函数(ReLu)等抢走了风头。讲了点题外话~~
逻辑回归(logistics regression)_第1张图片
那么在二分类问题中,常常以0.5作为分界线,将结果划分为两类,从上面的图像也可以看出,sigmoid函数非常的适合。
接下来对sigmoid函数进行求导:
d f ( z ) d z = e − z ( 1 + e − z ) 2                                 = 1 1 + e − z    ∗    e − z 1 + e − z                      = f ( z ) ( 1 − f ( z ) ) \frac{df(z)}{dz}=\frac{e^{-z}}{(1+e^{-z})^2} \\ ~\\ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=\frac{1}{1+e^{-z}} \ \ *\ \ \frac{e^{-z}}{1+e^{-z}}\\ ~\\ \ \ \ \ ~~~~~~~~~~~~~~=f(z)(1-f(z)) dzdf(z)=(1+ez)2ez                              =1+ez1    1+ezez                   =f(z)(1f(z))
z = w ⊤ x z=w^\top x z=wx逻辑回归的表达式为 h z ( x ) = 1 1 + e − z ⊤ x h_z(x)=\frac{1}{1+e^{-z^\top x}} hz(x)=1+ezx1
注:像西瓜书介绍多元线性回归一样,这里z的长度为k+1(k为属性数量)最后一个数代表偏置 b b b的值,而在x中也要拼接一个1在最后,用来和z的最后一个数相乘以表示 b b b

我们将 f ( z ) f(z) f(z)的取值记为为y取1的概率,那么 p ( y = 1 ∣ x ; z ) = h z ( x ) p(y=1|x;z)=h_z(x) p(y=1x;z)=hz(x)
相反的 p ( y = 0 ∣ x ; z ) = 1 − h z ( x ) p(y=0|x;z)=1-h_z(x) p(y=0x;z)=1hz(x)
查阅了非常多的资料,将上述两式子综合在一起写成
p ( y i ∣ x i ; z ) = h z ( x ) y ( 1 − h z ( x ) ) 1 − y p(y_i|x_i;z)=h_z(x)^y(1-h_z(x))^{1-y} p(yixi;z)=hz(x)y(1hz(x))1y
其实我并不是特别理解这个写法,但经过学习,我认为应该是代表样本的概率密度函数。
这里通过最大似然估计求解参数 z z z
似然函数如下:
L ( z ) = ∏ i = 1 m h z ( x ) y ( 1 − h z ( x ) ) 1 − y L(z)=\prod_{i=1}^mh_z(x)^y(1-h_z(x))^{1-y} L(z)=i=1mhz(x)y(1hz(x))1y
对上式取对数 L ( z ) = l n L ( z ) L(z)=lnL(z) L(z)=lnL(z)
L ( z ) = ∑ i = 1 m y l n h z ( x ) + ( 1 − y ) l n ( 1 − h z ( x ) ) L(z)=\sum_{i=1}^m ylnh_z(x)+(1-y)ln(1-h_z(x)) L(z)=i=1mylnhz(x)+(1y)ln(1hz(x))
L ( z ) L(z) L(z) w w w的导数

d L ( z ) d w = ∑ i = 1 m ( y 1 h z ( x ) − ( 1 − y ) 1 1 − h z ( x ) ) ∂ h z ( x ) ∂ w = ∑ i = 1 m ( y 1 h z ( x ) − ( 1 − y ) 1 1 − h z ( x ) ) h z ( x ) ( 1 − h z ( x ) ) ∂ w ⊤ x ∂ w = ∑ i = 1 m [ y ( 1 − h z ( x ) − ( 1 − y ) h z ( x ) ] x = ∑ i = 1 m ( y − h ) x \frac{dL(z)}{dw}=\sum_{i=1}^m(y\frac{1}{h_z(x)}-(1-y)\frac{1}{1-h_z(x)})\frac{\partial h_z(x)}{\partial w}\\ =\sum_{i=1}^m(y\frac{1}{h_z(x)}-(1-y)\frac{1}{1-h_z(x)})h_z(x)(1-h_z(x))\frac{\partial w^\top x}{\partial w}\\ =\sum_{i=1}^m[y(1-h_z(x)-(1-y)h_z(x)]x\\ =\sum_{i=1}^m(y-h)x dwdL(z)=i=1m(yhz(x)1(1y)1hz(x)1)whz(x)=i=1m(yhz(x)1(1y)1hz(x)1)hz(x)(1hz(x))wwx=i=1m[y(1hz(x)(1y)hz(x)]x=i=1m(yh)x
上面x,y,z均没有打下标。
我们得到了 w w w的更新方向。
w : = w + α ∑ i = 1 m ( y − h ) x w:=w+\alpha \sum_{i=1}^m(y-h)x w:=w+αi=1m(yh)x
因为要求最大值,所以使用的是梯度上升法, α \alpha α代表学习速率。关于上面式子中的求和符号,其实就是batch_size,你也可以每次只考虑一个样本,即在线学习。那么更新的公式如下:
w : = w + α ( y − h ) x w:=w+\alpha (y-h)x w:=w+α(yh)x

你可能感兴趣的:(机器学习,逻辑回归,机器学习)