sklearn是如何求解线性回归问题的?有没有脱口而出梯度下降,起码我自己下意识的是这么认为的,直到有一次无意中看到sklearn的用户手册,1.1.1.2 一行小小的备注:
The least squares solution is computed using the singular value decomposition of X.
原来它是用SVD来求解的,于是我们来聊下为什么SVD可以干这个活。
线性回归问题就是求解最小二乘(least squares),给定一组先行方程组$Ax = b$,求$x$是什么,这个方程是超定方程(overdetermined),就是说方程组的数量大于未知变量数。最小二乘通过最小化$||b – Ax||^2$得到的$x$作为解,其中$A$是自变量,$b$是因变量。在机器学校领域通常用$x$来标记自变量(features),$y$标记因变量(labels),方便讨论还是用$x$和$A$,最小二乘的目标
$$\min \sum_{i=1}^{m} [b_i – (Ax)_i]^2$$
其中$A$是一个$m \times n$的矩阵,表示我们有$m$个样本$n$个未知数
下面的讨论,我们假设$A$是满秩的。
任意矩阵都可以进行SVD分解,不要问为什么,就是这么牛x,经过SVD分解可以把$m\times n$的矩阵$A$分解成三个矩阵
$$A = U\Sigma V^T$$
其中$U \in R^{m \times m}$是一个正交矩阵,$\Sigma \in R^{m \times n}$的主对角线元素从左上角到右下角依次变小,$A$是满秩的,所以$\Sigma$也是满秩的,$\Sigma$里的元素$\sigma$是$A$的奇异值,它的平方是$A^TA$的特征值或者$AA^T$的top n大的特征值,$V \in R^{n\times n}$的正交矩阵。
$U$和$V$是什么呢?按Prof. Gilbert Strang的说法”I like A transpose A”,于是
$$A^TA = V \Sigma^T U^T U\Sigma V^T = V \Sigma^2 V^T$$
$U \in R^{m \times m}$是正交矩阵,它满足$U^TU =UU^T = \textbf{I}$,$U^T = U^{-1}$,等式右边重写一下得到$V \Sigma ^2 V^{-1}$,这其实是特征分解的定义,看下维基百科的定义:

所以$V$的每一列是$AA^T$的特征向量,$\Sigma^2$里装的是对应的特征值。
再来算一下$AA^T$
$$AA^T = U\Sigma V^T V \Sigma ^T U^T = U \Sigma ^2 U^T$$
所以$U$是$AA^T$的特征向量组成的矩阵。
来看下SVD的用来求解least square的过程
$$Ax = b$$
两边同时乘$A^T$
$$A^TAx = A^Tb$$
对$A$进行SVD分解
$$V\Sigma ^T U^T U \Sigma V^T x = V\Sigma ^TU^T b$$
把那些正交矩阵整合下
$$V \Sigma ^2 V^T x = V \Sigma^ T U^T b$$
左乘$V\Sigma^{-1}$
$$\Sigma V^Tx = U^Tb$$
因为$\Sigma$是对角矩阵,$\Sigma^T = \Sigma$, $\Sigma^{-1} = \frac{1}{\Sigma}$,再左乘$V\Sigma^{-1}$
$$V \Sigma^{-1}\Sigma V^T x = V \Sigma^{-1}U^Tb$$
于是最后剩下
$$x = V\Sigma ^{-1} U^T b$$
其中$V$和$U$可以算出来,$\Sigma^{-1}$就是$\frac{1}{\Sigma}$。
如果$A$是非奇异矩阵(no-singular matrix),即方程是well-determined,矩阵可逆,打眼一看就知道方程的解
$$x = A^{-1}b$$
但是当$A$是不可逆的时候根据上面的推导过程$V\Sigma ^{-1} U^T$承担了$A^{-1}$的任务,于是我们叫它假的逆矩阵,伪逆矩阵(pseudoinverse),标记为$A^{+}$,维基百科请自行阅读。
大概就是这么个过程,此致敬礼。