工作中经常需要解决分类问题,根据已知特征和类别的样本,找到一种通用的分类标准,以求能够确定更多未知数据所属的类别。Logistic回归往往被作为机器学习的入门篇。万物皆数,数据的特征最终可以归结为向量x=(x1,x2,...,xn)T的形式,而两分类问题则可以抽象为y=1和y=0。
于是两分类问题转化为,找到一个向量θ=(θ1,θ2,...,θn),使
![](http://www.forkosh.com/mathtex.cgi? y=\left{\begin{matrix}0, \theta ^{T}x+b< 0 & \ 1, \theta ^{T}x+b\geq 0 & \end{matrix}\right.)
这里的b是常数。
那么重新整合x和θ,让x=(1,x1,x2,...,xn)T,θ=(θ0,θ1,θ2,...,θn),这里θ0=b,那么问题归结为找到向量θ,使
![](http://www.forkosh.com/mathtex.cgi? y=\left{\begin{matrix}0, \theta ^{T}x< 0 & \ 1, \theta ^{T}x\geq 0 & \end{matrix}\right.)
在这里引入sigmoid函数
![](http://www.forkosh.com/mathtex.cgi? f(x)=\frac{1}{1-e^{-x}})
其函数图像为
sigmoid函数把实数域映射到[0,1]。
那么把离散的两分类问题,转变为
![](http://www.forkosh.com/mathtex.cgi? y=f(\theta{T}x)=\frac{1}{1-e{-\theta^{T}x}})
的连续形式,同时,把离散问题转变成概率问题,认为p=f(θTx)是y=1的概率,即P(y=1|x)=f(θTx),那么P(y=0|x)=1-f(θTx)。可以写成一个式子
![](http://www.forkosh.com/mathtex.cgi? P(y_{k})=p{y_{k}}(1-p){1-y_{k}})
这里yk表示已知分类样本的类别,只有0和1两种取值。
这样,在取到m个独立样本{y1,y2,...,ym}的概率就是
![](http://www.forkosh.com/mathtex.cgi? L(\theta)=\prod_{k=1}^{m} P(y_{k})=\prod_{k=1}{m}f(\theta{T}x_{k}){y_{k}}[1-f(\theta{T}x_{k})]^{1-y_{k}})
问题转变为求L(θ)的最大似然估计。
那么
![](http://www.forkosh.com/mathtex.cgi? Ln {L(\theta)}=\sum_{k=1}{m}[y_{k}Lnf(\theta{T}x_{k})+(1-y_{k})Ln[1-f(\theta^{T}x_{k})]])
对θi求偏导,中间过程略去,直接给结果
![](http://www.forkosh.com/mathtex.cgi?\frac{\partial LnL}{\partial \theta_{i}}=\sum_{k=1}{m}x_{ki}[y_{k}-f(\theta{T} x_{k})]=0)
其中i∈{0,1,2,...,n}
在求偏导的过程中,会充分感受到为什么选择sigmoid函数,sigmoid函数f'=f(1-f)的特性简化了大量的运算。
于是问题变为求解n+1元方程,因为涉及到自然对数,因此只能通过迭代的方式求近似解,这就又是后话了。
网友评论