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^{+}$,维基百科请自行阅读。

大概就是这么个过程,此致敬礼。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注