线代:1.9SVD的应用与多元线性回归

任务详解:

这节课主要介绍了SVD分解的应用,多元线性回归等知识点。
掌握目标:
1、掌握svd分解的应用以及意义
2、掌握多元线性回归,以及矩阵表达形式,以及样本个数和维数不同情况下解的情况

Svd分解的应用

先回顾SVD,就是在矩阵A左右两边分别乘以 U H U^H V V ,得到一个对称矩阵,最后通过证明得到了下面的形式:
A = U [ Σ 0 0 0 ] V T (1) A=U\begin{bmatrix} \Sigma &0 \\ 0 & 0 \end{bmatrix}V^T\tag{1}
上式中各自的shape如下:
A:m×n
U:m×m
[ Σ 0 0 0 ] \begin{bmatrix} \Sigma &0 \\ 0 & 0 \end{bmatrix} :m×n
V T V^T :n×n
如果矩阵A的秩R(A)=r,则 Σ \Sigma 是r×r对角阵,对角线上的元素就是 A T A A^TA 的不为0的特征值,把U写成列向量的形式 [ u 1 , u 2 , . . . , u r , u r + 1 , . . . , u m ] [u_1,u_2,...,u_r,u_{r+1},...,u_m] ,每个 u i u_i 都是m维列向量,同样的,V可以写为: [ v 1 , v 2 , . . . , v r , v r + 1 , . . . , v n ] [v_1,v_2,...,v_r,v_{r+1},...,v_n] ,转置后变成: [ v 1 T v r T v n T ] \begin{bmatrix}v_1^T\\\vdots\\v_r^T\\\vdots\\v_n^T\end{bmatrix}
因此,等式(1)可以写为:
A = [ u 1 , u 2 , . . . , u r , u r + 1 , . . . , u m ] [ σ 1 0 0 σ 2 0 0 0 σ r 0 0 0 0 0 ] m × n [ v 1 T v r T v n T ] A=[u_1,u_2,...,u_r,u_{r+1},...,u_m]\begin{bmatrix} \sigma_1&0&\cdots \\0&\sigma_2&0&\cdots \\\vdots&0&\ddots& \\&\vdots&0&\sigma_r&0 \\&&&&0 \\&&&&&\ddots&0 \\&&&&&0&0 \end{bmatrix}_{m×n}\begin{bmatrix}v_1^T\\\vdots\\v_r^T\\\vdots\\v_n^T\end{bmatrix}
展开,展开过程中可以注意到U的m-r和V的转置的n-r项都是没什么用的,上式等于。
A = σ 1 u 1 v 1 T + σ 2 u 2 v 2 T + . . . + σ r u r v r T (2) A=\sigma_1u_1v_1^T+\sigma_2u_2v_2^T+...+\sigma_ru_rv_r^T\tag{2}
等式右边里面的每一项, u i u_i 是m×1的, v i T v_i^T 是1×n的, u i v i T u_iv_i^T 就是m×n的,和A的维度刚好对上。
这里面的 σ i \sigma_i 之间是有大小关系的,根据上节课的定理:
---------------------------------------------------------割你没商量1------------------------------------------------------
A C r m × n ( r > 0 ) A\in C_r^{m\times n}(r>0) A H A A^HA 的特征值为 λ 1 λ 2 λ r > λ r + 1 = = λ n = 0 \lambda_1≥\lambda_2≥…≥\lambda_r>\lambda_{r+1}=…=\lambda_n=0 则称 σ i = λ i ( i = 1 , 2 , , n ) \sigma_i=\sqrt{\lambda_i}(i=1,2,…,n) 为A的奇异值;当A为零矩阵时,它的奇异值都是0。
---------------------------------------------------------割你没商量1------------------------------------------------------
因此有:
σ 1 σ 2 σ r > 0 (3) \sigma_1≥\sigma_2≥…≥\sigma_r>0\tag{3}
接下来根据这个性质来看看这个用在具体应用上有什么好处

1.图像压缩

上面等式(2)左边的A是m×n的,如果看成一个图像,每个图像点需要一个float(4个字节来存储),那么在存储这个图像的时候,需要m×n×4个字节。
再看等式(2)右边的 u i v i T u_iv_i^T 虽然也是m×n的,但是 u i u_i 是m×1的,只有m个数, v i T v_i^T 是1×n的,只有n个数,所以存储任意一个 u i v i T u_iv_i^T 只需要(m+n)×4个字节。
由于式子(3),所以整个等式(2)右边有:
σ 1 u 1 v 1 T > σ 2 u 2 v 2 T > . . . > σ r u r v r T \sigma_1u_1v_1^T>\sigma_2u_2v_2^T>...>\sigma_ru_rv_r^T
所以,A可以用 σ i u i v i T \sigma_iu_iv_i^T 的前面k项( k r k\ll r )来近似的表示,则图片存储需要的空间为:
( m + n + 1 ) × 4 × k (m+n+1)×4×k
其中1代表 σ \sigma 占用的空间,可以看到 ( m + n + 1 ) × 4 × k 4 m n (m+n+1)×4×k\ll4mn
也就达到了图像压缩的目的。
u i v i T u_iv_i^T 的模长是1,所以采用这种方式存储图像得到的损失为:
E r r ( k ) = 1 i = 1 k σ i 2 i = 1 r σ i 2 Err(k)=1-\frac{\sum_{i=1}^k\sigma_i^2}{\sum_{i=1}^r\sigma_i^2}
k越大,误差越小。
在这里插入图片描述

传统网络图片传输与现代传输的原理

传统网络传输都是按行依次传输,所以图像显示过程如下:
在这里插入图片描述
压缩传输则会是传输 σ i u i v i T \sigma_iu_iv_i^T ,所以图片会从模糊到清晰的显示过程。

2.矩阵乘法加速

假设A的shape是200×100的,A用SVD分解变成:
A = σ 1 u 1 v 1 T + σ 2 u 2 v 2 T + . . . + σ r u r v r T A=\sigma_1u_1v_1^T+\sigma_2u_2v_2^T+...+\sigma_ru_rv_r^T
取前25项近似表示A:
A σ 1 u 1 v 1 T + σ 2 u 2 v 2 T + . . . + σ 25 u 25 v 25 T A\approx\sigma_1u_1v_1^T+\sigma_2u_2v_2^T+...+\sigma_{25}u_{25}v_{25}^T
= [ u 1 , u 2 , . . . , u r , u 25 ] [ σ 1 0 0 σ 2 0 0 0 σ 25 ] m × n [ v 1 T v 25 T ] =[u_1,u_2,...,u_r,u_{25}]\begin{bmatrix} \sigma_1&0&\cdots \\0&\sigma_2&0&\cdots \\\vdots&0&\ddots& \\&\vdots&0&\sigma_{25} \end{bmatrix}_{m×n}\begin{bmatrix}v_1^T\\\vdots\\v_{25}^T\end{bmatrix}
= U 200 × 25 Λ 25 × 25 V 25 × 100 =U_{200\times25}\Lambda_{25\times25}V_{25\times100}
把前面两个看成一项,也就是近似后A相当于 M 200 × 25 N 25 × 100 M_{200\times25}N_{25\times100}
现在先来看原矩阵A与一个100×1的列向量x做乘法,Ax计算次数为200×100=2w次;
如果计算MNx,Nx计算次数为25×100,计算后shape为25×1,M再和25×1的列向量乘法运算,计算次数为25×200,所以整个计算次数为25×200+25×100=7500次。

多元线性回归

现在又N个样本 x i x_i ,每个 x i x_i 都是n维的。
x 1 , x 2 , . . . , x N , x i n x_1,x_2,...,x_N,x_i\in \real^n
每个 x i x_i 都对应于一个 y i y_i
y 1 , y 2 , . . . , y N , y i 1 y_1,y_2,...,y_N,y_i\in \real^1
下面的式子中 x 11 x_{11} 代表第一个样本的第一个分量, a 1 a_1 对应其系数,以此类推:
y 1 = x 11 a 1 + x 12 a 2 + + x 1 n a n ( + b ) y_1=x_{11}a_1+x_{12}a_2+\cdots+x_{1n}a_n(+b)
y 2 = x 21 a 1 + x 22 a 2 + + x 2 n a n ( + b ) y_2=x_{21}a_1+x_{22}a_2+\cdots+x_{2n}a_n(+b)
\vdots
y N = x N 1 a 1 + x N 2 a 2 + + x N N n a n ( + b ) y_N=x_{N1}a_1+x_{N2}a_2+\cdots+x_{NNn}a_n(+b)
关于bias的b可以看作 x 0 b x^0b ,从而简化到x的系数中,这里就先认为已经包含了bias,先省略b。
上面的式子中我们想要找到一组参数 a i a_i 使得下面的等式(1)成立。
[ x 11 x 12 x 1 n x 21 x 22 x 2 n x N 1 x N 2 x N n ] [ a 1 a 2 a n ] = [ y 1 y 2 y N ] (4) \begin{bmatrix} x_{11} &x_{12}&\cdots&x_{1n} \\ x_{21} &x_{22}&\cdots&x_{2n} \\ \vdots&\vdots&\ddots&\vdots\\ x_{N1} &x_{N2}&\cdots&x_{Nn} \end{bmatrix}\begin{bmatrix}a_1\\a_2\\\vdots\\a_n\end{bmatrix}=\begin{bmatrix}y_1\\y_2\\\vdots\\y_N\end{bmatrix}\tag{4}
用大X表示x矩阵,上面的等式(4),可以写为:
X N × n a n × 1 = Y N × 1 (5) X_{N×n}a_{n×1}=Y_{N×1}\tag{5}
也就是要解这个线性方程,得到 a n × 1 a_{n×1} ,
当x的空间维度和样本个数一样的时候,也就是 N = n N=n (X是方阵),且 X N × n X_{N×n} 可逆时,等式(5)两边同时乘以X的逆矩阵:
a = X 1 Y a=X^{-1}Y
但是这个是理想情况,一般情况下 N n N\neq n ,也就是理论上等式(5)不可能成立,这个时候退而求其次,想办法要使得等式(5)左右两边尽可能的接近(二者相减的模长最小):
m i n X a Y 2 = J min||Xa-Y||^2=J
要求J的最小值就是要对J求导。。。注意:这里a才是变量,其他看成是参数:
J = X a Y 2 = ( X a Y ) T ( X a Y ) = ( a T X T Y T ) ( X a Y ) J=||Xa-Y||^2=(Xa-Y)^T(Xa-Y)=(a^TX^T-Y^T)(Xa-Y)
J = a T X T X a a T X T Y Y T X a + Y T Y J=a^TX^TXa-a^TX^TY-Y^TXa+Y^TY
---------------------------------------------------------割你没商量2------------------------------------------------------
这里,如果a和b都是向量,那么有 a T b = b T a a^Tb=b^Ta ,上面的式子中的第二项:Y是向量,X是矩阵, X T X^T 也是矩阵, X T Y X^TY 还是一个向量,所以: a T x T Y = ( x T Y ) T a a^Tx^TY=(x^TY)^Ta ,上面的式子变为:
---------------------------------------------------------割你没商量2------------------------------------------------------
J = a T X T X a ( X T Y ) T a Y T X a + Y T Y J=a^TX^TXa-(X^TY)^Ta-Y^TXa+Y^TY

J = a T X T X a 2 Y T X a + Y 2 J=a^TX^TXa-2Y^TXa+||Y||^2
接下来对a求偏导:
---------------------------------------------------------割你没商量3------------------------------------------------------
f ( x ) = x T A x > f ( x ) x = ( A + A T ) x f(x)=x^TAx------>\frac{\partial f(x)}{\partial x}=(A+A^T)x
所以: a T x T x a a^Tx^Txa 中a相当于x, x T x x^Tx 相当于A
f ( x ) = A T x > f ( x ) x = A f(x)=A^Tx------>\frac{\partial f(x)}{\partial x}=A
---------------------------------------------------------割你没商量3------------------------------------------------------
由上面的的求导公式可得:
J a = ( 2 X T X ) a 2 ( Y T X ) T (6) \frac{\partial J}{\partial a}=(2X^TX)a-2(Y^TX)^T\tag{6}
令公式(6)=0:
X T X a X T Y = 0 X^TXa-X^TY=0
X T X a = X T Y (7) X^TXa=X^TY\tag{7}
---------------------------------------------------------割你没商量4------------------------------------------------------
X T X X^TX 不一定可逆,因为它是半正定的(下面用试探矩阵u去证明一下):
u T X T X u = ( X u ) T ( X u ) = X u 2 0 u^TX^TXu=(Xu)^T(Xu)=||Xu||^2\geq0
如果是完全大于0就是正定了。由于 X T X X^TX 不一定可逆,下面要分两种情况进行讨论
---------------------------------------------------------割你没商量4------------------------------------------------------

情况1,N>n,样本数>维度(参数个数)

如: N = 5 , n = 3 , ( X T X ) 3 × 3 N=5,n=3,(X^TX)_{3\times3} 一般是可逆的。
这里 X T X X^TX 的维度是3×3,因为 X X 的维度是 N × n N\times n (公式5里面有标注),所以 X T X^T 的维度是 n × N n\times N X T X X^TX 的维度就是 n × n n\times n

这里为什么 ( X T X ) 3 × 3 (X^TX)_{3\times3} 一般是可逆的呢?
根据上节课SVD分解证明的先导推论里面有 r a n k ( A H A ) = r a n k A rank(A^HA)=rankA
所以这里有 r a n k ( X T X ) = r a n k ( X ) rank(X^TX)=rank(X) ,由于N>n,一般来说这里 r a n k ( X ) = n rank(X)=n ,即 r a n k ( X ) = 3 rank(X)=3 (除非在三维空间中5个样本点任意三个样本点都是线性相关的,才会有 r a n k ( X ) = 2 rank(X)=2
所以 ( X T X ) (X^TX) 一般是可逆的,因此把等式(7)两边同时乘上 ( X T X ) (X^TX) 的逆:、
( X T X ) T X T X a = ( X T X ) T X T Y (X^TX)^TX^TXa=(X^TX)^TX^TY
a = ( X T X ) T X T Y a=(X^TX)^TX^TY
到这里就把a解出来了,也吧a的右边的表达式称为X的伪逆矩阵。

情况2,N<n,样本数<维度(参数个数)

如: N = 3 , n = 5 , ( X T X ) 5 × 5 N=3,n=5,(X^TX)_{5\times5} 不可逆。
因为之前有结论: R ( A B ) < < R ( A ) o r R ( B ) R(AB)<<R(A)orR(B) ,所以
r a n k ( X T X ) r a n k ( X ) 3 rank(X^TX)\leq rank(X)\leq3
所以 ( X T X ) (X^TX) 不可逆
这个情况参数比样本数要多,也就是出现了过拟合的现象。为了解决这个现象,我们通常是要采用正则化来解决,也就是:
J = X a Y 2 + λ a 2 J=||Xa-Y||^2+\lambda||a||^2
求导的结果也就变成:
J a = ( 2 X T X ) a 2 ( Y T X ) T + 2 λ a (8) \frac{\partial J}{\partial a}=(2X^TX)a-2(Y^TX)^T+2\lambda a\tag{8}
令公式(8)等于0,并化简:
( X T X ) a X T Y + λ a (X^TX)a-X^TY+\lambda a
( X T X + λ I ) a = X T Y (X^TX+\lambda I)a=X^TY
---------------------------------------------------------割你没商量5------------------------------------------------------
( X T X + λ I ) (X^TX+\lambda I) 一定可逆,下面用试探矩阵u(试探矩阵都是不等于0的)去证明一下:
u T ( X T X + λ I ) u = u T X T X u + u T λ I u = ( X u ) T X u + λ u T u (9) u^T(X^TX+\lambda I)u=u^TX^TXu+u^T\lambda Iu=(Xu)^TXu+\lambda u^Tu\tag{9}
上面公式(9)中: ( X u ) T X u = X u 2 0 (Xu)^TXu=||Xu||^2\geq0 λ > 0 \lambda>0 u T u = u 2 > 0 u^Tu=||u||^2>0 ,所以公式(9)整体恒大于0,所以公式(9)是正定的,其对应的特征值 λ i > 0 \lambda_i>0 ,且一定可逆。
---------------------------------------------------------割你没商量5------------------------------------------------------
由于 ( X T X + λ I ) (X^TX+\lambda I) 一定可逆,解出a
a = ( X T X + λ I ) T X T Y a=(X^TX+\lambda I)^TX^TY
这里,我们通常也把 J = X a Y 2 + λ a 2 J=||Xa-Y||^2+\lambda||a||^2 的形式称为:岭回归。
为什么叫岭回归呢?因为这个东西的形式就是在对角线上加了一项 λ \lambda ,就好像中间对角线好比一道山岭,通过加上 λ \lambda 使其更加的高耸。
还有一种解释方案就是利用秩的概念来解出a。

发布了140 篇原创文章 · 获赞 35 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/oldmao_2001/article/details/103648250