奇异值分解(SVD)和主成分分析(PCA)

来源:互联网 发布:lua软件使用 编辑:程序博客网 时间:2024/06/06 00:05


矩阵的奇异值是一个数学意义上的概念,一般是由奇异值分解(Singular Value Decomposition,简称SVD分解)得到。如果要问奇异值表示什么物理意义,那么就必须考虑在不同的实际工程应用中奇异值所对应的含义。

奇异值往往对应着矩阵中隐含的重要信息,且重要性和奇异值大小正相关。每个矩阵A都可以表示为一系列秩为1的“小矩阵”之和,而奇异值则衡量了这些“小矩阵”对于A的权重。奇异值的几何含义为:这组变换后的新的向量序列的长度

奇异值分解,就是把矩阵分成多个“分力”
奇异值的大小,就是各个“分力”的大小

设X是一个n*m的数据矩阵(在此不把它理解成变换),每一列表示一个数据点,每一行表示一维特征。

对X做主成分分析(PCA)的时候,需要求出各维特征的协方差,这个协方差矩阵是XX^T/n
(其实需要先把数据平移使得数据的均值为0,不过在此忽略这些细节)
PCA做的事情,是对这个协方差矩阵做对角化:XX^T/n = P\Lambda P^T
可以这样理解上式右边各项的物理意义:用一个均值为0的多维正态分布来拟合数据,则正交矩阵P的每一列是正态分布的概率密度函数的等高线(椭圆)的各个轴的方向,而对角矩阵\Lambda的对角线元素是数据在这些方向上的方差,它们的平方根跟椭圆各个轴的长度成正比。

现在来看数据矩阵X的奇异值分解:X=USV^T,其中U、V各列是单位正交的,S是对角阵,对角元非零。
由此式可以得到XX^T/n = USV^TVSU^T/n = U(S^2/n)U^T
也就是说,SVD中的矩阵U相当于PCA中的矩阵P,不过仅保留了\Lambda的非零特征值对应的那些特征向量,而S/\sqrt{n}=\Lambda^{1/2}(也只保留了非零特征值)。
所以,SVD中的U代表了X中数据形成的正态分布的轴的方向(一组单位正交基),S/\sqrt{n}代表了这些轴的长度(分布的标准差)。
那么V呢?可以把US放在一起看成一个由伸缩和旋转组成的坐标变换(不包括平移),数据矩阵X是由数据矩阵V^T经此变换得来的,而V^T的各列(V的各行)则服从标准正态分布。这也就是说,V^T的各维特征(V^T的各行,V的各列)是互不相关的且各自的方差均为1,也就是说V的各列是单位正交的。

现在换一个角度,把X中的各行看作数据,那么X=USV^T就也有了新的理解。
现在,V^T的各行(V的各列)就成了X的各行形成的正态分布的轴向(单位正交基),S/\sqrt{m}是这些轴的长度,而U中的各行数据服从标准正态分布,U的各列单位正交。

可以看到,对于X=USV^T这个式子,无论是把X的各行还是各列看成数据,都能解释U、V各列的单位正交性,但它们的单位正交性的含义不同(一个是单位正交基,一个是标准正态分布)。其中S除以数据个数的平方根后是标准正态分布在各个轴上的标准差,从两个角度看得到的标准差是成比例的。



原创粉丝点击