逻辑回归一般用于处理不连续的二分分类问题。与线性回归不同,逻辑回归需要做出的预测往往是包含在[0,1]之间的,而一般的线性回归对于此类问题一般没有较好的表现。

在逻辑回归中,我们引入逻辑函数(logistic function),也称(sigmoid function).

\(h_\theta (x)\;=\; g(\theta^T x) \;=\; {1 \over 1+e^{- \theta^T x}}\)

其中有:

\(g(z)\;=\;{1 \over 1+e^{-z}}\)

这个函数的特征是在 x趋向负无穷的时候,y为0,x趋向正无穷的时候,y为1.

跟线性回归中一样,我们把\(\theta^T x\)定义为:

\(\theta^T x \;=\; \theta_0+\sum_{i=1}^m \theta_ix^{(i)}\)

在这里选择逻辑函数是因为在一般的逻辑回归问题中这个函数就能非常好的使用。至于为什么不选择其他的\(g(z)\)将在后面GLM的章节介绍。

为了方便起见,先将\(g(z)\)求导:

\(g'(z)\;=\;{d \over dz}{1 \over 1+e^{-z}} \)

\(=\;{1 \over (1+e^{-z})^2}(e^{-z})\)

\(=\;{1 \over 1+e^{-z}}(1-{1 \over 1+e^{-z}})\)

\(=\;g(z)(1-g(z))\)

由于在逻辑回归中,最终的分类结果只有0或者1,我们不妨假设出现0,1的概率为:

\(P(y=1|x;\theta)\;=\;h_\theta(x)\)

\(P(y=0|x;\theta)\;=\;1-h_\theta(x)\)

上述两式可以合并写成:

\(P(y|x;\theta)\;=\;(h_\theta(x))^y(1-h_theta(x))^{1-y}\)

这样我们可以得出逻辑回归的似然度函数\(L(\theta)\)

\(L(\theta)\;=\;P(\vec y|X;\theta)\)

\(=\;\prod_{i=1}^m p(y^{(i)}|x^{(i)};\theta)\)

\(=\;\prod_{i=1}^m (h_\theta(x^{(i)}))^{y^{(i)}}(1-h_\theta(x^{(i)}))^{1-y^{(i)}}\)

同样的,求出对数似然度函数\( \mathscr l(\theta)\)

\( \mathscr L(\theta) \;=\; log\,L(\theta)\)

\(=\;\sum_{i=1}^m y^{(i)}log\,h(x^{(i)})+(1-y^{(i)})log(1-h(x^{(i)}))\)

在这里,我们可以使用类似梯度下降法的 梯度上升法 来最大化对数似然函数,得到关于\(\theta\)的函数。

梯度上升法的修正\(\theta\)值得公式为:

\(\theta \;=\; \theta +\alpha \nabla_\theta \mathscr L(\theta) \)

因此对于每个\(\theta_j\),我们求\(\mathscr L(\theta)\)关于\(\theta_j\)的偏导:

 \({\partial \over \partial{\theta_j}}\mathscr L(\theta) \;=\; {\partial \over \partial{\theta_j}} (y\,log\,h_\theta(x) + (1-y)log(1-h_\theta(x)))\)

\(=\;{\partial \over \partial{\theta_j}}(y\,log{1 \over 1+e^{-\theta^Tx}}+(1-y)log(1-{1 \over 1+e^{-\theta^Tx}}))\)

\(=\; y(1+e^{-\theta^Tx})\cdot {1 \over (1+e^{-\theta^Tx})^2}\cdot{\partial \over \partial{\theta_j}}e^{-\theta^Tx}+(1-y)\cdot {1+e^{-\theta^Tx} \over e^{-\theta^Tx}} \cdot (-{1 \over (1+e^{-\theta^Tx})^2}) \cdot {\partial \over \partial{\theta_j}}e^{-\theta^Tx}\)

\(=\;(y\cdot {1 \over 1+e^{-\theta^Tx}} – (1-y){1 \over 1+e^{-\theta^Tx}}\cdot {1 \over e^{-\theta^Tx}})\cdot e^{-\theta^Tx} x_j\)

\(=\;y{ e^{-\theta^Tx}x_j \over 1+e^{-\theta^Tx}} – (1-y){x_j \over 1+e^{-\theta^Tx}}\)

\(=\;{ye^{-\theta^Tx}-1+y \over 1+e^{-\theta^Tx}}x_j\)

\(=\;(y-{1 \over 1+e^{-\theta^Tx}})x_j\)

\(=\;(y-h_\theta(x))x_j\)

**其实把\(h_\theta(x)\)看做整体会更快……

然后我们就能得到使用梯度上升法修正\(\theta\)值的公式:

\(\theta_j \;=\; \theta_j +\alpha \sum_{i=1}^m   (y^{(i)}-h_\theta(x^{(i)}))x^{(i)}_j \)

而随机梯度上升得公式为:

\(\theta_j \;=\; \theta_j +\alpha (y^{(i)}-h_\theta(x^{(i)}))x^{(i)}_j  \)