美文网首页
逻辑回归算法(Logistic Regression)

逻辑回归算法(Logistic Regression)

作者: 格物致知Lee | 来源:发表于2019-03-15 16:40 被阅读0次

    逻辑回归(Logistic Regression, LR)模型其实仅在线性回归的基础上,套用了一个逻辑函数,但也就由于这个逻辑函数,使得逻辑回归模型成为了机器学习领域一颗耀眼的明星,更是计算广告学的核心。

一,逻辑回归模型

    我们对线性回归的结果做一个在函数g上的转换,可以变化为逻辑回归。这个函数g在逻辑回归中我们一般取为sigmoid函数,形式如下:

g(z) = \frac{1}{1+e^{-z}},其图像为:

sigmoid函数

它有一个非常好的性质,即当z趋于正无穷时,g(z)趋于1,而当z趋于负无穷时,g(z)趋于0,这非常适合于我们的分类概率模型。另外,它还有一个很好的导数性质: g′(z)=g(z)(1−g(z))

如果我们令g(z)中的z为:z=\vec{X} \vec{θ},这样就得到了二元逻辑回归模型的一般形式:

h_{\vec{\theta } }(\vec{X} ) = \frac{1}{1+e^{-\vec{X} \vec{θ} }}

其中: \vec{X}为样本输入,对于模型输出h_{\vec{\theta } }(\vec{X} ),我们让它和我们的二元样本输出y(假设为01)有这样的对应关系,如果h_{\vec{\theta } }(\vec{X} )>0.5 ,即\vec{X} \vec{θ} >0, 则y1。如果h_{\vec{\theta } }(\vec{X} )<0.5,即\vec{X} \vec{θ} <0, 则y0h_{\vec{\theta } }(\vec{X} )的值越小,而分类为0的的概率越高,h_{\vec{\theta } }(\vec{X} )值越大的话分类为1的的概率越高。如果靠近临界点,则分类准确率会下降。

二,逻辑回归损失函数

    假设我们的样本输出是0或者1两类(y=1y =0)。那么我们有:

P(y=1|\vec{X},\vec{\theta } ) = h_{\vec{\theta } }(\vec{X} )P(y=0|\vec{X} ,\vec{\theta} ) = 1- h_{\vec{\theta } }(\vec{X} )

 把这两个式子用一个式子表示,就是:

P(y|\vec{X},\vec{\theta } ) = h_\vec{\theta }(\vec{X})^y(1-h_\vec{\theta }(\vec{X}))^{1-y}

那么,极大似然函数为:

L(\vec{\theta }) = \prod\limits_{i=1}^{m}(h_\vec{\theta }(\vec{X}^{(i)}))^{y^{(i)}}(1-h_\vec{\theta }(\vec{X}^{(i)}))^{1-y^{(i)}},m为样本数量。

为了方便运算对似然函数取对数:

T(\vec{\theta }) = lnL(\vec{\theta }) = \sum\limits_{i=1}^{m}(y^{(i)}log(h_{\vec{\theta }}(\vec{X}^{(i)}))+ (1-y^{(i)})log(1-h_{\vec{\theta }}(\vec{X}^{(i)})))

最大似然估计就是要求得使 T(\vec{\theta }) 取最大值时的 \vec{\theta } ,通俗解释为:确定一个\vec{\theta }使标签对应为1类的样本尽量被分到1类,标签为0类的样本尽量被分到0类。这里可以使用梯度上升法求解。但为了使用梯度下降法我们稍微变换一下:

J(\vec{\theta })=-\frac{1}{m}T(\vec{\theta }) = -\frac{1}{m}\sum\limits_{i=1}^{m}(y^{(i)}log(h_{\vec{\theta }}(\vec{X}^{(i)}))+ (1-y^{(i)})log(1-h_{\vec{\theta }}(\vec{X}^{(i)})))

三,梯度下降求解

    J(\vec{\theta })即为损失函数,我们使用梯度下降法对损失函数进行求解:\vec{\theta } ^* = arg_{min}(J(\vec{\theta }) )

\frac{\partial}{\partial\vec{\theta } }J(\vec{\theta } )  = \frac{\partial}{\partial\vec{\theta } } \sum\limits_{i=1}^{m}(y^{(i)}log(h_{\vec{\theta }}(\vec{X}^{(i)}))+ (1-y^{(i)})log(1-h_{\vec{\theta }}(\vec{X}^{(i)})))

对于某个样本\vec{X}^{(i)}进行梯度下降有:

=(\frac{y^i}{h_{\vec{\theta }}(\vec{X}^{(i)})  }-(1-y^i)\frac{1}{1-h_{\vec{\theta }}(\vec{X}^{(i)})})\frac{\partial}{\partial\vec{\theta } }(h_{\vec{\theta }}(\vec{X}^{(i)}))

=(\frac{y^i}{h_{\vec{\theta }}(\vec{X}^{(i)})  }-(1-y^i)\frac{1}{1-h_{\vec{\theta }}(\vec{X}^{(i)})})h_{\vec{\theta }}(\vec{X}^{(i)})(1-h_{\vec{\theta }}(\vec{X}^{(i)})\frac{\partial}{\partial\vec{\theta }_j }(\vec{\theta} \vec{X}^{(i)})

=(y^i(1-h_{\vec{\theta }}(\vec{X}^{(i)}))-(1-y^i)h_{\vec{\theta }}(\vec{X}^{(i)}))\vec{X} _j

=(y^i-(\vec{X}^{(i)}))\vec{X} ^{(i)}

从而迭代\vec{\theta } 至收敛即可:

\vec{\theta }  = \vec{\theta } - \lambda  (y^i - h_\vec{\theta } (\vec{X}^{(i)} ))\vec{X}^{(i)},其中\lambda 为学习率。

4.逻辑回归的正则化

    逻辑回归也会面临过拟合问题,所以我们也要考虑正则化。常见的有L1正则化和L2正则化。

逻辑回归的L1正则化的损失函数表达式如下,相比普通的逻辑回归损失函数,增加了L1的范数做作为惩罚,超参数\alpha 作为惩罚系数,调节惩罚项的大小。二元逻辑回归的L1正则化损失函数表达式如下:

J(\vec{\theta }) = -\frac{1}{m}\sum\limits_{i=1}^{m}(y^{(i)}log(h_{\vec{\theta }}(\vec{X}^{(i)}))+ (1-y^{(i)})log(1-h_{\vec{\theta }}(\vec{X}^{(i)})))+\alpha  ||\vec{\theta } ||_1

其中||\vec{\theta} ||_1 = \theta_0+\theta_1+...+\theta_n\alpha为惩罚系数,\alpha 越大,对\vec{\theta } 的限制越大。

二元逻辑回归的L2正则化损失函数表达式如下:

J(\vec{\theta }) = -\frac{1}{m}\sum\limits_{i=1}^{m}(y^{(i)}log(h_{\vec{\theta }}(\vec{X}^{(i)}))+ (1-y^{(i)})log(1-h_{\vec{\theta }}(\vec{X}^{(i)})))+\alpha  ||\vec{\theta } ||_2

其中||\theta||_2 = \sqrt{\theta_0^2,\theta_1^2,\theta_2^2...,\theta_n^2} \alpha为惩罚系数,\alpha越大,对\vec{\theta } 的限制越大。

小伙伴们如果觉得文章还行的请点个赞呦!!同时觉得文章哪里有问题的可以评论一下  谢谢你!

相关文章

网友评论

      本文标题:逻辑回归算法(Logistic Regression)

      本文链接:https://www.haomeiwen.com/subject/shlcmqtx.html