【线性代数】矩阵奇异值分解
矩阵奇异值分解主要应用在降维方面,和特征值分解为特征向量其实是一样的思想;
本质就是找一个低维空间,把高维空间的点映射到低维空间里面去,例如典型的PCA主成分析就用到了这一点;
特征值分解:
首先值得关注的是特征值分解问题,从特征值分解问题可以看出奇异值分解的一些思路;
通常对于数据降维来说,主要的目的是找到高维数据的主方向,采用主方向来作为坐标轴,来进行低维数据空间上的表示;
所以总体来说大致的思想就是去除一些没必要的特征维数,直接采用主要方向的特征维度,起到一个降维的作用;
对于实际场景,我们可以有A矩阵,大小为m*n,表示m个特征和n个样本,所以如果采用降维,则针对的是m进行维度消减,也就是从m个特征中选择部分特征,作为降维后的最终结果;
比较好常见的是直接采用来进行协方差矩阵构造即C=,直接采用方阵的特征值分解进行构造;
得到协方差矩阵之后,可以对其使用正交分解,分解为两个正交矩阵和特征向量相乘的形式;
选取前k个特征值和特征向量,即可完成降维;
奇异值分解:
特征值分解主要针对于方阵,而没法对于非标准矩阵进行分解,更别说有的方阵还不能使用特征值分解,所以此刻针对于非方阵矩阵分解,必须寻找一种办法来进行操作;
奇异值分解和质数分解有点像,即把一个数分解为三个基本质数的乘积;
基本的背后数学原理如下:
对于一个m*n的A,假设r(A)=r,且m>n,则r<=n<m必定恒成立;所以我们在Rn空间中可以找到n个标准正交基V,且在Rm空间找那个也可以找到m个标准正交基U,使得
恒成立;
其实从人话角度理解:
对于方阵来说,特征分解主要是寻找一组可以表示该变换的标准正交基,正交特征向量即为
坐标轴方向,而特征值即为坐标轴方向的拉伸程度;
对于存储信息的矩阵来说,矩阵的秩是对存储在矩阵中的独特信息的度量。秩越高,信息越多,矩阵的特征向量是数据的最大扩展或方差的方向;
如果选取前k个最大的特征值,据此选取相应的特征向量,其实就是忽略了变化最小的几个方向,从而达到舍弃部分贡献比较小的信息量,进行数据上的降维;
对于奇异值分解不同点在于,降维是通过高维空间到低维空间的映射进行的;
例如,给定一个矩阵A,m>n,m*n大小,不同的是,m代表特征,n代表样本数;
对于奇异值背后的定义,即存在一个为A的变换,使得低维空间标准基进行变换可以成为高维空间标准基的伸缩,以此可以建立某种联系;
但是对于该形式,并没有对A进行完全的分解,因为我们希望可以将U构造成完成的Rm空间下的标准正交基形式,所以可以通过补全m-n个m维空间下的基向量,并且在奇异值矩阵下添加多个零行,保证等式的成立;
可以表示为:
AV=UΣ,又因为V为标准正交向量矩阵,所以右乘并且进行变换,可以得到,即最终形式;
对于整体矩阵的表现形式,可以如下图:
其中值得注意的是Σ矩阵中之所以为r,是因为有可能存在奇异值为0的情况,要酌情隐去;
这也称为SVD分解形式;
而后续,根据奇异值越大,信息含量越大的问题,可以对右边的三个矩阵进行截断;
直接通过阶段,可以直接对A进行降维;