一.原理
SVD的性质:
SVD计算举例:
二.
SVD(奇异值分解):
优点:简化数据,去除噪声点,提高算法的结果;
缺点:数据的转换可能难以理解;
适用于数据类型:数值型。
通过SVD对数据的处理,我们可以使用小得多的数据集来表示原始数据集,从有噪声的数据中抽取相关特征,这样做实际上是去除了噪声和冗余信息,以此达到了优化数据、提高结果的目的。
最早的SVD应用之一是信息检索。我们称利用SVD的方法为隐性语义检索(LSI)或隐形语义分析(LSA)。
在LSI中,一个矩阵是由文档和词语组成的,当我们在该矩阵上应用SVD时,就会构建出多个奇异值。这些奇异值代表了文档中的概念或主题,这一特点可以用于更高效的文档搜索。如果我们从上千篇相似的文档中抽取出概念,那么同义词就会映射为同一概念。
SVD的另一个应用就是推荐系统。简单版本的推荐系统能够计算项或者相似度。更先进的方法则先利用SVD从数据中构建一个主题空间,然后再在该空间下计算其相似度。
SVD也可用于特征压缩(数据降维)。将SVD用于PCA主成分分析,来做数据压缩和降噪。
三.SVD的库实现
SCV实现的相关线性代数在Numpy中有一个称为线性代数linalg的线性代数工具箱。下面演示其用法对于一个简单的矩阵:
from numpy import *
from numpy import linalg as la
df = mat(array([[1,1],[1,7]]))
U,Sigma,VT = la.svd(df)
print(U)
print(Sigma)
print(VT)
-----------------------