逻辑回归(Logistic Regression) 总结

本文是我在学习了逻辑回归课程之后的总结,文中所阐述的内容仅仅是我个人的理解,如有错误或疏漏,欢迎大家批评指正。

1.逻辑回归的假设函数

在分类问题中,二分类问题有着很重要的地位,例如在判断某人是否得某种病,或者某封邮件是否为垃圾邮件等等的场景中都会用到。考虑二分类问题,对于任意输入,输出结果应该只有两种情况,即{0,1}\left\{ 0, 1 \right\} ,我们要找的假设函数 h(x)h(x) 需要符合这个标准,由此引入 logistic function:
g(z)=11+ezg(z) = \frac{1}{1+e^{-z}}
他的函数图像:
逻辑回归(Logistic Regression) 总结
假设函数可以写为:
hθ(x)=11+eθTxh_{\theta}(x) = \frac{1}{1+e^{-\theta^{T}x}}

让我们来理解一下,假设函数输出的是一个 (0, 1) 之间的数,可以把这个数看作是 yy 为 1 的可能性,如果假设函数的输出为 0.90.9,可以认为这一组样本的输出结果为 1 的概率就比较大。由此可以写出下面的式子
P(y=1x;θ)=hθ(x)=g(θTx)P(y=1|x;\theta)=h_{\theta}(x)=g(\theta^{T}x)
P(y=0x;θ)=1P(y=1x;θ)=1hθ(x)=1g(θTx)P(y=0|x;\theta)=1-P(y=1|x;\theta)=1-h_{\theta}(x)=1-g(\theta^{T}x)
这两个式子可以合并为一个式子,无论在 yy 为 0 或者 1 时都成立:
P(yx;θ)=hθ(x)y(1hθ(x))1yP(y|x;\theta) = h_{\theta}(x)^{y} (1-h_{\theta}(x))^{1-y}
·

2.最大似然估计(Maximum Likehood Estimation, MLE)

最大似然估计的意思是在模型已经确定的情况下,求解最有可能让这个模型出现的参数,这是一个逆推的过程。常用八个字概括“模型已定,参数未知”。
根据最大似然估计,写出似然函数,通俗来说就是你拿到的这个模型长这样,这件事发生的概率是多少呢,用似然函数来表示:
L(θ)=i=1mP(y(i)x(i);θ)L(\theta) = \prod_{i=1}^{m} P(y^{(i)}|x^{(i)};\theta)
=i=1mhθ(x(i))y(i)(1hθ(x(i)))1y(i)=\prod_{i=1}^{m} h_{\theta}(x^{(i)})^{y^{(i)}} (1-h_{\theta}(x^{(i)}))^{1-y^{(i)}}
取对数:
l(θ)=log(L(θ))=i=1m(y(i)loghθ(x(i))+(1y(i))log(1hθ(x(i))))l(\theta) = log(L(\theta))=\sum_{i=1}^{m}{(y^{(i)}log h_{\theta}(x^{(i)})+ (1-y^{(i)}) log (1-h_{\theta}(x^{(i)})) )}
我们的目标是让模型长成这个样子的概率最大,可以更好的拟合这个模型,即求:
maxθl(θ)max_{\theta} l(\theta)
·
3. 梯度下降
根据上节课所学的梯度下降法,求 l(θ)l(\theta) 的偏导数,下面是偏导数的数学公式推导,有兴趣的同学可以自己推导一遍:
l(θ)θj=i=1m(y(i)1hθ(x(i))hθ(x(i))θj+(1y(i))11hθ(x(i))hθ(x(i))θj)\frac{\partial l(\theta)}{\partial \theta_{j}} = \sum_{i=1}^{m}{(y^{(i)} \bullet \frac{1}{ h_{\theta}(x^{(i)} ) } \bullet \frac{\partial h_{\theta}(x^{(i)})}{\partial \theta _{j}} + (1-y^{(i)}) \bullet \frac{1}{1- h_{\theta}(x^{(i)})} \bullet -\frac{\partial h_{\theta}(x^{(i)})}{\partial \theta _{j}}})
=i=1m(hθ(x(i))θjy(i)hθ(x(i))hθ(x(i))(1hθ(x(i))))(1)=\sum_{i=1}^{m}{ (\frac{\partial h_{\theta}(x^{(i)})}{\partial \theta _{j}} \bullet \frac{y^{(i)} - h_{\theta}(x^{(i)}) }{ h_{\theta}(x^{(i)}) \bullet (1- h_{\theta}(x^{(i)}) ) }) } ·································· ( 1 )式
把里面一个求导拿出来求解,注意是对θj\theta _{j}求导,只有 θj\theta _{j} 是变量,其他都是常量:
hθ(x(i))θj=θj(11+eθTx)\frac{\partial h_{\theta}(x^{(i)})}{\partial \theta _{j}} =\frac{\partial}{\partial \theta _{j}} (\frac{1}{1+e^{-\theta ^{T}x}})
=xjeθTx(i)(eθTx(i)+1)2= \frac{ x_{j} e^{\theta ^{T} x^{(i)} } }{(e^{\theta ^{T} x^{(i)} } +1 )^{2} }
=xjeθTx(i)eθTx(i)+11eθTx(i)+1= x_{j} \bullet \frac{ e^{\theta ^{T} x^{(i)} } }{e^{\theta ^{T} x^{(i)} } +1 } \bullet \frac{ 1 }{e^{\theta ^{T} x^{(i)} } +1}
=xjhθ(x(i))(1hθ(x(i))=x_{j } \bullet h_{\theta}(x^{(i)}) \bullet (1-h_{\theta}(x^{(i)})
结果带入( 1 )式,得到:
l(θ)θj=i=1m(y(i)hθ(x(i)))xj(i)\frac{\partial l(\theta)}{\partial \theta_{j}} = \sum_{i=1}^{m}{(y^{(i)} - h_{\theta} (x^{(i)}))} \bullet x_{j}^{(i)}
参数 θj\theta _{j} 的更新方式为:
θj:=θjαi=1m(y(i)hθ(x(i)))xj(i)\theta _{j} := \theta _{j} - \alpha \sum_{i=1}^{m}{(y^{(i)} - h_{\theta} (x^{(i)}))} \bullet x_{j}^{(i)}

我自己理解其实式子里 α\alpha 前面的正负其实无所谓,当你沿着梯度方向反向下降时,不就是梯度上升,那么就可以找到最大值了。

至此,逻辑回归的原理总结完了,这个分类算法很特别,它不是简单输出一个类别,它输出的是一个可能性,希望这篇文章可以帮助你学习这个特别的分类算法。如果你觉得有用的话不妨点个赞哦。

正在学习 python / 机器学习吗?欢迎关注公号「MachineLearning学习之路」,扫描下方二维码带走我:
逻辑回归(Logistic Regression) 总结