SVD_0">矩阵的奇异值(SVD)分解和线性变换
SVD_1">SVD定义
奇异值分解(Singular Value Decomposition,简称 SVD)是一种重要的线性代数工具,能够将任意矩阵 (
A
∈
R
m
×
n
\mathbf{A} \in \mathbb{R}^{m \times n}
A∈Rm×n) 分解成三个特定结构的矩阵相乘的形式:
A
=
U
Σ
V
⊤
\mathbf{A} = \mathbf{U} \boldsymbol{\Sigma} \mathbf{V}^\top
A=UΣV⊤
这里,
U
\mathbf{U}
U 是一个
m
×
m
m \times m
m×m阶正交矩阵;
Σ
\boldsymbol{\Sigma}
Σ 是一个
m
×
n
m \times n
m×n阶对角矩阵,其对角线上元素称为奇异值,按降序排列;
V
\mathbf{V}
V是一个
n
×
n
n \times n
n×n阶正交矩阵。
计算过程
奇异值分解(Singular Value Decomposition,SVD)是一种重要的矩阵分解方法,在许多领域都有广泛应用,以下是其详细介绍:
定义与数学表达式
计算过程
- 首先计算矩阵 A T A A^TA ATA和 A A T AA^T AAT,它们分别是 n × n n\times n n×n和 m × m m\times m m×m的方阵。
- 然后求 A T A A^TA ATA的特征值和特征向量,设其特征值为 λ 1 ≥ λ 2 ≥ ⋯ ≥ λ n ≥ 0 \lambda_1\geq\lambda_2\geq\cdots\geq\lambda_n\geq0 λ1≥λ2≥⋯≥λn≥0,对应的单位特征向量为 v 1 , v 2 , ⋯ , v n v_1,v_2,\cdots,v_n v1,v2,⋯,vn,则 V = [ v 1 , v 2 , ⋯ , v n ] V = [v_1,v_2,\cdots,v_n] V=[v1,v2,⋯,vn]。
- 奇异值 σ i = λ i \sigma_i=\sqrt{\lambda_i} σi=λi, i = 1 , 2 , ⋯ , n i = 1,2,\cdots,n i=1,2,⋯,n,将其组成对角矩阵 Σ \Sigma Σ。
- 最后通过 u i = 1 σ i A v i u_i=\frac{1}{\sigma_i}Av_i ui=σi1Avi(当 σ i ≠ 0 \sigma_i\neq0 σi=0时)计算左奇异向量,组成矩阵 U U U。
几何意义
- 从几何角度看,矩阵
A
A
A可以看作是从
n
n
n维空间到
m
m
m维空间的一个线性变换。奇异值分解将这个线性变换分解为三个步骤:
- 首先是一个由 V T V^T VT表示的旋转或反射变换,它作用于原始向量在 n n n维空间中的坐标。
- 然后是由 Σ \Sigma Σ表示的缩放变换,它沿着各个坐标轴方向对向量进行不同程度的缩放,缩放的程度由奇异值决定。
- 最后是由 U U U表示的旋转或反射变换,它将经过缩放后的向量映射到 m m m维空间中。
应用领域
- 数据压缩:在图像、视频等数据处理中,可利用奇异值分解对数据进行压缩。由于奇异值按大小排序,较大的奇异值包含了矩阵的主要信息,保留较大的奇异值,将较小的奇异值设为零,再通过分解后的矩阵重构数据,可以在损失较少信息的情况下实现数据的压缩。
- 主成分分析(PCA):在数据分析和机器学习中,PCA用于降维和特征提取。通过对数据矩阵进行奇异值分解,可以找到数据的主要成分,即对应于较大奇异值的左奇异向量或右奇异向量,从而实现对数据的降维和特征提取,去除数据中的噪声和冗余信息。
- 推荐系统:在推荐系统中,可将用户-物品评分矩阵进行奇异值分解,通过低秩近似来预测用户对未评分物品的喜好程度,从而为用户提供个性化的推荐。
- 信号处理:在信号处理领域,奇异值分解可用于信号去噪、特征提取等。例如在语音识别中,对语音信号的特征矩阵进行奇异值分解,去除噪声对应的较小奇异值,可提高语音信号的质量和识别准确率。
示例
SVD_38">对称方阵的SVD
对于对称方阵 A A A作奇异值分解, A = Q S Q T A=QSQ^{T} A=QSQT,其中 Q = [ cos θ − sin θ sin θ cos θ ] Q=\begin{bmatrix} \cos\theta & -\sin \theta \\ \sin \theta & \cos \theta \end{bmatrix} Q=[cosθsinθ−sinθcosθ], Q Q Q为旋转矩阵。
A
=
[
2
1
1
2
]
A=\begin{bmatrix} 2 &1\\ 1 &2 \end{bmatrix}
A=[2112]
令,
d
e
t
(
A
−
λ
I
)
=
0
det(A-\lambda I)=0
det(A−λI)=0
即,
A
−
λ
I
=
[
2
1
1
2
]
−
[
λ
0
0
λ
]
=
[
2
−
λ
1
1
2
−
λ
]
A-\lambda I=\begin{bmatrix}2 & 1\\1 & 2\end{bmatrix}-\begin{bmatrix}\lambda & 0 \\0 & \lambda \end{bmatrix} =\begin{bmatrix} 2-\lambda & 1\\ 1 & 2-\lambda \end{bmatrix}
A−λI=[2112]−[λ00λ]=[2−λ112−λ]
即,
λ 2 − 4 λ + 3 = 0 \lambda ^{2}-4\lambda +3=0 λ2−4λ+3=0
即,
( λ − 1 ) ( λ − 3 ) = 0 (\lambda -1)(\lambda -3)=0 (λ−1)(λ−3)=0
故,矩阵 A A A的特征值为 λ 1 = 3 \lambda_{1}=3 λ1=3, λ 2 = 1 \lambda_{2}=1 λ2=1,
令,
[
2
−
λ
1
1
1
2
−
λ
1
]
[
x
1
x
2
]
=
[
0
0
]
\begin{bmatrix} 2-\lambda_{1} & 1\\ 1 & 2-\lambda_{1} \end{bmatrix}\begin{bmatrix} x_{1}\\ x_{2} \end{bmatrix}=\begin{bmatrix} 0\\ 0 \end{bmatrix}
[2−λ1112−λ1][x1x2]=[00]
即,
−
x
1
+
x
2
=
0
,
x
1
−
x
2
=
0
-x_{1}+x_{2}=0, x_{1}-x_{2}=0
−x1+x2=0,x1−x2=0
特征向量
λ
1
=
3
\lambda_{1}=3
λ1=3对应的特征向量为
v
1
=
[
1
1
]
v_{1}=\begin{bmatrix} 1\\ 1 \end{bmatrix}
v1=[11],
同理,
特征向量 λ 2 = 1 \lambda_{2}=1 λ2=1对应的特征向量为 v 2 = [ − 1 1 ] v_{2}=\begin{bmatrix} -1\\ 1 \end{bmatrix} v2=[−11]。
把特征向量单位化,
v
1
=
[
1
1
]
=
[
2
2
2
2
]
v_{1}=\begin{bmatrix} 1\\ 1 \end{bmatrix}=\begin{bmatrix} \frac{\sqrt{2} }{2} \\ \frac{\sqrt{2} }{2} \end{bmatrix}
v1=[11]=[2222]
v 2 = [ − 1 1 ] = [ − 2 2 2 2 ] v_{2}=\begin{bmatrix} -1\\ 1 \end{bmatrix}=\begin{bmatrix} -\frac{\sqrt{2} }{2} \\ \frac{\sqrt{2} }{2} \end{bmatrix} v2=[−11]=[−2222]
故,
A
=
[
2
2
−
2
2
2
2
2
2
]
[
3
0
0
1
]
[
2
2
−
2
2
2
2
2
2
]
T
A=\begin{bmatrix} \frac{\sqrt{2} }{2} & -\frac{\sqrt{2} }{2}\\ \frac{\sqrt{2} }{2} & \frac{\sqrt{2} }{2} \end{bmatrix}\begin{bmatrix} 3 & 0\\ 0 & 1 \end{bmatrix}\begin{bmatrix} \frac{\sqrt{2} }{2} & -\frac{\sqrt{2} }{2}\\ \frac{\sqrt{2} }{2} & \frac{\sqrt{2} }{2} \end{bmatrix}^{T}
A=[2222−2222][3001][2222−2222]T
从线性变换的角度,
A x = Q S Q T x Ax=QSQ^{T}x Ax=QSQTx,
旋转矩阵,
Q = [ 2 2 − 2 2 2 2 2 2 ] Q=\begin{bmatrix} \frac{\sqrt{2} }{2} & -\frac{\sqrt{2} }{2}\\ \frac{\sqrt{2} }{2} & \frac{\sqrt{2} }{2} \end{bmatrix} Q=[2222−2222]
缩放矩阵,
S = [ 3 0 0 1 ] S=\begin{bmatrix} 3 & 0\\ 0 & 1 \end{bmatrix} S=[3001]
如下图所示,对黄色小正方形作线性变换 A A A,可以分解成以下旋转、缩放和旋转变换,即 Q S Q T QSQ^{T} QSQT(从右到左):
- 顺时针旋转 4 5 ∘ 45^{\circ} 45∘,将特征向量方向对齐坐标轴;
- 在 X X X轴放大3倍, Y Y Y轴上放大1倍;
- 逆时针旋转 4 5 ∘ 45^{\circ} 45∘,恢复特征向量的初始方向。
换一种说法,对黄色小正方形作线性变换
A
A
A,可以解释成小正方形在矩阵
A
A
A的特征向量空间下作缩放操作。
矩阵变换" />
SVD_165">任意矩阵SVD
对于任意矩阵,可以将 A A T AA^{T} AAT和 A T A A^{T}A ATA转换为对称方阵。
对于矩阵 A = [ 1 2 3 4 5 6 ] A=\begin{bmatrix}1&2&3\\4&5&6\end{bmatrix} A=[142536],可以对其进行奇异值分解,以下是具体计算过程:
- 计算 A T A A^{T}A ATA和 A A T AA^{T} AAT
A T = [ 1 4 2 5 3 6 ] A^{T}=\begin{bmatrix}1&4\\2&5\\3&6\end{bmatrix} AT= 123456
A T A = [ 1 4 2 5 3 6 ] [ 1 2 3 4 5 6 ] = [ 17 22 27 22 29 36 27 36 45 ] A^{T}A=\begin{bmatrix}1&4\\2&5\\3&6\end{bmatrix}\begin{bmatrix}1&2&3\\4&5&6\end{bmatrix}=\begin{bmatrix}17&22&27\\22&29&36\\27&36&45\end{bmatrix} ATA= 123456 [142536]= 172227222936273645
A A T = [ 1 2 3 4 5 6 ] [ 1 4 2 5 3 6 ] = [ 14 32 32 77 ] AA^{T}=\begin{bmatrix}1&2&3\\4&5&6\end{bmatrix}\begin{bmatrix}1&4\\2&5\\3&6\end{bmatrix}=\begin{bmatrix}14&32\\32&77\end{bmatrix} AAT=[142536] 123456 =[14323277]
- 求 A T A A^{T}A ATA和 A A T AA^{T} AAT的特征值和特征向量
- 对于
A
T
A
A^{T}A
ATA,其特征方程为
∣
λ
I
−
A
T
A
∣
=
0
\vert\lambda I - A^{T}A\vert = 0
∣λI−ATA∣=0,即
∣ λ − 17 − 22 − 27 − 22 λ − 29 − 36 − 27 − 36 λ − 45 ∣ = 0 \begin{vmatrix}\lambda - 17&-22&-27\\-22&\lambda - 29&-36\\-27&-36&\lambda - 45\end{vmatrix}=0 λ−17−22−27−22λ−29−36−27−36λ−45 =0
通过计算可得特征值 λ 1 ≈ 90.40267 \lambda_{1}\approx 90.40267 λ1≈90.40267, λ 2 ≈ 0.59732 \lambda_{2}\approx 0.59732 λ2≈0.59732, λ 3 ≈ 0 \lambda_{3}\approx 0 λ3≈0。
对应的特征向量分别为(近似值):
v
1
≈
[
−
0.42866713
−
0.56630692
−
0.7039467
]
v_{1}\approx\begin{bmatrix}-0.42866713\\ -0.56630692\\-0.7039467\end{bmatrix}
v1≈
−0.42866713−0.56630692−0.7039467
,
v 2 ≈ [ 0.80596391 0.11238241 − 0.58119908 ] v_{2}\approx\begin{bmatrix}0.80596391\\0.11238241\\ -0.58119908\end{bmatrix} v2≈ 0.805963910.11238241−0.58119908 ,
v 3 ≈ [ 0.40824829 − 0.81649658 0.40824829 ] v_{3}\approx\begin{bmatrix} 0.40824829\\ -0.81649658\\ 0.40824829\end{bmatrix} v3≈ 0.40824829−0.816496580.40824829
- 对于
A
A
T
AA^{T}
AAT,其特征方程为
∣
μ
I
−
A
A
T
∣
=
0
\vert\mu I - AA^{T}\vert = 0
∣μI−AAT∣=0,即
∣ μ − 14 − 32 − 32 μ − 77 ∣ = 0 \begin{vmatrix}\mu - 14&-32\\-32&\mu - 77\end{vmatrix}=0 μ−14−32−32μ−77 =0
计算可得特征值 μ 1 ≈ 90.40267 \mu_{1}\approx 90.40267 μ1≈90.40267, μ 2 ≈ 0.59732 \mu_{2}\approx 0.59732 μ2≈0.59732。
对应的特征向量分别为(近似值):
u 1 ≈ [ − 0.386 − 0.922 ] u_{1}\approx\begin{bmatrix}-0.386\\-0.922\end{bmatrix} u1≈[−0.386−0.922], u 2 ≈ [ 0.922 − 0.386 ] u_{2}\approx\begin{bmatrix}0.922\\-0.386\end{bmatrix} u2≈[0.922−0.386]
- 确定奇异值和(U)、(V)矩阵
奇异值 σ 1 = λ 1 ≈ 9.508032 \sigma_{1}=\sqrt{\lambda_{1}}\approx 9.508032 σ1=λ1≈9.508032, σ 2 = λ 2 ≈ 0.77286 \sigma_{2}=\sqrt{\lambda_{2}}\approx 0.77286 σ2=λ2≈0.77286
U = [ − 0.386 0.922 − 0.922 − 0.386 ] U=\begin{bmatrix}-0.386&0.922\\-0.922&-0.386\end{bmatrix} U=[−0.386−0.9220.922−0.386]
V T = [ − 0.42866713 − 0.56630692 − 0.7039467 0.80596391 0.11238241 − 0.58119908 0.40824829 − 0.81649658 0.40824829 ] V^{T}=\begin{bmatrix}-0.42866713&-0.56630692&-0.7039467\\0.80596391&0.11238241& -0.58119908\\0.40824829& -0.81649658& 0.40824829\end{bmatrix} VT= −0.428667130.805963910.40824829−0.566306920.11238241−0.81649658−0.7039467−0.581199080.40824829 - 得到奇异值分解(A = U\Sigma V^{T})
Σ = [ 9.508032 0 0 0 0.77286964 0 ] \Sigma=\begin{bmatrix}9.508032&0&0\\0&0.77286964&0\end{bmatrix} Σ=[9.508032000.7728696400]
V T = [ − 0.42866713 − 0.56630692 − 0.7039467 0.80596391 0.11238241 − 0.58119908 0.40824829 − 0.81649658 0.40824829 ] V^{T}=\begin{bmatrix}-0.42866713&-0.56630692&-0.7039467\\0.80596391&0.11238241& -0.58119908\\0.40824829& -0.81649658& 0.40824829\end{bmatrix} VT= −0.428667130.805963910.40824829−0.566306920.11238241−0.81649658−0.7039467−0.581199080.40824829
所以,
A = U Σ V T = [ − 0.386 0.922 − 0.922 − 0.386 ] [ 9.508032 0 0 0 0.77286964 0 ] [ − 0.42866713 − 0.56630692 − 0.7039467 0.80596391 0.11238241 − 0.58119908 0.40824829 − 0.81649658 0.40824829 ] A = U\Sigma V^{T}=\begin{bmatrix}-0.386&0.922\\-0.922&-0.386\end{bmatrix}\begin{bmatrix}9.508032&0&0\\0&0.77286964&0\end{bmatrix}\begin{bmatrix}-0.42866713&-0.56630692&-0.7039467\\0.80596391&0.11238241& -0.58119908\\0.40824829& -0.81649658& 0.40824829\end{bmatrix} A=UΣVT=[−0.386−0.9220.922−0.386][9.508032000.7728696400] −0.428667130.805963910.40824829−0.566306920.11238241−0.81649658−0.7039467−0.581199080.40824829
下面用python
代码检验:
import numpy as np
# 定义一个示例矩阵
A = np.array([[1, 2,3],
[4, 5,6]])
# 进行奇异值分解
U, S, VT = np.linalg.svd(A)
# 打印结果
print("矩阵 A:")
print(A)
print("\n左奇异向量矩阵 U:")
print(U)
print("\n奇异值矩阵 S:")
# 注意:np.linalg.svd 返回的 S 是一个一维数组,包含奇异值
# 为了得到完整的对角矩阵 Σ,需要手动构建
Sigma = np.zeros((A.shape[0], A.shape[1]))
Sigma[:min(A.shape), :min(A.shape)] = np.diag(S)
print(Sigma)
print("\n右奇异向量矩阵 V 的转置 VT:")
print(VT)
# 验证奇异值分解结果
reconstructed_A = np.dot(U, np.dot(Sigma, VT))
print("\n通过奇异值分解重构的矩阵 A:")
print(reconstructed_A)
SVD" />