机器学习之线性和逻辑回归再理解

166 阅读3分钟
原文链接: github.com

线性回归再理解

目前已有的理解,使用假设函数$h(x)  = \sum_{i=0}^{n}\theta_ix_i = \theta^Tx$来的得到我们预测的值。为了是预测值接近我们给的标签值y,使用目标(损失)函数 $J(\theta) = \frac{1}{2}\sum_{i=1}^{m}(h_\theta(x^{(i)}) - y^{(i)})^2$,通过优化参数是的目标函数尽可能小,来得到我们的参数值 $\theta$

最小二乘法

通过选择$\theta$来最小化$J(\theta)$。初始化$\theta$, 然后使用梯度下降算法进行更新, $\theta_j := \theta_j - \alpha\frac{\partial }{\partial\theta_j}J(\theta)$。公式中计算偏导数的过程如下:

$\frac{\partial }{\partial\theta_j}J(\theta) = \frac{\partial }{\partial\theta_j}\frac{1}{2}(h_\theta(x) - y)^2
\\= 2 \cdot \frac{1}{2}(h_\theta(x) - y) \cdot \frac{\partial }{\partial\theta_j}(h_\theta(x) - y) \\= (h_\theta(x) - y) \cdot
\frac{\partial }{\partial\theta_j}(\sum_{i=0}^{n}\theta_ix_i - y) \\= (h_\theta(x) - y) \cdot x_i$

因此,可以得到梯度下降更新算法的公式
重复计算,直到收敛:$ \theta_j := \theta_j + \alpha \sum_{i=1}^{m}(y^{(i)} - h_\theta(x^{(i)}))x_j^{(i)}$(对每一个j)

标准方程解法如下:$\theta=(X^TX)^{-1}X^T\bar{y}$

可能性推断

下面是本文章重点介绍的内容,为什么使用最小均方作为损失度量,有其他的原因吗。下面给出一个可能性假设:
假设目标函数与目标值之间关系如下:
$y^{(i)} = \theta^Tx^{(i)} + \epsilon ^{(i)}$, 由目标函数加上一个误差项组成。
这里假设误差独立分布,满足高斯分布(标准分布), 及 $ \epsilon ^{(i)} \sim \mathcal N(0, \sigma^2 )$, 均值为0, 方差为$\sigma^2$的分布。 可以得到其概率密度函数为:
$p(\epsilon^{(i)}) = \frac{1}{\sqrt{2\pi\sigma}}exp\left ( -\frac{(\epsilon^{(i)})^2}{2\sigma^2}\right )$, 可以转换成如下的形式:
$p(y^{{(i)}}| x^{(i)}; \theta)) = \frac{1}{\sqrt{2\pi\sigma}}exp\left ( -\frac{(y^{(i)} - \theta^T(x^{(i)})^2}{2\sigma^2}\right )$
表示在给定$x和\theta情况下y$的分布。因为x和y是确定的,因此可以构造似然函数,求什么样的$\theta$能满足上述条件。 似然函数如下: $L(\theta) = L(\theta:X, \vec{y}) = p(\vec y|X;\theta)$

基于上面$\epsilon^{(i)} $的独立性假设, 上述似然函数可以写作:
$L(\theta) = \prod_{i=1}^{m}p(\vec y|X;\theta) = \prod_{i=1}^{m}\frac{1}{\sqrt{2\pi\sigma}}exp\left ( -\frac{(y^{(i)} - \theta^T(x^{(i)})^2}{2\sigma^2}\right )$
因此,有如上的可能性模型,怎么去得到最好的参数。可以使用最大似然估计, 选择合适的$\theta$ 来使似然函数去的最大值。因为$L(\theta)$的单调性,可以取对数,其得到的极值点相同, 方便求导。其偏导数为0的点即为极值点。
$l(\theta) = L(\theta) \\ 
=log  \prod_{i=1}^{m}p(\vec y|X;\theta) \\
= log \prod_{i=1}^{m}\frac{1}{\sqrt{2\pi\sigma}}exp\left ( -\frac{(y^{(i)} - \theta^T(x^{(i)})^2}{2\sigma^2}\right ) \\
=\sum_{i=1}^{m} log \frac{1}{\sqrt{2\pi\sigma}}exp\left ( -\frac{(y^{(i)} - \theta^T(x^{(i)})^2}{2\sigma^2}\right ) \\
= m\cdot log \frac{1}{\sqrt{2\pi\sigma}} - \frac{1}{\sigma^2} \cdot \frac{1}{2} \sum_{i=1}^{m}(y^{(i)} - \theta^Tx^{(i)})^2$

经过计算,要使函数去的最大值,则后一项尽可能的小,$\frac{1}{2} \sum_{i=1}^{m}(y^{(i)} - \theta^Tx^{(i)})^2$。 可以解释开始的问题,为什么要用最小均方最为损失度量。

In [ ]:

逻辑回归再理解

其实逻辑回归的大部分过程也和上面一样,包括独立性假设及其分布,最大似然的计算。下面简单叙述一下过程。

与线性回归类似,通过给定的x预测y, 而y只有0,1两个取值,因此使用逻辑函数进行转换:
$h_\theta(x) = g(\theta^T x) = \frac{1}{1+e^{-\theta^Tx}},  g(z) = \frac{1}{1+e^{-z}}$ 后续需要进行求导,求导如下:
${g}' = \frac{d}{dz}\frac{1}{1+e^{-z}} \\
= \frac{1}{(1+e^{-z})^2} (e^{-z}) \\
=\frac{1}{(1+e^{-z})^2}(1 - \frac{1}{1 + e^{-z}}) \\
= g(z)(1-g(z))$

有了上述回归模型,怎么确定$\theta$。类似上述线性回归模型,通过做一些可能性假设,求似然函数的最大值。 假设以下情况: $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}$

假设m训练实例独立生成,似然函数如下:
$L(\theta) = p(\vec{y}|X, \theta) \\= \prod_{i=1}^{m}p( y*{(i)}|x^{(i)}, \theta) \\= \prod_{i=1}^{m} (h_\theta(x))^{y^{(i)}}(1 -  h_\theta(x))^{1-y^{(i)}}$
去对数之后可以很轻易的求的:
$l(\theta) = logL(\theta) = p(\vec{y}|X, \theta) \\
= \sum_{i=1}^{m} {y^{(i)}}log(h(x^{(i)})) + (1-y^{(i)})log(1 -  h(x^{(i)}))$
下一步也是类似,怎么求得似然函数的最大值。使用梯度提升:更新参数的值:
$\theta := \theta + \alpha \bigtriangledown _\theta l(\theta)$
其梯度计算过程如下:
$\frac{\partial }{\partial_j}l(\theta) = \left ( y\frac{1}{g(\theta^Tx)} - (1-y)\frac{1}{1 - g(\theta^Tx)} \right )\frac{\partial }{\partial_j}g(\theta^Tx) \\= \left ( y\frac{1}{g(\theta^Tx)} - (1-y)\frac{1}{1 - g(\theta^Tx)} \right )g(\theta^Tx)(1-g(\theta^Tx))\frac{\partial }{\partial_j}\theta^Tx \\= (y(1-g(\theta^Tx))  - (1-y)g(\theta^Tx))x_j \\
= (y-h_\theta(x))x_j$
因此更新参数如下:
$ \theta_j := \theta_j + \alpha \sum_{i=1}^{m}(y^{(i)} - h_\theta(x^{(i)}))x_j^{(i)}$(对每一个j)

如果比较上述两个参数更新的公式,可以发现是相同的,但注意,不是同一个算法,因为定义的$h(\theta^Tx)$不是一样的。 感知机的算法和推到过程也是类似的。

In [ ]: