线性代数
对称矩阵和矩阵的SVD分解
完美的对称矩阵
对称矩阵即矩阵的所有元素关于主对角线对称:
$$
\begin{pmatrix}
1&0\
0&1
\end{pmatrix} \quad \begin{pmatrix}
1 & \sqrt{2}\
\sqrt{2} & 3
\end{pmatrix} \quad \begin{pmatrix}
1 & -1 &\sqrt{5}\
-1 & 2 &\pi\
\sqrt{5} & \pi & 3
\end{pmatrix}
$$
用数学表达对称矩阵:
$$
A=A^T
$$
为什么说对称矩阵是完美的?对称矩阵的特征值一定是实数(证略). 对称矩阵的多重特征值,其对应的特征空间的维度一定等于重数.对称矩阵的几何重数等于代数重数. 对称矩阵一定有n个线性无关的特征向量.
因此对称矩阵一定可以被对角化.
正交对角化
对称矩阵的所有不同的特征值对应的特征向量互相垂直.
假设矩阵A的两个特征向量v1,v2对应不同的特征值$\lambda_1,\lambda_2$
$$
证明 \vec{v}_1.\vec{v}_2=0\
(\lambda_1\vec{v}_1).\vec{v}_2=(\lambda_1 v_1)^Tv_2=(Av_1)^Tv_2\
=v_1^TA^Tv_2\
=v_1^TAv_2\
=v_1^T\lambda_2v_2\
=\lambda_2v_1^Tv_2=\lambda_2\vec{v}_1.\vec{v}_2=0\
(\lambda_1-\lambda_2)(\vec{v}_1.\vec{v}_2)=0\
\downarrow\
(\vec{v}_1.\vec{v}_2)=0
$$
对称矩阵一定可以被对角化:
$$
A=PDP^{-1}
$$
如果A是对称矩阵,
$$
A=QDQ^{-1}\
A=QDQ^T
$$
此时的Q是标准正交矩阵,这个式子就是把A进行了正交对角化.
正交对角化就是在对角化的基础上保证P是一个标准正交矩阵,写成字母Q.
如果A可以被正交对角化,则A一定是对称矩阵.
$$
A=QDQ^T\
A^T=(QDQ^T)^T\
=QD^TQ^T\
=QDQ^T=A\
得证
$$
因此:
$$
A是对称矩阵 \iff A可以被正交对角化 A=QDQ^T
$$
这个结论也叫做谱定理.
奇异值
前面讨论的特征值、特征向量、相似型、对角化、对称矩阵、正交对角化都是基于方阵的。 但实际处理的数据很多是非方阵,对于每一个非方阵来说,我们都可以找到一个对称矩阵和它对应.
如果A是一个m*n的矩阵,则$A^TA$ 是一个n*n 的方阵,且对称.
$$
第i行第j列元素:A^T第i行点乘A第j列\
相当于A第i列点乘A第j列\
第j行第i列元素:A^T第j行点乘A第i列\
相当于A第j列点乘A第i列\
$$
因此$A^TA$ 是对称矩阵.
$A^TA $ 可以被正交对角化,拥有n个实数特征值$\lambda_1,..,\lambda_i$,n个互相垂直的标准特征向量$\vec{v}_1,..,\vec{v}_i$.
下面式子:
$$
||A\vec{v}_i||^2=(A\vec{v}_i).(A\vec{v}_i)=(Av_i)^T.(Av_i)=v_i^T(A^TAv_i)\
=v_i^T(\lambda_iv_i)\
=\lambda_iv_i^Tv_i\
=\lambda_i||\vec{v}_i||^2\
=\lambda_i
$$
这个式子说明每一个$\lambda_i$ 都可以表示成一个上面向量模的平方,因此$A^TA$ 的特征值>=0 .将$\sigma_i=\sqrt{\lambda_i}$ 称为奇异值(Singular Value).
奇异值就是$A\vec{v}_i$ 的长度.
${A\vec{v}_i}$ 是A的列空间的一组正交基,$\lambda_i\ne0$ .
证明正交性:
$$
(A\vec{v}_i).(A\vec{v}_j)=(A{v}_i)^T(A{v}_j)=v_i^TA^TAv_j\
=v_i^T(A^TAv_j)=v_i^T(\lambda_jv_j)\
=\lambda_jv_i^Tv_j\
=\lambda_j(\vec{v}_i.\vec{v}_j)=0
$$
证明${A\vec{v}_i}$ 是A的列空间的一组基:
如果A有r个不为零的奇异值,${A\vec{v}_1,A\vec{v}_2,…,A\vec{v}_r}$ 是A的列空间的一组正交基. A的列空间维度为r,rank(A)=r.
${\frac{A\vec{v}_1}{\sigma_1},\frac{A\vec{v}_2}{\sigma_2},…,\frac{A\vec{v}_r}{\sigma_r}}$ 是A的列空间的一组标准正交基.
通常把奇异值从大到小排序,把$\sigma_i=0$ 的奇异值丢掉.
奇异值的SVD分解
矩阵的SVD分解-Singular Value Decomposition , 即矩阵的奇异值分解. 对任意形状的矩阵都适用.
$$
A=U\sum V^T
$$
如果A是m*n的矩阵,U是m*m 的矩阵;$\sum$ 是m*n 的矩阵(奇异值矩阵);V是n*n的矩阵.
V是$AA^T$ 的特征向量矩阵进行标准化,U和V都是标准正交矩阵.

证明:
$$
AV=U\sum \quad \vec{v}_i是A^TA的标准特征向量
$$
具体流程:
- 求解$A^TA$ 的特征值和特征向量
- 非零特征值开根后(奇异值)得到m*n的$\sum$ ,奇异值从大到小排序
- 特征向量标准化后得到n*n的V
- $\vec{u}_i=\frac{A\vec{v}_i}{\sigma_i}$ 在经过Gram-Schmidt扩展得到m*m的U
SVD代码示例:
1 | import numpy as np |

SVD分解的应用
第一个应用是将矩阵A看作是一个变换. 如果A是一个m*n矩阵,A只能对n维向量做变换.
列视角看待A,把矩阵A看成一片数据:

可以用来压缩、去噪、降维.
