Linear Regression--机器学习笔记1

写在前面

本系列是Machine Learning-Andrew Ng学习后整理的读书笔记。

本节主要介绍线性回归以及线性回归中中的参数$\theta$求解所采用的正规方程(Normal equation)与梯度下降法(Gradient Descent)

线性回归

标准的线性模型形式如下,其中$\boldsymbol{x}=(x_1,x_2,\dotsc,x_m)$,$\boldsymbol{\theta}=(\theta_1,\theta_2,\dotsc,\theta_m)$
$$
h(\boldsymbol{x})=\theta_1x_1+\theta_2x_2+\dotsc+\theta_mx_m+b \tag{1}
$$
注意,多项式回归(Polynomial Regression)也是线性回归的一种形式。
$$
h(\boldsymbol{x})=\theta_1x_1+\theta_2x_2^2+\dotsc+\theta_m\sqrt{x_m}+b
$$
在上式中,将$x_2^2,\sqrt{x_n}$替换成$x_2,x_m$即可得到式$1$的形式。

当然,若令$x_0=1$,则式$1$可进一步化简为
$$
h(\boldsymbol{x})= \boldsymbol{X}\boldsymbol{\hat{\theta}}^T \tag{2}
$$
其中
$$
\boldsymbol{\hat{\theta}}=(\theta_1,\theta_2,\dotsc,\theta_m,b)
$$

$$
\boldsymbol{X}=
\begin{pmatrix}
\boldsymbol{x}_1^T & 1 \\
\boldsymbol{x}_2^T & 1 \\
\vdots & \vdots \\
\boldsymbol{x}_m^T & 1
\end{pmatrix}
$$

代价函数

为了衡量回归模型的准确性,定义一种代价函数(cost funciton)来表示测试结果与真实结果之间的误差。常见的代价函数$J(\theta)$如下
$$
J(\boldsymbol{\theta})=\frac{1}{2m}\displaystyle\sum_{i= 1}^{m}(h_\boldsymbol{\theta}(\boldsymbol{x})-\boldsymbol{y})^2 \tag{3}
$$
回归模型约精确,上述代价函数的值也就越小。因而,求解参数$\boldsymbol{\theta}$最优解即求
$$
\boldsymbol{\theta}^*=\min \limits_{\boldsymbol{\theta}\in \mathbb{R}}J(\boldsymbol{\theta}) \tag{4}
$$

正规方程

将$2$式代入$4$式,则有
$$
\boldsymbol{\hat{\theta}}^*=\min \limits_{\boldsymbol{\hat{\theta}}\in \mathbb{R}}(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\hat{\theta}}^T)^T(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\hat{\theta}}^T)
$$
为了求$J(\hat{\theta})​$极小值,对$\hat{\theta}​$求导得到
$$
\frac{\partial J(\boldsymbol{\hat{\theta}})}{\partial \boldsymbol{\hat{\theta}}}=2\boldsymbol{X}^T(\boldsymbol{X}\boldsymbol{\hat{\theta}}-\boldsymbol{y})
$$

进而得到
$$
\boldsymbol{\hat{\theta}}^*=(\boldsymbol{X}^T\boldsymbol{X})^{-1}\boldsymbol{X}^T\boldsymbol{y} \tag{5}
$$

注意

对于式$5$,显然若矩阵$\boldsymbol{X}^T\boldsymbol{X}$不可逆,则上式即不成立,而出现上述情况的可能原因主要有两种

1.各个特征之间不独立,相关联,如$x_1=米,x_2=公里$;

2.特征数量大于所给训练样本数。

(批量)梯度下降

梯度下降算法((Batch) Gradient Descent),即先定下一组预设参数$\boldsymbol{\hat{\theta}}$,通常可以是随机生成的,不断微调$h(\boldsymbol{\hat{\theta}})$的参数直到达到代价$J(\boldsymbol{\hat{\theta}})$的局部最小值(Local Minimum)。其中,$\boldsymbol{\hat{\theta}}$的更新公式如下
$$
\boldsymbol{\hat{\theta}}:=\boldsymbol{\hat{\theta}}-\alpha \frac{\partial}{\partial{\boldsymbol{\hat{\theta}}}}J(\boldsymbol{\hat{\theta}}) \tag{6}
$$
注意,每个$\theta$必须是同步替换,即待所有$\theta$都迭代完毕后,再将新的$\boldsymbol{\hat{\theta}}$代入式$2$中。

对于当前代价函数,$\theta_i$更新公式如下
$$
\theta_j :=\theta_j -\alpha \frac{1}{m}\sum_{i=0}^{m}(h_\boldsymbol{\hat{\theta}}(x^{(i)})-y^{(i)})x_j^{(i)} \tag{7}
$$

向量化

为了加速程序运算,避免使用for循环,可将式$7$整合为向量形式$\boldsymbol{\hat{\theta}}:=\boldsymbol{\hat{\theta}}-\alpha \frac{1}{m}\boldsymbol{\beta}$。注意到
$$
\begin{align}
\sum_{i=1}^{m}(h_\boldsymbol{\hat{\theta}}(x^{(i)})-y^{(i)})x_j^{(i)} & =(h(x^{(1)})-y^{(1)})*x_j^{(1)}+(h(x^{(2)})-y^{(2)})x_j^{(2)}+… \\
& =((h(x^{(1)})-y^{(1)}),(h(x^{(2)})-y^{(2)}),…)(x_j^{(1)},x_j^{(2)},…)^T \\
&=(h_{\boldsymbol{\hat{\theta}}}(\boldsymbol{X})-\boldsymbol{y})^T\boldsymbol{x_j} = \boldsymbol{x_j}^T(h_{\boldsymbol{\hat{\theta}}}(\boldsymbol{X})-\boldsymbol{y})
\end{align}
$$
其中$h_{\boldsymbol{\hat{\theta}}}(\boldsymbol{X})-\boldsymbol{y}$与$\boldsymbol{x_j}$都是列向量。$\boldsymbol{x_j}$表示第$j$个属性的$m$个样本值。


$$
\boldsymbol{\beta}=\begin{pmatrix}
\boldsymbol{x_1}^T(h_{\boldsymbol{\hat{\theta}}}(\boldsymbol{X})-\boldsymbol{y}) \\
\boldsymbol{x_2}^T(h_{\boldsymbol{\hat{\theta}}}(\boldsymbol{X})-\boldsymbol{y}) \\
\vdots \\
\boldsymbol{x_n}^T(h_{\boldsymbol{\hat{\theta}}}(\boldsymbol{X})-\boldsymbol{y})
\end{pmatrix}
=\begin{pmatrix}
\boldsymbol{x_1}&\boldsymbol{x_2}&\dots &\boldsymbol{x_n}
\end{pmatrix}^T(h_{\boldsymbol{\hat{\theta}}}(\boldsymbol{X})-\boldsymbol{y})
=\boldsymbol{X}^T(h_{\boldsymbol{\hat{\theta}}}(\boldsymbol{X})-\boldsymbol{y})
$$
因而,式$7$向量化如下
$$
\boldsymbol{\hat{\theta}}:=\boldsymbol{\hat{\theta}}-\alpha \frac{1}{m}\boldsymbol{X}^T(h_{\boldsymbol{\hat{\theta}}}(\boldsymbol{X})-\boldsymbol{y})
$$

特征缩放

即特征归一化处理,为了加速代价函数的收敛速度,应使得每个特征值缩放到大致相同的范围内。

常见的缩放范围是$-1\sim 1$,具体缩放方式
$$
x=\frac{x-\mu}{s}
$$
其中,$\mu$是均值,$s$是标准差。

本文标题:Linear Regression--机器学习笔记1

文章作者:Lumo Wang

发布时间:2018年03月08日 - 10:03

最后更新:2018年11月07日 - 16:11

原始链接:https://luameows.github.io/2018/03/08/学习笔记-机器学习笔记1-线性回归/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

请我喝杯咖啡,我会继续熬夜的~