矩阵的奇异值(SVD)分解和线性变换

news/2025/2/27 11:19:14

SVD_0">矩阵的奇异值(SVD)分解和线性变换

SVD_1">SVD定义

奇异值分解(Singular Value Decomposition,简称 SVD)是一种重要的线性代数工具,能够将任意矩阵 ( A ∈ R m × n \mathbf{A} \in \mathbb{R}^{m \times n} ARm×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)是一种重要的矩阵分解方法,在许多领域都有广泛应用,以下是其详细介绍:

定义与数学表达式

  • 对于任意一个 m × n m\times n m×n矩阵 A A A奇异值分解是将其分解为三个矩阵的乘积形式,即 A = U Σ V T A = U\Sigma V^T A=UΣVT
    • 其中 U U U是一个 m × m m\times m m×m的正交矩阵,其列向量称为左奇异向量。
    • Σ \Sigma Σ是一个 m × n m\times n m×n的对角矩阵,其对角线上的元素称为奇异值,通常按从大到小的顺序排列,其他非对角元素均为零。
    • V V V是一个 n × n n\times n n×n的正交矩阵,其列向量称为右奇异向量。

计算过程

  • 首先计算矩阵 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λn0,对应的单位特征向量为 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 λ24λ+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=0x1x2=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]=[22 22 ]

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]=[22 22 ]

故,
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=[22 22 22 22 ][3001][22 22 22 22 ]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=[22 22 22 22 ]

缩放矩阵

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(从右到左):

  1. 顺时针旋转 4 5 ∘ 45^{\circ} 45,将特征向量方向对齐坐标轴;
  2. X X X轴放大3倍, Y Y Y轴上放大1倍;
  3. 逆时针旋转 4 5 ∘ 45^{\circ} 45,恢复特征向量的初始方向。

换一种说法,对黄色小正方形作线性变换 A A A,可以解释成小正方形在矩阵 A A A的特征向量空间下作缩放操作。
<a class=矩阵变换" />

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],可以对其进行奇异值分解,以下是具体计算过程:

  1. 计算 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]

  1. 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 λIATA=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 λ17222722λ29362736λ45 =0

通过计算可得特征值 λ 1 ≈ 90.40267 \lambda_{1}\approx 90.40267 λ190.40267 λ 2 ≈ 0.59732 \lambda_{2}\approx 0.59732 λ20.59732 λ 3 ≈ 0 \lambda_{3}\approx 0 λ30

对应的特征向量分别为(近似值):
v 1 ≈ [ − 0.42866713 − 0.56630692 − 0.7039467 ] v_{1}\approx\begin{bmatrix}-0.42866713\\ -0.56630692\\-0.7039467\end{bmatrix} v1 0.428667130.566306920.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.112382410.58119908

v 3 ≈ [ 0.40824829 − 0.81649658 0.40824829 ] v_{3}\approx\begin{bmatrix} 0.40824829\\ -0.81649658\\ 0.40824829\end{bmatrix} v3 0.408248290.816496580.40824829

  • 对于 A A T AA^{T} AAT,其特征方程为 ∣ μ I − A A T ∣ = 0 \vert\mu I - AA^{T}\vert = 0 μIAAT=0,即
    ∣ μ − 14 − 32 − 32 μ − 77 ∣ = 0 \begin{vmatrix}\mu - 14&-32\\-32&\mu - 77\end{vmatrix}=0 μ143232μ77 =0
    计算可得特征值 μ 1 ≈ 90.40267 \mu_{1}\approx 90.40267 μ190.40267 μ 2 ≈ 0.59732 \mu_{2}\approx 0.59732 μ20.59732
    对应的特征向量分别为(近似值):
    u 1 ≈ [ − 0.386 − 0.922 ] u_{1}\approx\begin{bmatrix}-0.386\\-0.922\end{bmatrix} u1[0.3860.922] u 2 ≈ [ 0.922 − 0.386 ] u_{2}\approx\begin{bmatrix}0.922\\-0.386\end{bmatrix} u2[0.9220.386]
  1. 确定奇异值和(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.3860.9220.9220.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.408248290.566306920.112382410.816496580.70394670.581199080.40824829
  2. 得到奇异值分解(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.408248290.566306920.112382410.816496580.70394670.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.3860.9220.9220.386][9.508032000.7728696400] 0.428667130.805963910.408248290.566306920.112382410.816496580.70394670.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)


<a class=SVD" />

svd


http://www.niftyadmin.cn/n/5870027.html

相关文章

MAC 安装Tensorflow简单方法

MacOS M1 pro安装tensorflow 1、环境配置&#xff08;必需&#xff09; PYTHON版本&#xff1a;3.11.0&#xff0c;python采用homebrew安装。&#xff08;已有python或更高版本可跳过&#xff0c;更高版本未经过测试&#xff0c;题主自认为可行&#xff09; brew install pyt…

kafka-leader -1问题解决

一. 问题&#xff1a; 在 Kafka 中&#xff0c;leader -1 通常表示分区的领导者副本尚未被选举出来&#xff0c;或者在获取领导者信息时出现了问题。以下是可能导致出现 kafka leader -1 的一些常见原因及相关分析&#xff1a; 1. 副本同步问题&#xff1a; 在 Kafka 集群中&…

Template Method 设计模式

模板方法模式&#xff08;Template Method Pattern&#xff09; 是一种 行为型设计模式&#xff0c;用于定义 算法的骨架&#xff0c;并允许子类在不改变算法结构的情况下 重新定义 其中的某些步骤。 核心思想&#xff1a; 在 基类 中定义 算法的整体流程&#xff08;骨架&am…

MySQL进阶04-MVCC实现原理

文章目录 表记录读取的两种方式举个栗子MySQL是如何避免幻读的bin log/redo log/undo logMVCC概述MVCC实现原理 表记录读取的两种方式 快照读&#xff1a;读取的是快照版本。普通的SELECT就是快照读。通过mvcc来进行并发控制的&#xff0c;不用加锁。当前读&#xff1a;读取的…

HGAME2025 Week1

目录 Level 24 PacmanLevel 47 BandBombLevel 25 双面人派对Level 69 MysteryMessageBoardLevel 38475 ⻆落 Level 24 Pacman 直接在js文件里面搜索score, 可以找到一个flag, 经过base64和栅栏解密可以发现是一个假的flag 在尝试搜索一下gift, 可以找到另一个flag, 依次解码就…

Mellanox的LAG全称是什么?网卡的创建机制如何?(Link Aggregation Group 链路聚合组)

背景 对于双端口的网卡&#xff0c;有时候有将链路聚合的需求。在Mellanox网卡上通过LAG提供。对于RoCE的报文在Mellanox上也可以通过LAG来完成报文收发&#xff0c;叫做RoCE over LAG。但是仅仅适用于双端口卡。 关键点 LAG&#xff1a; Link Aggregation Group (LAG) 链路…

从2D到3D:电商技术的飞跃,开启沉浸式购物之旅

在数字化浪潮的推动下&#xff0c;电商行业正经历着前所未有的变革。从传统的2D图片展示到如今的3D立体呈现&#xff0c;技术的革新不仅重塑了消费者的购物体验&#xff0c;更为电商营销开辟了全新的可能性。接下来将深入探讨电商融合3D技术的最新趋势&#xff0c;揭示这一变革…

总体均值样本均值

目录 总体均值离散型随机变量连续型随机变量 样本均值 总体均值 离散型随机变量 设离散型随机变量 X X X的分布律是 p ( x i ) p(x_i) p(xi​)&#xff0c; i 1 , 2 , … i 1, 2, \ldots i1,2,…&#xff0c;若 ∑ i ∣ x i ∣ p ( x i ) < ∞ \sum_{i} |x_i| p(x_i) &…