线性回归

线性回归(Linear Regression)

上篇博客举了这么一个例子:已知的住房面积和住房价格的数据集如下:

$Size~in~Feet^2(x)$ $Price~in~1000’s(y)$
2104 460
1416 232
1534 315
852 178
…… ……

很显然,在这个例子中假设只有房屋的大小才能影响房屋的价格,因为只含有一个特征/输入变量,所以这种问题我们叫做单变量线性回归。如果我们要根据以上的数据集预测某一房屋的住房价格,可以不用像初高中那样用线性回归的方式来预测。

那么我们初高中,包括本科统计学在内学习的线性回归到底是什么呢?

最小二乘法(Least Square Method)

比如说再简单不过的一元线性回归,我们令线性回归方程为:

而损失函数 $J(a,b)$,也就是均方误差(MSE)为:

令损失函数最小,就可以求得 $\hat a,\hat b$:

通过将 $J(a,b)$ 分别对 $a,b$ q求偏导,并令其为 $0$,就可以求得下面的答案:

这就是我们以前死记硬背的公式🙂。

基于均方误差最小化来进行模型求解的方法称为最小二乘法,得到损失函数参数的过程被称作最小二乘参数估计。

正规方程(Normal Equation)

对于线性回归问题来说,很有可能面对的不是一个变量,而是一堆变量。我们可以通过将参数向量化来用最小二乘法估计参数。

一个多变量的关于房价预测的线性回归问题的数据集如下:

Size $x_1$ Number of bedrooms $x_2$ Number of floors $x_3$ Age of home $x_4$ Price $y$
2104 5 1 45 460
1416 3 2 40 232
1534 3 2 30 315
852 2 1 36 178

将$x_0 = 1$放在表的第一列,并且刨除我们的结果向量$y$,组合成的矩阵$X$叫做特征矩阵。

显然,特征矩阵是一个$m\times {(n+1)}$的矩阵。

令$X = {\begin{bmatrix} x0^{(1)}&x_1^{(1)}&\cdots&x_n^{(1)}\ x_0^{(1)}&x_1^{(2)}&\cdots&x_n^{(2)}\ \vdots&\vdots&\ddots&\vdots\ x_0^{(m)}&x_1^{(m)}&\cdots&x_n^{(m)} \end{bmatrix}}{m\times(n+1)}$为有$m$个训练实例,$n$个特征的特征矩阵,$ y=
\begin{bmatrix}
y^{(1)}\y^{(2)}\\vdots\y^{(m)}
\end{bmatrix}$为结果向量,$\theta = \begin{bmatrix}\theta_0\\theta_1\\vdots\\theta_n\end{bmatrix}$为特征参数向量。

代价函数为:

在对代价函数$J(\theta_0,\theta_1\dots\theta_n)$求导之前,先看一下如何对矩阵以及向量求导,在本次求导中,会用到以下三个公式:

其中$\beta,X$是向量,$A$是与$X$无关的矩阵。

代价函数$J(\theta_0,\theta_1\dots\theta_n)=$对特征参数$\theta$进行求导得:

其中$\theta^TX^Ty$为一个数,$\theta^TX^Ty = y^TX\theta$。

当$\frac{\partial}{\partial\theta}J(\theta)=\frac{1}{m}(X^TX\theta-X^Ty)=0$时,$\theta = (X^TX)^{-1}X^Ty$。

所以,假设我们的特征方程$X$与结果向量$y$,我们可以通过正规方程

来解出最优的系数向量$\theta$来确定最优假设。

可能会碰到$X^TX$矩阵不可逆的情况,碰到这种情况可能有以下两种原因:

  • 特征矩阵$X$中有着多余的特征:比如$x_1$是以英尺为尺寸规格计算房子的面积,$x_2$是以平方米为尺寸规格计算房子的面积
  • 数据集过小,或者特征过多,也就是说在$m$小于或等于$n$的时候。

正规方程与梯度下降的比较

梯度下降 正规方程
需要手动选择学习率 $\alpha$ 不需要
需要多次迭代 一次运算得出
当特征数量$n$大时也能较好适用 需要计算$(X^TX)^{-1}$,如果特征数量$n$较大则运算代价大,因为矩阵逆的计算时间复杂度为$O(n^3)$,通常来说当小于$n<10000$ 时还是可以接受的
适用于各种类型的模型 只适用于线性模型,不适合逻辑回归模型等其他模型