手推Logistic Regression及matlab的底层实现

前言

Logistic Regression,也称为LR,逻辑斯蒂回归。虽然名称中有回归二字,但实际上是一种二分类算法。注意,适用范围仅仅是二分类。

公式推导

假设数据集 x 1 , x 2 , . . . , x n x^{1},x^{2},...,x^{n} x1,x2,...,xn,分别属于类别 C 1 , C 2 {C_{1},C_{2}} C1,C2,将类别C1对应标签1,类别C2对应标签0。

f w , b ( x ) = P w , b ( C 1 ∣ x ) f_{w,b}(x)=P_{w,b}(C_{1}|x) fw,b(x)=Pw,b(C1x)表示给定w,b时,x属于类别 C 1 C_{1} C1的概率。

σ ( z ) = 1 1 + e − z \sigma(z)=\frac{1}{1+e^{-z}} σ(z)=1+ez1为sigmoid函数。则 f w , b ( x ) = σ ( ∑ i w i x i + b ) f_{w,b} (x)=\sigma(\sum_{i}w_{i}x_{i}+b) fw,b(x)=σ(iwixi+b)为所用的LR模型,其值介于0-1之间。

对数据集适用最大似然估计,假设 L ( w , b ) L(w,b) L(w,b)为最大似然函数, w ∗ , b ∗ w^{*},b^{*} w,b为模型所求参数。则求解目标为
w , b a r g m a x L ( w , b ) = a r g m i n ( − L ( w , b ) ) = w ∗ , b ∗ \overset{arg maxL(w,b)}{w,b}=arg min (-L(w,b))=w^{*},b^{*} w,bargmaxL(w,b)=argmin(L(w,b))=w,b
最优化问题一般都转化为最小值问题求解。
− l n L ( w , b ) = − l n [ ( y 1 f ( x 1 ) + ( 1 − y 1 ) ( 1 − f ( x 1 ) ) . . . ( y n f ( x n ) + ( 1 − y n ) ( 1 − f ( x n ) ) ] = ∑ n − [ y n l n f ( x n ) + ( 1 − y n ) l n ( 1 − f ( x n ) ) ] -ln L(w,b)=-ln[(y^{1}f(x^{1})+(1-y^{1})(1-f(x^{1}))...(y^{n}f(x^{n})+(1-y^{n})(1-f(x^{n}))]\\ =\sum_{n}-[y^{n}lnf(x^{n})+(1-y^{n})ln(1-f(x^{n}))] lnL(w,b)=ln[(y1f(x1)+(1y1)(1f(x1))...(ynf(xn)+(1yn)(1f(xn))]=n[ynlnf(xn)+(1yn)ln(1f(xn))]

这里的公式如何来的呢?我们可以想下我们适用LR进行分类的目的是什么,希望分类过程中,标签为1的样本预测概率f(x)越接近1越好,标签为0的样本预测概率f(x)越接近0越好。

公式求解

求解 w ∗ 与 b ∗ w^{*}与b^{*} wb时,我们可以将目标函数对 w i w_{i} wi进行求导。
我们先计算:
∂ l n f ( x ) ∂ w i = ∂ l n f ( x ) ∂ z ∂ z ∂ w i \frac{\partial lnf(x)}{\partial w_{i}}=\frac{\partial lnf(x)}{\partial z} \frac{\partial z}{\partial w_{i}} wilnf(x)=zlnf(x)wiz
由于 z = ∑ w i x i + b z=\sum w_{i}x_{i}+b z=wixi+b,可以得到 ∂ z ∂ w i = x i \frac{\partial z}{\partial w_{i}}=x_{i} wiz=xi

∂ l n σ ( z ) ∂ z = 1 σ ( z ) ∂ σ ( z ) ∂ z = 1 σ ( z ) σ ( z ) ( 1 − σ ( z ) ) = 1 − σ ( z ) \frac{\partial ln \sigma(z)}{\partial z}=\frac{1}{\sigma (z)}\frac{\partial \sigma(z)}{\partial z}=\frac{1}{\sigma (z)}{\sigma (z)}(1-{\sigma (z)})=1-{\sigma (z)} zlnσ(z)=σ(z)1zσ(z)=σ(z)1σ(z)(1σ(z))=1σ(z)
这里用到的一个知识是sigma函数的导数。
∂ σ ( z ) ∂ z = − ( 1 + e − z ) − 2 ( − e − z ) = 1 1 + e − z e − z 1 + e − z = σ ( z ) ( 1 − σ ( z ) ) \frac{\partial \sigma(z)}{\partial z}=-(1+e^{-z})^{-2}(-e^{-z})=\frac{1}{1+e^{-z}}\frac{e^{-z}}{1+e^{-z}}=\sigma(z)(1-\sigma(z)) zσ(z)=(1+ez)2(ez)=1+ez11+ezez=σ(z)(1σ(z))
因此可以得到,
∂ l n f ( x ) ∂ w i = ( 1 − σ ( z ) ) x i \frac{\partial lnf(x)}{\partial w_{i}}=(1-{\sigma (z)})x_{i} wilnf(x)=(1σ(z))xi
再计算
∂ l n ( 1 − f ( x ) ) ∂ w i = ∂ l n ( 1 − f ( x ) ) ∂ z ∂ z ∂ w i \frac{\partial ln(1-f(x))}{\partial w_{i}}=\frac{\partial ln(1-f(x))}{\partial z}\frac{\partial z}{\partial w_{i}} wiln(1f(x))=zln(1f(x))wiz
∂ l n ( 1 − f ( x ) ) ∂ z = − 1 1 − σ ( z ) σ ( z ) [ 1 − σ ( z ) ] = − σ ( z ) \frac{\partial ln(1-f(x))}{\partial z}=-\frac{1}{1-\sigma(z)}\sigma(z)[1-\sigma(z)]=-\sigma(z) zln(1f(x))=1σ(z)1σ(z)[1σ(z)]=σ(z)
可得到
∂ l n ( 1 − f ( x ) ) ∂ w i = − σ ( z ) x i \frac{\partial ln(1-f(x))}{\partial w_{i}}=-\sigma(z)x_{i} wiln(1f(x))=σ(z)xi
最后可计算出
− l n L ( w , b ) σ ( w i ) = \frac{-lnL(w,b)}{\sigma(w_{i})}= σ(wi)lnL(w,b)=

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值