3月机器学习在线学习班第17课part2--SVD
机器学习
SVD全称Singular Value Decomposition,即为奇异值分解,是矩阵分解知识的一部分。矩阵分解常用的就是特征值分解,特征值分解针对的是对应矩阵为方阵的情况。而奇异值分解针对的是对应矩阵非方阵的情况。
矩阵分解
方阵的分解
1.假设A是M×M方阵,有M个特征向量,那么存在以下矩阵分解:
A=UΛU−1
其中
U的列为
A的特征向量,
Λ为对角矩阵,其中对角线上的值为
A的特征值,按照从大到小排列。
2.假设
A是
M×M方阵,并且是对称阵,有
M个特征向量,那么存在以下矩阵分解:
A=QΛQT
其中
Q的列为
A的特征向量,
Λ为对角矩阵,其中对角线上的值为
A的特征值,按照从大到小排列。由于对称阵的性质,有
QT=Q−1。
奇异值分解
假设此时的A不再是方阵,而是M×N矩阵,那么存在矩阵U是M×M矩阵,其中U的列为AAT的正交特征向量;存在矩阵V是N×N矩阵,其中V的列为ATA的正交特征向量;AAT与ATA的特征值相同,为λ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使用,感觉这一块过于复杂,以后专门介绍~