逻辑回归原理推导——Logistic Regression
逻辑回归是经典的二分类算法,逻辑回归的决策边界是非线性的。
例如下面的两种分类
前者是线性的,后者是非线性的。
实际分类中经常是先用逻辑回归分类,再用其他分类如支持向量机等,逻辑回归是比较简单的分类算法,先用逻辑回归再用其他复杂的分类算法查看分类效果,决定是否有必要使用其他分类算法。
分类时候我们想要的当然是某一个样本属于 A A A还是属于 B B B的概率为多大,然后设定一个阈值,当计算概率大于这个阈值的时候计算机判定该样本属于 A A A,当计算概率小于该阈值的时候计算机判定该样本属于 B B B
那么这就要用到sigmoid函数
sigmoid函数
sigmoid函数的计算公式如下
g ( z ) = 1 1 + e − z \begin{aligned}g(z) = \frac{1}{1+e^{-z}}\end{aligned} g(z)=1+e−z1,自变量和函数值的取值范围分别为 [ − ∞ , + ∞ ] , ( 0 , 1 ) [-\infty,+\infty],(0,1) [−∞,+∞],(0,1)
对sigmoid函数的求导过程如下
g ′ ( z ) = 0 × ( 1 + e − z ) − ( − e − z ) ( 1 + e − z ) 2 = e − z ( 1 + e − z ) 2 = 1 + e − z − 1 ( 1 + e − z ) 2 = 1 + e − z ( 1 + e − z ) 2 − 1 ( 1 + e − z ) 2 = g ( z ) − g ( z ) 2 = g ( z ) ( 1 − g ( z ) ) \begin{aligned}g'(z) = \frac{0\times(1+e^{-z})-(-e^{-z})}{(1+e^{-z})^2} = \frac{e^{-z}}{(1+e^{-z})^2} = \frac{1+e^{-z}-1}{(1+e^{-z})^2} =\frac{1+e^{-z}}{(1+e^{-z})^2} - \frac{1}{(1+e^{-z})^2} = g(z) - g(z)^2 = g(z)(1-g(z))\end{aligned} g′(z)=(1+e−z)20×(1+e−z)−(−e−z)=(1+e−z)2e−z=(1+e−z)21+e−z−1=(1+e−z)21+e−z−(1+e−z)21=g(z)−g(z)2=g(z)(1−g(z))
g ( z ) g(z) g(z)和 g ′ ( z ) g'(z) g′(z)的函数图像如下
在 g ( z ) = 1 1 + e − z \begin{aligned}g(z) = \frac{1}{1+e^{-z}}\end{aligned} g(z)=1+e−z1中 z z z就是输入值,就是我们得到的预测值,在通过sigmoid函数将该预测值转化成概率,这就是我们想要得到的概率值。本来我们预测的是一个值,现在就转化成了预测的概率。
预测函数
h θ ( x ) = g ( θ T x ) = 1 1 + e θ T x \begin{aligned}h_\theta(x) = g(\theta^Tx) =\frac{1}{1+e^{\theta^Tx}}\end{aligned} hθ(x)=g(θTx)=1+eθTx1
其中 θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + … + θ n x n = ∑ i = 0 i = n θ i x i = θ T X \theta_0x_0+\theta_1x_1+\theta_2x_2 + …+\theta_nx_n = \sum_{i = 0}^{i = n}\theta_ix_i =\theta^TX θ0x0+θ1x1+θ2x2+…+θnxn=∑i=0i=nθixi=θTX
对于二分类任务某个样本属于1的概率为
P ( y = 1 ∣ x ; θ ) = h θ ( x ) P(y = 1|x;\theta) = h_\theta(x) P(y=1∣x;θ)=hθ(x)
那么属于0的概率为
P ( y = 0 ∣ x ; θ ) = 1 − h θ ( x ) P(y = 0|x;\theta) = 1-h_\theta(x) P(y=0∣x;θ)=1−hθ(x)
对上面两个公式进行整合可得到
P ( y ∣ x ; θ ) = ( h θ ( x ) ) y ( 1 − h θ ( x ) ) 1 − y P(y|x;\theta) = (h_\theta(x))^y(1-h_\theta(x))^{1-y} P(y∣x;θ)=(hθ(x))y(1−hθ(x))1−y
对于二分类任务(0,1)整合后 y = 0 y = 0 y=0只保留 ( 1 − h θ ( x ) ) 1 − y (1-h_\theta(x))^{1-y} (1−hθ(x))1−y, y = 1 y = 1 y=1只保留 h θ ( x ) ) y h_\theta(x))^y hθ(x))y
此时我们构造似然函数求解 θ \theta θ的值
L ( θ ) = ∏ i = 1 i = m P ( y i ∣ x i ; θ ) = ∏ i = 1 i = m ( h θ ( x i ) ) y i ( 1 − h θ ( x i ) ) 1 − y i \begin{aligned}L(\theta) = \prod_{i = 1}^{i = m}P(y_i|x_i;\theta) = \prod_{i = 1}^{i = m}(h_\theta(x_i))^{y_i}(1-h_\theta(x_i))^{1-y^{i}}\end{aligned} L(θ)=i=1∏i=mP(yi∣xi;θ)=i=1∏i=m(hθ(xi))yi(1−hθ(xi))1−yi
显然乘法计算复杂,将上述似然函数取对数得到对数似然函数
l ( θ ) = l n ( L ( θ ) ) = ∑ i = 1 i = m ( y i l n ( h θ ( x i ) ) + ( 1 − y i ) l n ( 1 − h θ ( x i ) ) ) \begin{aligned}l(\theta)=ln(L(\theta)) = \sum_{i =1}^{i = m}(y_iln(h_\theta(x_i))+(1-y_i)ln(1-h_\theta(x_i)))\end{aligned} l(θ)=ln(L(θ))=i=1∑i=m(yiln(hθ(xi))+(1−yi)ln(1−hθ(xi)))
我们的目标是求此对数似然函数的极大值,至于为什么要求似然函数的极大值请参考我的文章
既然要求此似然函数的极大值,那么这个问题必然是一个梯度上升的问题,但是我们通常情况下是求梯度下降问题,令 J ( θ ) = − 1 m l ( θ ) \begin{aligned}J(\theta) = -\frac{1}{m}l(\theta)\end{aligned} J(θ)=−m1l(θ)就转换为了梯度下降问题,系数 1 / m 1/m 1/m是指考虑所有样本。
∂ J ( θ ) ∂ θ j = − 1 m ∑ i = 1 i = m ( y i 1 h θ ( x i ) ∂ h θ ( x i ) ∂ θ j − ( 1 − y i ) 1 1 − h θ ( x i ) ∂ h θ ( x i ) ∂ θ j ) = 1 m ∑ i = 1 i = m ( y i 1 g ( θ T x i ) − ( 1 − y i ) 1 1 − g ( θ T x i ) ) ∂ g ( θ T x i ) ∂ θ j \begin{aligned}\frac{\partial J(\theta)}{\partial \theta_j} = -\frac{1}{m}\sum_{i =1}^{i = m}(y_i\frac{1}{h_\theta(x_i)}\frac{\partial h_\theta(x_i)}{\partial \theta_j}-(1-y_i)\frac{1}{1-h_\theta(x_i)}\frac{\partial h_\theta(x_i)}{\partial \theta_j}) =\frac{1}{m}\sum_{i = 1}^{i = m}(y_i\frac{1}{g(\theta^Tx_i)}-(1-y_i)\frac{1}{1-g(\theta^Tx_i)})\frac{\partial g(\theta^Tx_i)}{\partial \theta_j} \end{aligned} ∂θj∂J(θ)=−m1i=1∑i=m(yihθ(xi)1∂θj∂hθ(xi)−(1−yi)1−hθ(xi)1∂θj∂hθ(xi))=m1i=1∑i=m(yig(θTxi)1−(1−yi)1−g(θTxi)1)∂θj∂g(θTxi)
= − 1 m ∑ i = 1 i = m ( y i 1 g ( θ T x i ) − ( 1 − y i ) 1 1 − g ( θ T x i ) ) = g ( θ T x i ) ( 1 − g ( θ T x i ) ) ∂ θ T x i ∂ θ j =\begin{aligned}-\frac{1}{m}\sum_{i = 1}^{i = m}(y_i\frac{1}{g(\theta^Tx_i)}-(1-y_i)\frac{1}{1-g(\theta^Tx_i)}) = g(\theta^Tx_i)(1-g(\theta^Tx_i))\frac{\partial \theta^Tx_i}{\partial \theta_j}\end{aligned} =−m1i=1∑i=m(yig(θTxi)1−(1−yi)1−g(θTxi)1)=g(θTxi)(1−g(θTxi))∂θj∂θTxi
= − 1 m ∑ i = 1 i = m ( y i ( 1 − g ( θ T x i ) ) − ( 1 − y i ) g ( θ T x i ) ) x i j =\begin{aligned}-\frac{1}{m}\sum_{i =1}^{i = m}(y_i(1-g(\theta^Tx_i))-(1-y_i)g(\theta^Tx_i))x_i^j\end{aligned} =−m1i=1∑i=m(yi(1−g(θTxi))−(1−yi)g(θTxi))xij
= − 1 m ∑ i = 1 i = m ( y i − g ( θ T x i ) ) x i j =\begin{aligned}-\frac{1}{m}\sum_{i =1}^{i =m}(y_i - g(\theta^Tx_i))x_i^j\end{aligned} =−m1i=1∑i=m(yi−g(θTxi))xij
= 1 m ∑ i = 1 i = m ( h θ ( x ) − y i ) x i j = \begin{aligned}\frac{1}{m}\sum_{i =1}^{i = m}(h_\theta(x)-y_i)x_i^j\end{aligned} =m1i=1∑i=m(hθ(x)−yi)xij
经过求导梯度已经得到,接下来就是参数的更新
θ j ′ = θ j − α 1 m ( ( h θ ( x ) − y i ) x i j ) \begin{aligned}\theta_j' =\theta_j - \alpha\frac{1}{m}((h_\theta(x)-y_i)x_i^j)\end{aligned} θj′=θj−αm1((hθ(x)−yi)xij)
这就是在二分类任务中使用的sogmoid函数以及二分类的推导过程。
而在多分类任务中使用的是softmax函数。