Chapter 2    逻辑回归(Logistic Regression)详细公式推导

Chapter 2 逻辑回归(Logistic Regression)详细公式推导

在线性回归中,我们研究的是连续量的变化情况,而在逻辑回归中研究对象则变成了离散量,简单来说,在线性回归中我们输入一个值 x ,然后输出它对应的数值 y ,而在逻辑回归中,我们输入一个值 x ,判断它是属于 0 还是 1

对于判断输入值属于 0 还是 1 ,我们通过的是概率的方法,概率大于 50\% 判断为 1 ,概率小于 50\% 判断为 0

代价函数

因为概率都是介于 01 之间的数值,为了使数值合理,我们引入了 sigmoid 函数f(x)=\frac{1}{1+e^{-x}} ,由于 sigmoid 函数单调增以及反函数单增等性质,常被用作神经网络的阈值函数,将变量映射到 0,1 之间。。

sigmoid 函数图像

我们将 x,\theta 构成的式子作为 sigmoid 函数的输入,用假设函数 h_{\theta}\left(x\right)=\frac{1}{1+e^{-\theta^T x}} 代替 sigmoid 函数,当 y0 和取 1 时,对应的概率分布函数分别为:

\begin{align*} &P(y^{(i)}=1|x^{(i)};\mathbf{\theta})=h_{\theta}(x^{(i)})\\ &P(y^{(i)}=0|x^{(i)};\mathbf{\theta})=1-h_{\theta}(x^{(i)}) \end{align*}

因为我们规定 y 只能取 01 ,所以我们可以将上面的两个式子合并成一个:

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

得到了这个概率分布函数,我们用和前一章节相同的办法求 \theta ,似然函数 L(\theta)

\begin{align*} L(\theta)&=\prod^{m}_{i=1}P(y^{(i)}|x^{(i)};\theta)\\ &=\prod^{m}_{i=1}(h_{\theta}(x^{(i)}))^{y^{{i}}}(1-h_{\theta}(x^{(i)}))^{1-y^{(i)}} \end{align*}

接下来,对两边取对数:

\begin{align*} \ell(\theta)&=\log L(\theta)\\ &=\log\left(\prod^{m}_{i=1}(h_{\theta}(x^{(i)}))^{y^{{i}}}(1-h_{\theta}(x^{(i)}))^{1-y^{(i)}}\right)\\ &=\sum^{m}_{i=1}\left(\log h_{\theta}(x^{(i)})^{y^{(i)}}+\log(1-h_{\theta}(x^{(i)}))^{(1-y^{(i)})}\right)\\ &=\sum^{m}_{i=1}\left(y^{(i)}\log h_{\theta}(x^{(i)})+(1-y^{(i)})\log(1-h_{\theta}(x^{(i)}))\right) \end{align*}

最后,分析该式,得到代价函数:

J(\theta)=-\sum^{m}_{i=1}\left(y^{(i)}\log h_{\theta}(x^{(i)})+(1-y^{(i)})\log(1-h_{\theta}(x^{(i)}))\right)

计算偏导数

对假设函数 h_{\theta}\left(x^{(i)}\right)=\frac{1}{1+e^{-\theta^T x^{(i)}}} 关于 \theta 求导可得:

\begin{align*} \frac{\partial h_{\theta}\left(x^{(i)}\right)}{\partial \theta_{j}}&=\frac{e^{-\theta^T x^{(i)}}x_j^{(i)}}{\left(1+e^{-\theta^T x^{(i)}}\right)^2}\\ \frac{1-\partial h_{\theta}\left(x^{(i)}\right)}{\partial \theta_{j}}&=-\frac{e^{-\theta^T x^{(i)}}x_j^{(i)}}{\left(1+e^{-\theta^T x^{(i)}}\right)^2} \end{align*}

接下来,利用上式得结果,对代价函数关于 \theta 求导:

\begin{align*} \frac{\partial J(\theta)}{\partial \theta_j}&=-\sum_{i} \left[y^{(i)}\frac{e^{-\theta^T x^{(i)}}x_j^{(i)}}{1+e^{-\theta^T x^{(i)}}}-(1-y^{(i)})x_j^{(i)}\right]\\ &=-\left[y^{(i)}\frac{e^{-\theta^T x^{(i)}}}{1+e^{-\theta^T x^{(i)}}}x_j^{(i)}-\frac{x_j^{(i)}}{1+e^{-\theta^T x^{(i)}}}+y^{(i)}\frac{x_j^{(i)}}{1+e^{-\theta^T x^{(i)}}}\right]\\ &=-\sum_{i} x_j^{(i)}\left(-\frac{1}{1+e^{-\theta^T x^{(i)}}}+y^{(i)}\right)\\ &=x_j^{(i)}\sum_{i} \left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)\\ \end{align*}

用矩阵导数的形式转换这个结果:

\begin{align*}\nabla_{\theta} J(\theta)&= \begin{bmatrix} \frac{\partial J(\theta)}{\partial \theta_1}\\ \frac{\partial J(\theta)}{\partial \theta_2}\\ \vdots\\ \frac{\partial J(\theta)}{\partial \theta_n}\\ \end{bmatrix}=\sum_i x^{(i)} \left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) \end{align*}

发布于 2018-02-12 17:25