介绍
线性代数是机器学习领域的基础,其中一个最重要的概念是奇异值分解(SVD),本文尽可能简洁的介绍SVD(奇异值分解)算法的基础理解,以及它在现实世界中的应用。
SVD是最广泛使用的无监督学习算法之一,它在许多推荐系统和降维系统中居于核心位置,这些系统是全球公司如谷歌、Netflix、Facebook、YouTube等的核心技术。
简单来说,SVD是将一个任意矩阵分解为三个矩阵。所以如果我们有一个矩阵A,那么它的SVD可以表示为:Am×n=Um×mSm×nVn×nT。
其中A时要分解的矩阵,U和V都是正交矩阵,S是非负对角阵。
用矩阵的形式表示为:
m×mx11⋮xm1x12⋮m×n⋯⋱xmnx1n⋮⋯=m×mu11⋮u1mum1⋮ummm×nσ1⋮00σr0n×nv11⋮vn1v1n⋮vnnPS: 我们通常将具有较大特征值的向量排列在前,而较小特征值的向量则排在后面。
与特征值分解相比,奇异值分解可以应用于非方阵。在SVD中,U和 V 对于任何矩阵都是可逆的,并且它们是正交归一的,这是我们所喜爱的特性。
示例
A=(32233−2)我们分别计算矩阵与其转置的乘积和其转置与矩阵的成绩:
AAT=(178817)ATA=131321213−22−28然后求解AAT的特征值和特征向量:
特征值:λ1=25,λ2=9 对应的特征向量:
u1=(1/21/2)u2=(1/2−1/2)即矩阵U表示为:
U=(u1,u2)=(1/21/21/2−1/2)同理求解ATA的特征值和特征向量:
特征值: λ1=25,λ2=9 对应的特征向量:
v1=1/21/20v2=1/18−1/184/18v3=2/3−2/3−1/3即矩阵V表示为:
V=(v1,v2,v3)=1/21/201/18−1/184/182/3−2/3−1/3奇异值是正特征值的平方根,即5和3。因此矩阵A的SVD分解为:
A=USVT=(1/21/21/2−1/2)(500300)1/21/182/31/2−1/18−2/304/18−1/3SVD分解证明
为了得到矩阵A的SVD分解,我们要求出A=USVT中的U,S,V。
因为U,V都为正交矩阵,所以可得:UTU=I,VTV=I,其中I为单位矩阵。AT=(USVT)T=VSTUT=VSUT,由此可得ATA=VSUTUSVT=VS2VT=VS2V−1。
又因为(ATA)T=ATA,所以ATA为对称矩阵,因此可以直接按特征值和特征向量进行SVD分解,分解后为VS2V−1,由此可知V为ATA的特征向量组成的矩阵,S为ATA的特征值组成的对角矩阵的平方根。
同理可得U为AAT的特征向量组成的矩阵,S为AAT的特征值组成的对角矩阵的平方根。
因此只要求出AAT和ATA对应的所有特征向量和特征值即可求出A的奇异向量和奇异值
PS: 当矩阵A的行空间和列空间为1时,我们可以直接算出非零奇异值对应的行空间奇异向量v1和列奇异向量u1。
SVD奇异值分解
2025年 07月29日 00:00 星期二 852 字 · 5 分钟