线性代数 SVD
奇异值分解(Singular Value Decomposition,简称 SVD)是线性代数中的一种基本工具,它将任意一个 (m * n) 矩阵 (A) 分解成三个简单矩阵的乘积,即
其中:
-
(U) 是一个 (m*m) 的正交(或酉)矩阵 (U) 的列向量称为 左奇异向量,它们构成了
(或
)的一个正交基。
-
(\Sigma) 是一个 (m*n) 的对角矩阵 对角线上的元素称为 奇异值,且都是非负数。奇异值通常按从大到小排列,反映了矩阵 (A) 在各个方向上的拉伸或压缩程度。
-
(V) 是一个 (n*n) 的正交(或酉)矩阵 (V) 的列向量称为 右奇异向量,它们构成了
(或
)的一个正交基。(V^T) 表示 (V) 的转置(或共轭转置)。
数学原理
1. 数据变换解释
可以将 SVD 看作对矩阵 (A) 表示的线性变换的分解,其过程可以分为三个简单的步骤:
-
右侧旋转(V^T) 首先,利用 (V^T) 将输入向量从原始坐标系转换到一个新的坐标系,这个新坐标系由 (V) 的列向量构成。这一步类似于“旋转”或“反射”,使得数据在新的坐标系中分布更“整齐”。
-
伸缩
在新的坐标系中,对角矩阵
对各个方向进行拉伸或压缩。对角线上每个奇异值
表示在第 (i) 个方向上的伸缩因子。较大的奇异值对应数据在该方向上具有较大方差,说明该方向上的信息更重要。
-
左侧旋转(U) 最后,利用 (U) 将经过伸缩后的向量转换回到原来的空间中,从而得到 (A) 作用后的结果。
2. 与特征值分解的关系
-
从 (A^T A) 得奇异值 考虑 (A^T A),这是一个 (n \times n) 的对称(或埃尔米特)矩阵,根据谱定理可以对其进行特征值分解。其非零特征值的平方根就是矩阵 (A) 的奇异值,且对应的特征向量就是 (V) 的列向量。
-
左奇异向量 利用公式
可以得到 (A A^T) 的特征向量,这些向量构成 (U) 的列向量。
3. 计算方法
常用的计算 SVD 的方法主要包括两大步骤:
-
双边正交化(Bidiagonalization) 利用 Householder 反射或 Givens 旋转将矩阵 (A) 化为双斜对角矩阵。这个步骤的目的是简化 (A) 的结构,便于后续迭代求解。
-
迭代对角化 对双斜对角矩阵使用迭代方法(如 QR 算法的变种)使其逐步“对角化”,从而得到奇异值以及对应的奇异向量。
应用
-
数据降维 在主成分分析(PCA)中,通过对数据矩阵做 SVD,可以提取数据中最重要的成分。只保留较大的奇异值及其对应的奇异向量,就能用较低的维度近似表示原始数据,从而达到降维和去噪的效果。
-
图像压缩与去噪 图像可以看作是一个矩阵。通过 SVD 分解后,只保留前几个主要的奇异值和相应的奇异向量,可以重构出一个近似原图的矩阵,实现图像压缩和噪声去除。
-
求解最小二乘问题 当矩阵 (A) 不满秩或病态时,直接求逆可能会导致不稳定。利用 SVD,可以求出矩阵的广义逆(伪逆),从而稳定地求解最小二乘问题。
-
信号处理与模式识别 在信号处理、机器学习和统计分析中,SVD 被用来提取数据中的主要模式和特征,提高后续算法的性能和稳定性。
小结
奇异值分解(SVD)是一种非常强大且通用的矩阵分解方法,它将任意矩阵分解为两个旋转(或反射)变换和一个简单的伸缩变换的组合。这种分解不仅揭示了矩阵作为线性变换的深层结构,而且在数据降维、图像压缩、最小二乘问题求解、信号处理等领域都有着广泛的应用。
主成分分析PCA
通俗理解 PCA
假设你有一堆数据,每个数据点有很多特征(比如身高、体重、年龄、收入等)。这些特征可能彼此相关,使得数据看起来很“冗余”。PCA 的目标就是找到一组“新坐标轴”(我们称之为主成分),使得在这些新坐标轴上,数据的变化(也就是“方差”)尽可能大。
-
第一主成分:找出一个方向,使得所有数据投影到这条直线上的“散布”最广。可以理解为在所有可能的方向中,哪一条能把数据拉得最“开”。
-
第二主成分:在与第一主成分正交(互相垂直)的条件下,再找一条方向,使得数据在这条轴上的投影散布最大。
-
后续的主成分依此类推,每一条都要求与前面的正交,并尽可能捕捉剩余的数据变异性。
通过选取前几个主成分(比如占总变异量90%的那几条),我们就可以用较低的维度来近似表示原始数据,从而达到降维、压缩和去噪的效果。
数学原理
以一个数据矩阵 (X) 为例,假设 (X) 有 (n) 个样本,每个样本有 (p) 个特征。通常步骤如下:
-
数据中心化 首先将每个特征减去其均值,使得数据集中每个特征的均值为0。
-
构造协方差矩阵 协方差矩阵反映了各个特征之间的相关性,通常计算公式为
这里 (C) 是一个 p * p 的对称矩阵。
-
求解特征值和特征向量 由于 (C) 是对称矩阵,根据谱定理,它可以分解(特征值分解)为
其中:
-
(Q) 的列向量就是 (C) 的特征向量(也可以称作主成分方向),这些向量彼此正交;
-
是对角矩阵,对角线上的值(特征值)反映了数据在对应特征向量方向上的方差大小。
-
-
选择主成分 按照特征值大小排序,选择前 (k) 个最大的特征值所对应的特征向量作为新的基,即这些方向上数据的“变异”最多。用这 (k) 个向量就能构成一个 (k) 维的新空间。
-
重构数据 将原始数据投影到新基上,可以得到低维表示。数学上如果用 (Q_k) 表示前 (k) 个特征向量构成的矩阵,那么数据降维后的表达就是
另外,还有一种常用的等价方法是利用奇异值分解(SVD)。SVD 将数据矩阵 (X) 分解为:
其中:
-
(V) 的列向量即为 X^TX的特征向量,也就是主成分方向。
-
对角线上数值的平方即为协方差矩阵 X^TX 的非零特征值。
这种方法在实际计算中常常更稳定、数值更准确。
小结
-
PCA 的核心思想就是找出数据中最重要的方向,把高维数据转到这些方向上,使得数据在新坐标系中的投影能保留尽可能多的信息(即最大方差)。
-
数学上,这可以通过计算数据协方差矩阵的特征值和特征向量来实现;特征向量就是新坐标轴,特征值反映了各方向的重要性。
-
另一种实现方式是用 SVD 分解,它与协方差矩阵的特征分解是等价的。
这种方法不仅可以降低数据维度,简化数据,还能去除噪声,并在很多领域(如图像压缩、推荐系统、信号处理等)中得到广泛应用。