机器学习——奇异值分解

本文详细介绍了奇异值分解(SVD)的基本概念、计算过程以及其在矩阵处理中的应用。通过计算矩阵的ATA来获取奇异值,并构建左右奇异矩阵。证明了ATA的特征值等于奇异值的平方。同时,给出了使用Numpy库进行SVD计算的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

奇异值分解的计算过程

我们知道奇异值分解的表达式为:
A = U Σ V T A=U\Sigma V^{\mathrm{T}} A=UΣVT那如何求解 U U U Σ \Sigma Σ V V V这三个矩阵呢?

  1. 计算 A T A A^{T}A ATA的特征值,通过得到的特征值进一步计算得到A矩阵的奇异值;
  2. 通过计算得到的奇异值,构造与A矩阵维数相同的矩阵 Σ \Sigma Σ
  3. 计算 A T A A^{T}A ATA对应的单位特征向量并按照对应特征值从大到小的顺序构建 A T A A^{T}A ATA特征向量矩阵 V V V,也为A的右奇异矩阵;
  4. U U UA的左奇异矩阵为 A A T AA^{T} AAT所对应的单位特征向量矩阵。

证明: A T A A^{T}A ATA的特征值矩阵为奇异值矩阵的平方

证明:假设有 m ∗ n m*n mn的非方阵矩阵 A A A,对其进行奇异值分解的表达式为: A = U Σ V T A=U\Sigma V^{\mathrm{T}} A=UΣVT其中 U U U m ∗ m m*m mm矩阵, Σ \Sigma Σ m ∗ n m*n mn对角矩阵, V V V n ∗ n n*n nn矩阵。其中, U U U V V V为标准正交的酉矩阵(酉矩阵的定义为:令矩阵 U T U = E U^{\mathrm{T}}U=E UTU=E,又因为 U − 1 U = E U^{-1}U=E U1U=E,有 U T = U − 1 U^{\mathrm{T}}=U^{-1} UT=U1,即 U U U为酉矩阵。)。左奇异值 U U U和右奇异值 V V V求解公式见下篇SVD求解方法。

下面开始对问题进行证明: A = U Σ V T A=U\Sigma V^{\mathrm{T}} A=UΣVT A T = V Σ U T A^{\mathrm{T}}=V\Sigma U^{\mathrm{T}} AT=VΣUT由于 Σ \Sigma Σ为对角矩阵,所以 Σ T = Σ \Sigma^{\mathrm{T}}=\Sigma ΣT=Σ
所以
A T A = V Σ U T U Σ V T A^{T}A=V\Sigma U^{\mathrm{T}}U\Sigma V^{\mathrm{T}} ATA=VΣUTUΣVT A T A = V Σ 2 V T A^{T}A=V\Sigma^{2} V^{\mathrm{T}} ATA=VΣ2VT因为 V V V为标准正交的酉矩阵,并且为 A T A A^{T}A ATA矩阵的特征向量矩阵,所以 V Σ 2 V T V\Sigma^{2} V^{\mathrm{T}} VΣ2VT便可以作为计算 A T A A^{T}A ATA的特征值的计算公式,所以在实数域内, A T A A^{T}A ATA的特征值 Λ \Lambda Λ便为非方阵矩阵 A A A的奇异值矩阵的平方。

所以 Σ \Sigma Σ表现形式如下: Σ = [ Σ 1 0 0 0 ] \Sigma=\left[\begin{array}{cc} \Sigma_{1} & 0 \\ 0 & 0 \end{array}\right] Σ=[Σ1000] Σ 1 \Sigma_{1} Σ1同样为对角矩阵,具体为 Σ 1 = diag ⁡ ( σ 1 , σ 2 , ⋯   , σ r ) , r = rank ⁡ ( A ) \Sigma_{1}=\operatorname{diag}\left(\sigma_{1}, \sigma_{2}, \cdots, \sigma_{r}\right), r=\operatorname{rank}(A) Σ1=diag(σ1,σ2,,σr),r=rank(A) σ 1 , σ 2 , ⋯   , σ r \sigma_{1}, \sigma_{2}, \cdots, \sigma_{r} σ1,σ2,,σr A A A矩阵的奇异值( A H A A^{H}A AHA的特征值的开方,为什么是 A H A^{H} AH呢,因为 A H A^{H} AH是复数域中的 A T A^{T} AT),并且从大到小排列。

SVD Numpy实现过程

import numpy as np
U, S, Vt = np.linalg.svd(A, full_matrices=True)# A为待分解的矩阵
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值