手推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​(C1​∣x)表示给定w,b时,x属于类别 C 1 C_{1} C1​的概率。

σ ( z ) = 1 1 + e − z \sigma(z)=\frac{1}{1+e^{-z}} σ(z)=1+e−z1​为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)=σ(∑i​wi​xi​+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)+(1−y1)(1−f(x1))...(ynf(xn)+(1−yn)(1−f(xn))]=n∑​−[ynlnf(xn)+(1−yn)ln(1−f(xn))]

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

公式求解

求解 w ∗ 与 b ∗ w^{*}与b^{*} w∗与b∗时,我们可以将目标函数对 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}} ∂wi​∂lnf(x)​=∂z∂lnf(x)​∂wi​∂z​
由于 z = ∑ w i x i + b z=\sum w_{i}x_{i}+b z=∑wi​xi​+b,可以得到 ∂ z ∂ w i = x i \frac{\partial z}{\partial w_{i}}=x_{i} ∂wi​∂z​=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)} ∂z∂lnσ(z)​=σ(z)1​∂z∂σ(z)​=σ(z)1​σ(z)(1−σ(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} ∂wi​∂lnf(x)​=(1−σ(z))xi​

上一篇:MYSQL数据库列名带有特殊字符


下一篇:转:java内部类作用