今天学习SVD原理,查看一些博文与资料,为了方便复习,做一下学习笔记。
SVD不仅是一个数学问题,在工程应用中的很多地方都有它的身影,比如前面讲的PCA,掌握了SVD原理后再去看PCA那是相当简单的,在推荐系统方面,SVD更是名声大噪,将它应用于推荐系统的是Netflix大奖的获得者Koren,可以在Google上找到他写的文章。
满秩分解
设 A∈Cm×nr ,那么存在 B∈Cm×rr , C∈Cr×nr ,使得 A=BC ,其中B为列满秩矩阵,C为行满秩矩阵;这样的分解为矩阵的满秩分解。
正交矩阵
定义
AAT=E ( E 为单位矩阵,
AT 表示“矩阵A的转置矩阵”。)或 ATA=E ,则n阶实矩阵A称为正交矩阵。
正交变换
正交矩阵是在欧几里得空间里的叫法,在酉空间里叫酉矩阵,一个正交矩阵对应的变换叫正交变换,这个变换的特点是不改变向量的尺寸和向量间的夹角,那么它到底是个什么样的变换呢?看下面这张图1:
通过图1,可知:
向量 x=[ab] , e1 与 e2 相互正交的单位向量, e1′ 与 e2′ 相互正交的单位向量;设 oa′=M⋅e1 , ob′=M⋅e2 ,其中 M 为线性变换的矩阵(即将坐标旋转)。
设置
M⋅e1 在 e11 模为 σ1 , M⋅e2 在 e21 的模为 σ2 ,则
M⋅e1=σ1⋅e1′(1)M⋅e2=σ2⋅e2′(2)
通过向量的性质我们知道:
x=(e1⋅x)⋅e1+(e2⋅x)⋅e2(3)Mx=(e1⋅x)M⋅e1+(e2⋅x)M⋅e2(4)
因为(1)与(2),则:
Mx=(e1⋅x)⋅σ1⋅e1′+(e2⋅x)⋅σ2⋅e2′(5)
在(5)中 e1⋅x 与 e2⋅x 是向量的内积,我们转换成向量转置来表示:
Mx=(e1Tx)⋅σ1⋅e1′+(e2Tx)⋅σ2⋅e2′(6)
M=e1′⋅σ1⋅e1T+e2′⋅σ2⋅(e2T)(7)
通过(7)知道:
M=UΣVT(8)
其中 U 矩阵的列向量分别是e1′ 和 e2′ , Σ 是一个对角矩阵,对角元素分别是对应的σ1 和 σ2,V矩阵的列向量分别是 e1 和 e2 。上角标T 表示矩阵 V <script type="math/tex" id="MathJax-Element-39">V</script> 的转置。
总结
这就表明任意的矩阵 M 是可以分解成三个矩阵。V表示了原始域的标准正交基,U表示经过M 变换后的co-domain的标准正交基,Σ表示了V 中的向量与U中相对应向量之间的关系。
未完待续。。。。。。。