学习笔记: 线性代数-矩阵的SVD分解【矩阵压缩降噪降维】

简介: 线性代数个人学习笔记

矩阵的SVD分解- Singular Value Decomposition【矩阵的奇异值分解】
优点:适用于任意形状的矩阵,是 特征分解 在任意矩阵上的推广

分解形式
$$A = U\Sigma V^T$$
$A = \begin{bmatrix} |&|& &| \\ \vec u_1&\vec u_2&...&\vec u_m \\ |&|& &| \end{bmatrix} \begin{bmatrix} \sigma _1&&&& \\ &\sigma _2&&&0 \\ &&...&& \\ 0&&&\sigma _r& \\ &0&&&0 \end{bmatrix}\begin{bmatrix} - & \vec v_1 & - \\ - & \vec v_2 & - \\ \\ - & \vec v_n & - \end{bmatrix}$
对于$m*n$的$A$矩阵,则$U$是$m*m$的方阵(左奇异矩阵);$\Sigma$是$m*n$的长方阵(奇异值矩阵);$V$是$n*n$的方阵(右奇异矩阵)

$V$是$A^TA$的标准化特征向量矩阵,是一个标准正交矩阵,$V = V^{T}$

$U$是$A$的列空间的一组标准正交基构成的矩阵 $U = \begin{bmatrix} |&|& &| \\ \vec u_1&\vec u_2&...&\vec u_m \\ |&|& &| \end{bmatrix} \ $由前$r$个从大到小排列的奇异值且不为零的奇异值对应的$\vec u$向量从左到右排列构成,根据矩阵的列空间定义$(r \le m)$,$ \vec u_i=\frac {A\vec v_i}{\sigma _i} \ \sigma_i \ne 0$;所以当$r \lt m$的时候要构造一个$m*m$的方阵$U$需要补充到$m$个$\vec u$向量,缺失的$\vec u$向量可以通过Gram-Schmidt方法找到$m-r$个向量,使得这$m$个$\vec u$向量两两互相垂直。所以$U$矩阵也是一个标准正交矩阵

$\Sigma $矩阵是一个$m*n$奇异值矩阵,对角线由从大到小排列的奇异值按从上到小的顺序填充而成,由于$r \le m$,缺失行由零向量填充,其左上角是一个$r*r$对角矩阵
$\Sigma = \begin{bmatrix} \sigma _1&&&& \\ &\sigma _2&&&0 \\ &&...&& \\ 0&&&\sigma _r& \\ &0&&&0 \end{bmatrix} \ = \begin{bmatrix} D&0 \\ 0&0\end{bmatrix} $

SVD与特征值分解的联系: $A^TA = (U\Sigma V^T)^T \cdot (U\Sigma V^T) = V^T\Sigma^2V = PDP^T$

证明

对于 $A = U\Sigma V^T$
左乘$V$则有$AV = U\Sigma V^TV$,标准正交矩阵中$V^TV = I \rightarrow AV = U\Sigma $ ,该数学形式与方阵特征值分解类似。
$\because \vec v_i$ 是$A^TA$的标准特征向量 ,$AV =A \begin{bmatrix} |&|& &| \\ \vec v_1&\vec v_2&...&\vec v_n \\ |&|& &| \end{bmatrix} = \begin{bmatrix} |&|& &| \\ A\vec v_1&A\vec v_2&...&A\vec v_n \\ |&|& &| \end{bmatrix}$

又$ \vec u_i = \frac {A\vec v_i}{\sigma _i}$,其中$ \sigma _i = \sqrt { \|A \cdot \vec v_i\|^{2} } = \sqrt {\lambda _i}$,当存在$\sigma = 0 \rightarrow \sigma \vec u = 0$,从而
$AV = \begin{bmatrix} |&|& &| \\ A\vec v_1&A\vec v_2&...&A\vec v_n \\ |&|& &| \end{bmatrix} = \begin{bmatrix} |&|& &| \\ \sigma_1\vec u_1& \sigma_2\vec u_2&...& \sigma_r\vec u_r&...&0 \\ |&|& &| \end{bmatrix} $

$U\Sigma = \begin{bmatrix} |&|& &| \\ \vec u_1&\vec u_2&...&\vec u_m \\ |&|& &| \end{bmatrix} \begin{bmatrix} \sigma _1&&&& \\ &\sigma _2&&&0 \\ &&...&& \\ 0&&&\sigma _r& \\ &0&&&0 \end{bmatrix} = \begin{bmatrix} |&|& &| \\ \sigma_1\vec u_1& \sigma_2\vec u_2&...& \sigma_r\vec u_r&...&0 \\ |&|& &| \end{bmatrix} $

$\therefore AV = U\Sigma \rightarrow A = U\Sigma V^T$

算法过程

对于任意一个矩阵$A$,求解$U\Sigma V^T$
step.1 求解$A^TA$的特征值和特征向量;
step.2 对$A^TA$的非零特征值$\lambda$ 进行开根得到奇异值$\sigma$,顺序填充成$m*n$的奇异值矩阵$\Sigma$;
step.3 $A^TA$的特征向量标准化处理后,这些标准特征向量按从大到小的特征值对应关系按列填充成$n*n$的$V$,取$V^T$;
step.4 $ \vec u_i = \frac {A\vec v_i}{\sigma _i}$在经过Gram-Schmidt扩展填充成$U$

SVD应用

1.几何坐标变换

$A = U\Sigma V^T$ 若A是$m*n$的矩阵 $A$将对一个$n$维向量转换成$m$维的向量;

$V$是$n$维空间的一组标准正交基,从而$n$维空间中的任意向量$\vec x$可以被$V$中的列向量所组合表示$\vec x = k_1\vec v_1 + k_2\vec v_2 + ... + k_n\vec v_n=V\vec k$ ,这里$V\vec k$中的向量$\vec k$即$V$坐标系下每个维度上的坐标值。

而$n$维空间的向量$\vec x$被$A$变换将得到:
$A\vec x = U\Sigma V^T \vec x = U\Sigma V^T \cdot V\vec k = U\Sigma \vec k = U\begin{bmatrix} \sigma_1k_1 \\ ... \\ \sigma_rk_r \\ 0\end{bmatrix}$
在这里变换后表明在$U$坐标系下,原来$V$坐标系下的向量$\vec x$坐标值将被拉伸$\sigma$倍。

2.数据压缩去噪降维

奇异值分解与特征值分解的目的一样,都是提取出一个矩阵最重要的特征。
所有的矩阵都可以进行奇异值分解,但只有方阵才可以进行特征值分解。当所给的矩阵是对称的方阵,,二者的结果是相同的。所以对称矩阵的特征值分解是奇异值分解的一个特例。对于奇异值,它跟特征分解中的特征值类似,在奇异值矩阵中也是按照从大到小排列,而且奇异值的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上的比例。所以可以应用最大的k个的奇异值和对应的左右奇异矩阵来近似描述矩阵达到 denoise 的目的。

SVD降噪数学展开式$A = U\Sigma V^T$
$\begin{bmatrix} |&|& &| \\ \sigma_1\vec u_1& \sigma_2\vec u_2&...& \sigma_r\vec u_r&...&0 \\ |&|& &| \end{bmatrix} \begin{bmatrix} - & \vec v_1 & - \\ - & \vec v_2 & - \\ \\ - & \vec v_n & - \end{bmatrix} = \sigma_1 \vec u_1 \vec v_1^T + \sigma_2 \vec u_2 \vec v_2^T +...+\sigma_r \vec u_r \vec v_r^T + 0 +...0 $

从而$A$ 矩阵被表示为系列由$\sigma _i \vec u_i \vec v_i^T$组成的$m*n$矩阵的加和的结果,奇异值$\sigma$在这里成为子矩阵$\vec u \vec v^T$的权重($weight$ 权值),其中第一个$\sigma _1$权值最大,次之$\sigma _2$,以此类推。所以可知小奇异值对应的子矩阵对$A$矩阵的影响是很小的,舍去这些小奇异值对应的子矩阵可以做到对$A$矩阵的压缩、降噪

3、SVD 与 PCA 降维的联系

PCA降维 主要针对协方差矩阵$X^TX$ 进行特征分解,找到最大的 $d$ 个特征值对应的特征向量作为基向量,对 $X$ 进行投影达到降维的目的 $X_{lowdim} = X\cdot P$。 SVD 则是针对 $X$进行奇异值分解,算的是 $X^TX$ 的特征值和特征向量,从求解上来说SVD与PCA等价,但是SVD 算法求解矩阵 $X^TX$ 的特征向量时相比暴力特征值分解有更高效的计算策略(如幂迭代法求矩阵特征值),当找到了前 $d$ 个奇异值对应的右奇异矩阵 $V^T$,对 $X$ 进行投影达到降维的目的 $X_{lowdim} = X \cdot (V^T)^T$,正因如此SVD的这种高效性所,一般PCA算法常用 SVD 求解特征向量。


1.1 矩阵降维之矩阵分解 PCA与SVD - 知乎 (zhihu.com)
【机器学习】这次终于彻底理解了奇异值分解(SVD)原理及应用_风度78的博客-CSDN博客

目录
相关文章
|
10天前
|
机器学习/深度学习 搜索推荐 数据挖掘
R语言矩阵特征值分解(谱分解)和奇异值分解(SVD)特征向量分析有价证券数据
R语言矩阵特征值分解(谱分解)和奇异值分解(SVD)特征向量分析有价证券数据
20 6
|
6月前
|
机器学习/深度学习
线性代数(五)特征值和特征向量
线性代数(五)特征值和特征向量
103 1
|
8月前
|
数据可视化 算法
时序分解 | MATLAB实现基于SVD奇异值分解的信号分解分量可视化
时序分解 | MATLAB实现基于SVD奇异值分解的信号分解分量可视化
|
机器学习/深度学习 数据采集 资源调度
【推荐系统】推荐场景为什么不可以使用SVD分解共现矩阵
【推荐系统】推荐场景为什么不可以使用SVD分解共现矩阵
120 0
【推荐系统】推荐场景为什么不可以使用SVD分解共现矩阵
|
8月前
|
机器学习/深度学习 决策智能
矩阵分析 (四)向量和矩阵的范数
矩阵分析 (四)向量和矩阵的范数
|
10月前
|
算法
|
10月前
学习笔记: 线性代数-矩阵的相似性
线性代数个人学习笔记
70 0
|
10月前
|
10月前
|
存储 资源调度 自然语言处理
奇异值分解(SVD)和图像压缩
在本文中,我将尝试解释 SVD 背后的数学及其几何意义,还有它在数据科学中的最常见的用法,图像压缩。
137 0