奇异值分解(Singular Value Decomposition,SVD)是一种重要的矩阵分解(Matrix Decomposition)方法,可以看做对称方正在任意矩阵上的一种推广,该方法在机器学习的中占有重要地位。
首先讲解一下SVD的理论,然后用python实现SVD,并应用于图像压缩。
1、奇异值分解(SVD):
设有 A是一个m×n 的实矩阵,则存在一个分解使得:
U 和 V 都是正交矩阵 ,即:
Σ 是一个非负实对角矩阵,U 和 V 的列分别叫做 A 的 左奇异向量和 右奇异向量,Σ 的对角线上的值叫做 A 的奇异值。关于这三个矩阵的求解,如下:
1)、U 的列由 AAT 的特征向量构成,且特征向量为单位列向量
2)、V 的列由 ATA 的特征向量构成,且特征向量为单位列向量
3)、Σ 的对角元素来源于 AAT 或 ATA 的特征值的平方根,并且是按从大到小的顺序排列的。值越大可以理解为越重要。
举个栗子,假设:
首先计算下列矩阵
的特征值和特征向量,得到特征四个特征值为:90.7354949、0.264505087、7.62118971e-19、0。