奇异值分解 (Singular Value Decomposition,SVD)

奇异值分解 (Singular Value Decomposition,SVD)奇异值分解(SingularValueDecomposition,SVD)是一种矩阵因子分解方法,是线性代数的概念。应用于数据降维、推荐系统和自然语言处理等领域,在机器学习中被广泛适用。下面主要介绍SVD的定义与性质、计算过程、几何解释。1特征值分解这里先回顾一下特征值分解,它与

大家好,欢迎来到IT知识分享网。

  奇异值分解 (Singular Value Decomposition,SVD) 是一种矩阵因子分解方法,是线性代数的概念。应用于数据降维、推荐系统和自然语言处理等领域,在机器学习中被广泛适用。下面主要介绍 SVD 的定义与性质、计算过程、几何解释。

1 特征值分解

  这里先回顾一下特征值分解,它与 SVD 有许多相似的地方。关于特征值分解的几何意义可参考上一篇文章:特征值与特征向量。

  设 A 为 n 阶方阵,若存在数 λ 和非零向量 x,使得:

奇异值分解 (Singular Value Decomposition,SVD)

  则称 λ 是 A 的一个特征值,x 为 A 的对应于特征值 λ 的特征向量。

  求出了矩阵 A 的 n 个特征值 λ≤ λ≤ … ≤ λ,以及这 n 个特征值所对应的特征向量 { p1,p2,…,p},如果这 n 个特征值线性无关,那么矩阵 A 就可以用下式的特征分解表示:

奇异值分解 (Singular Value Decomposition,SVD)

  其中 P 是这 n 个特征向量所张成的 n × n 维矩阵,而 Λ 是以 n 个特征值为主对角线的 n × n 维矩阵。

  一般我们会把 P 的 n 个特征向量标准化,此时,这 n 个特征向量为标准正交基,满足 PTP = I ,即 PT = P-1 ,这样特征分解表达式可以写成:

奇异值分解 (Singular Value Decomposition,SVD)

  注意,要进行特征分解,矩阵 A 必须为方阵。如果A不是方阵,即行和列不相同时,我们还可以对矩阵进行分解吗?答案是可以,此时我们的SVD登场了。 

2 SVD 的定义与性质

  SVD 定义:矩阵的奇异值分解是指,将一个非零的 m × n 实矩阵 A,表示为以下三个实矩阵乘积形式的运算 (SVD 可以更一般地定义在复数矩阵上,但本文不涉及),即进行矩阵的因子分解:

奇异值分解 (Singular Value Decomposition,SVD)

  其中 U 是 m 阶正交矩阵,V 是 n 阶正交矩阵,Σ 是由降序排列的非负的对角线元素组成的  m × n 矩形对角矩阵。满足:

奇异值分解 (Singular Value Decomposition,SVD)

  UΣVT 称为矩阵 A 的奇异值分解,σi 称为矩阵 A 的奇异值,U 的列向量称为左奇异向量,V 的列向量称为右奇异向量。

奇异值分解 (Singular Value Decomposition,SVD)

  奇异值分解不要求矩阵 A 是方阵,事实上矩阵的奇异值分解可以看做是方阵的对角化的推广。

  SVD 基本定理:若 A 为一 m × n 实矩阵 ,则 A 的奇异值分解存在:

奇异值分解 (Singular Value Decomposition,SVD)

  其中 U 是 m 阶正交矩阵,V 是 n 阶正交矩阵,Σ 是 m × n 矩形对角矩阵,其对角线元素非负,且按降序排列。

  这个定理表达的意思就是矩阵的奇异值分解是一定存在的 (但不唯一),这里就不具体证明了。

  主要性质

  (1) 设矩阵 A 的奇异值分解为 A = UΣVT ,则以下关系成立:

奇异值分解 (Singular Value Decomposition,SVD)

  也就是说,矩阵 ATA 和 AAT 的特征分解存在,且可以由矩阵 A 的奇异值分解的矩阵表示。V 的列向量是 ATA 的特征向量,U 的列向量是 AAT 的特征向量,Σ 的奇异值是 ATA 和 AAT 的特征值的平方根。

  (2) 在矩阵 A 的奇异值分解中,奇异值、左奇异向量和右奇异向量之间存在对应关系:

奇异值分解 (Singular Value Decomposition,SVD)

奇异值分解 (Singular Value Decomposition,SVD)

  类似的,奇异值、右奇异向量和左奇异向量之间存在对应关系:

奇异值分解 (Singular Value Decomposition,SVD)

奇异值分解 (Singular Value Decomposition,SVD)

奇异值分解 (Singular Value Decomposition,SVD)

  (3) 矩阵 A 的奇异值分解中,奇异值 σ1,σ2,…σ是唯一的,而矩阵 U 和 V 不是唯一的。

  (4)  矩阵 A 和 Σ 的秩相等,等于正奇异值 σi 的个数 r (包含重复的奇异值)。

3 SVD 的计算

  给定 m × n 矩阵 A:

  (1) 首先求 ATA 的特征值和特征向量

  计算对称矩阵 W = ATA,求解特征方程:

奇异值分解 (Singular Value Decomposition,SVD)

  得到特征值 λ,并将特征值由大到小排列 λ≥ λ≥ … ≥ λ≥ 0 ,将特征值 λ( i = 1,2,…,n ) 代入特征方程求得对应的特征向量。

  (2) 求 n 阶正交矩阵 V

  将特征向量单位化,得到单位特征向量 v1,v2,…,v,构成 n 阶正交矩阵 V :

奇异值分解 (Singular Value Decomposition,SVD)

  (3) 求 m × n 对角矩阵 Σ

  计算 A 的奇异值:

奇异值分解 (Singular Value Decomposition,SVD)

  构造 m × n 矩形对角矩阵 Σ,主对角元素是奇异值,其余元素是 0 :

奇异值分解 (Singular Value Decomposition,SVD)

  (4) 求 m 阶正交矩阵 U

  对 A 的前 r 个正奇异值,令:

奇异值分解 (Singular Value Decomposition,SVD)

  得到:

奇异值分解 (Singular Value Decomposition,SVD)

  求 AT 的零空间的一组标准正交基 { ur+1,ur+2,…,u},令:

奇异值分解 (Singular Value Decomposition,SVD)

  并令:

奇异值分解 (Singular Value Decomposition,SVD)

  (5) 得到奇异值分解

奇异值分解 (Singular Value Decomposition,SVD)

4 几何解释

  与特征值分解相同,同样从线性变换的角度理解奇异值分解,m × n 矩阵 A 表示从 n 维空间 Rn 到 m 维空间 Rm 的一个线性变换:

奇异值分解 (Singular Value Decomposition,SVD)

  x ∈ Rn ,Ax ∈ Rm ,x 和 Ax 分别是各自空间的向量。线性变换可以分解为三个简单的变换:一个坐标系的旋转或反射变换、一个坐标轴的缩放变换、另一个坐标系的旋转或反射变换。奇异值定理保证这种分解一定存在,这就是奇异值分解的几何解释。

  对矩阵 A 进行奇异值分解,得到 A = UΣVT ,V 和 U 都是正交矩阵。所以 V 的列向量 v1,v2,…,vn  构成 Rn 空间的一组标准正交基,表示 Rn 中的正交坐标系的旋转或反射变换;U 的列向量 u1,u2,…,um 构成 Rm 空间的一组标准正交基,表示 Rm 中的正交坐标系的旋转或反射变换;Σ 的对角元素 σ1,σ2,…σ是一组非负实数,表示 Rn 中的原始正交坐标系坐标轴的 σ1,σ2,…σn 倍的缩放变换。

5 基于 SVD 的 PCA 降维

  PCA 降维需要找到样本协方差矩阵 XTX 的最大的 d 个特征向量,然后用这最大的 d 个特征向量张成的矩阵来做低维投影降维。可以看出,在这个过程中需要先求出协方差矩阵 XTX,当样本数多样本特征数也多的时候,这个计算量是很大的。

  注意到我们的 SVD 也可以得到协方差矩阵 XTX 最大的 d 个特征向量张成的矩阵,但是 SVD 有个好处,实际应用中的 SVD 算法是通过求 XTX 的特征值进行,但不直接计算 XTX。按照这个思路产生了许多矩阵 SVD 的有效算法,这里不予介绍。实际上,scikit-learn 的 PCA 算法的背后真正的实现就是用的 SVD,而不是我们我们认为的暴力特征分解。

  另一方面,注意到 PCA 仅仅使用了我们 SVD 的右奇异矩阵,没有使用左奇异矩阵,那么左奇异矩阵有什么用呢?

  假设我们的样本是 m × n 的矩阵 X,如果我们通过 SVD 找到了矩阵 XT最大的 d 个特征向量张成 m × d 维矩阵 U,如果进行如下处理:

奇异值分解 (Singular Value Decomposition,SVD)

  可以得到一个 d × n 的矩阵 X’,这个矩阵和我们原来的 m × n 维样本矩阵 X 相比,行数从 m 减到了 d,可见对行数进行了压缩。也就是说,左奇异矩阵可以用于行数的压缩。相对的,右奇异矩阵可以用于列数即特征维度的压缩,也就是我们的PCA降维。    

 

 

主要参考:奇异值分解(SVD)原理与在降维中的应用、李航《统计学习方法》

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/27899.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信