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 {2pi} sigma} exp (-frac{(epsilon^i)^2}{2 sigma ^2})
= frac{1}{sqrt {2pi} 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 {2pi} 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 {2pi} sigma} exp (-frac{(y^i – theta ^ T x^i)^2}{2 sigma ^2})right)
$$

$$
= m log frac{1}{sqrt {2pi} 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根本没有区别。

 

Leave a Comment

Your email address will not be published.