发布日期: 09/18/2023

奇异值分解

奇异值分解 (SVD) 允许您先后通过一次旋转、一次缩放以及另一次旋转的方式来表示任意线性变换。SVD 规定任何 n x p 的矩阵 X 可表示为:

Equation shown here

r 表示 X 的秩。用 Ir 表示 r x r 单位矩阵。

矩阵 U, Diag(L)V 具有以下属性:

Un x r 半正交矩阵且 UU = Ir

Vp x r 半正交矩阵且 VV = Ir

Diag(L) 是 r x r 对角矩阵,其正对角线元素由列向量 L = (l1, l2, ..., lr) 给出,其中 l1 ≥ λ2 ≥ ... ≥ λr > 0。

liX 的非零奇异值

下面说明了 SVD 与正方形矩阵的谱分解的关系:

li 的平方是 XX 的非零特征值。

Vr 列是 XX 的特征向量。

注意:在文献中有关于矩阵 UV 以及包含奇异值的矩阵的维度的各种约定。但是,这些约定差异在 X 秩的范围内对分解没有实际影响。

有关奇异值分解的详细信息,请参见 Press et al.(1998, Section 2.6)。

协方差矩阵

本节说明如何使用奇异值分解 (SVD) 获取协方差矩阵的特征向量和特征值。关注的矩阵具有至少一个大的维度时,计算 SVD 比计算它的协方差矩阵和特征值分解高效得多。

n 表示观测数,用 p 表示关注的多元分析中涉及的变量数。用 X 表示数据值的 n x p 矩阵。

通常对标准化数据应用 SVD。要将某个值标准化,需减去其均值,再除以其标准差。用 Xs 来表示标准化数据值的 n x p 矩阵。之后,标准化数据的协方差矩阵成为 X 的相关性矩阵,该矩阵定义如下:

Equation shown here

可以对 Xs 应用 SVD 来获取 XsXs 的特征向量和特征值。当矩阵 X 很宽(很多列)或很高(很多行)时,这样做可以高效计算特征向量和特征值。此方法是宽 PCA 的基础。请参见““主成分”报表”

逆协方差矩阵

一些多元方法需要计算协方差矩阵的逆矩阵。本节说明如何使用 SVD 来计算协方差矩阵的逆矩阵。

Xs 表示标准化数据矩阵并定义 S = XsXs。奇异值分解允许您将 S 表示为:

Equation shown here

S 是满秩的,则 Vp x p 正交矩阵,您可以将 S-1 表示为:

Equation shown here

S 不是满秩的,则 Diag(L)-1 可以使用广义逆矩阵 Diag(L)+ 代替,其中 Diag(L) 的对角线元素用其倒数替代。这便按以下方式定义 S 的广义逆矩阵:

Equation shown here

该广义逆矩阵只使用 SVD 就可以计算得到。

有关将 SVD 应用于宽线性判别分析的详细信息,请参见“宽线性判别方法”

计算奇异值分解

在“多元方法”平台中,JMP 采用 Golub and Kahan (1965) 提出的方法计算矩阵的 SVD。Golub and Kahan 的方法是一个包含两个步骤的过程。第一步是将矩阵 M 简化为二对角矩阵 J。第二步是计算 J 的奇异值,它们与原始矩阵 M 的奇异值相同。通常将矩阵 M 的列标准化以便平衡变量对计算的影响。Golub and Kahan 方法的计算效率很高。

需要更多信息?有问题?从 JMP 用户社区得到解答 (community.jmp.com).