[关闭]
@frank-shaw 2015-07-25T14:53:10.000000Z 字数 1338 阅读 2862

3月机器学习在线学习班第17课part2--SVD

机器学习


SVD全称Singular Value Decomposition,即为奇异值分解,是矩阵分解知识的一部分。矩阵分解常用的就是特征值分解,特征值分解针对的是对应矩阵为方阵的情况。而奇异值分解针对的是对应矩阵非方阵的情况。

矩阵分解

方阵的分解

1.假设AM×M方阵,有M个特征向量,那么存在以下矩阵分解:

A=UΛU1

其中U的列为A的特征向量,Λ为对角矩阵,其中对角线上的值为A的特征值,按照从大到小排列。
2.假设AM×M方阵,并且是对称阵,有M个特征向量,那么存在以下矩阵分解:
A=QΛQT

其中Q的列为A的特征向量,Λ为对角矩阵,其中对角线上的值为A的特征值,按照从大到小排列。由于对称阵的性质,有QT=Q1

奇异值分解

假设此时的A不再是方阵,而是M×N矩阵,那么存在矩阵UM×M矩阵,其中U的列为AAT的正交特征向量;存在矩阵VN×N矩阵,其中V的列为ATA的正交特征向量;AATATA的特征值相同,为λ1,...,λr,其中r为矩阵的秩,则存在奇异值分解:

A=UΛVT

ΛM×N矩阵,其中Λii=λi=σi,其余位置数值为0,且σi的值按照从大到小排序。我们称σi为矩阵A的奇异值。
奇异值分解的图形表示如下:
奇异值分解示意图

A乘以转置矩阵AT,可得:

AAT=UΛVTVΛUT=UΛ2UT

该式正是对称矩阵的分解。

SVD的应用

数据压缩

在实际应用中,往往只保留Λ的前k个较大的数,其余的都去掉。由特征值相关的那一套理论可以知道,特征值较大的部分占有的数据信息量较大,在一定程度上可以对数据做到还原。而有些时候,因为实际计算的存储空间有限,我们会使用SVD来进行数据压缩处理:使用较少的空间来尽量保存原来的数据。如下图所示:
数据压缩
我们想要保存左边的矩阵,那么经过SVD分解之后得到右边的三个矩阵,通过只取Λ的前k个较大的数,我们使用右边三个橙色的小矩阵来表示左边的大矩阵。相应的,存储三个小矩阵的空间相对而言会小一点。

求伪逆

如果矩阵A的奇异值分解为A=UΛVT,那么A的伪逆为A+=UΛ+VT。其中Λ+Λ的伪逆,是将主对角线上每个非零元素都求倒数之后再转置得到的。正是因为Λ+容易求得,所以SVD会被用于求伪逆中。

SVD用于推荐系统

看了一下《推荐系统:技术、ing股及高效算法》里介绍的SVD使用,感觉这一块过于复杂,以后专门介绍~

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注