linear regression 的公式手推相关

本文有关多元linear Regression的损失函数从极大似然估计的角度的推导以及梯度下降算法。纯手打,^^

损失函数

我们的模型为

$$
h_{\theta}(x) = \theta_0 + \theta_1x + \theta_2 x^2 … = \theta ^ TX
$$

似然函数为:

$$y^i = \theta ^ T x^i + \epsilon ^ i$$

,残差用$\epsilon$表示,对于每一个样本点的残差$\epsilon^i$,(注意以下标号中上标i表示第i个样本点),有:

$$
\epsilon^i = y^i - h_{\theta}(x^i) = y^i - \theta ^ T x^i
$$

那么我们有假设所有的残差根据中心极限定理,其密度函数$p(\epsilon^i)$符合均值为0,方差为$\sigma^2$的高斯分布,即

$$
p(\epsilon^i) = \frac{1}{\sqrt {2\pi} \sigma} \exp (-\frac{(\epsilon^i)^2}{2 \sigma ^2}) \
= \frac{1}{\sqrt {2\pi} \sigma} \exp (-\frac{(y^i - \theta ^ T x^i)^2}{2 \sigma ^2})
$$

那么,似然函数就是所有样本点的出现的概率乘积,即

$$
L(\theta) = \prod_{i=1}^{m} p(\epsilon^i) \
$$

$$
= \prod_{i=1}^{m} \frac{1}{\sqrt {2\pi} \sigma} \exp (-\frac{(y^i - \theta ^ T x^i)^2}{2 \sigma ^2})
$$

我们最终是求$\theta$的最优解,于是对似然函数取对数,

$$
l(\theta) = \log \left(\prod_{i=1}^{m} \frac{1}{\sqrt {2\pi} \sigma} \exp (-\frac{(y^i - \theta ^ T x^i)^2}{2 \sigma ^2})\right) \
$$

$$
= m \log \frac{1}{\sqrt {2\pi} \sigma} - \frac{1}{2 \sigma ^2} \sum _{i=1}^{m} (y^i - \theta ^ T x^i)^2
$$

扔掉常数项,就得到了线性回归的目标函数或error function,

$$
J(\theta) = \frac{1}{2} \sum_{i=1}^m (h_{\theta}(x^i) - y^i) ^ 2
$$

最小二乘法

以上可以把目标函数写成这样的形式:

$$
J(\theta) = \frac{1}{2} (X \theta - y)^T (X \theta - y)
$$

对向量$\theta$求导,

$$
\frac{\partial J(\theta)}{\partial \theta} = X^T(X \theta - y)
$$

直接令上式为零,得到

$$
\theta = (X^TX)^{-1} X^Ty
$$

最小二乘法解线性回归理论很漂亮,但是因为复杂度的原因实际上不常用。因为矩阵求逆的复杂度为$O(n^3)$,很慢。另外一种解释是通常X不是满秩的,譬如生物学科里面的数据,特征有成千上万个,数据却少得可怜,这种通常是解不出特定的解的。

梯度下降算法

常用的还是梯度下降法。以上得到了损失函数为

$$
J(\theta) = \frac{1}{2} \sum_{i=1}^m (h_{\theta}(x^i) - y^i) ^ 2
$$

那么,通过对$\theta$的各分量$\theta_i$根据梯度更新其值即可

$$
\theta_j = \theta_j - \alpha \frac{\partial J(\theta)}{\partial \theta_j}
$$

而上式中

$$
\frac {\partial J(\theta)}{\partial \theta_i} =
$$

$$
\frac{1}{2m} \sum_{i=1}^m \frac{\partial(h_{\theta}(x^i) - y^i) ^ 2}{\partial \theta_j}
$$

$$
= \frac{2}{2m} \sum_{i=1}^m (h_{\theta}(x^i) - y^i) \frac{\partial h_{\theta}(x^i)}{\partial \theta_j}
$$

又上式中

$$
\frac{\partial h_{\theta}(x^i)}{\partial \theta_j} =
\frac{\partial (\theta_0 x_0^i + \theta_1 x_1^i + \cdots+ \theta_j x_j^i + \cdots)}{\partial \theta_j} \
= \frac{\partial ( \theta_j x_j^i )}{\partial \theta_j}
= x_j^i
$$

一步步代上去可得

$$
\theta_j = \theta_j - \alpha \frac{1}{m} \sum_{i=1}^m {(h_{\theta}(x^i) - y^i)} x_j^i
$$

这就是梯度下降法更新多元线性回归的公式啦!^_^

PS:有细心的同学可能发现上面的式子中添加了$\frac{1}{m}$,可能有疑惑,想问有什么区别。回答:其实是一样的,因为在机器学习中,我们并不关心最优化的时候,目标函数的极值是多少,而我们只关注,目标函数取极值的时候,参数的值是多少。所以因为这个原因,我们经常为了式子简便而对目标函数做缩放,比如上面的取对数,对数的底是e还是2根本没有区别。