欢迎来到天天文库
浏览记录
ID:26375465
大小:41.61 KB
页数:5页
时间:2018-11-26
《PCA算法的数学知识---特征值分解和奇异值分解.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、PCA算法的数学知识---特征值分解和奇异值分解:1)特征值: 如果说一个向量v是方阵X的特征向量,将一定可以表示成下面的形式: 这时候λ就被称为特征向量v对应的特征值,一个矩阵的一组特征向量是一组正交向量。特征值分解是将一个矩阵分解成下面的形式:其中Q是这个矩阵X的特征向量组成的矩阵,Σ是一个对角阵,每一个对角线上的元素就是一个特征值。首先,要明确的是,乘以一个矩阵其实就是一个线性变换,而且将一个矩阵乘以一个向量后得到的向量,其实就相当于对这个向量进行了线性变换。如果我们想要描述好一个变换,
2、那我们就描述好这个变换主要的变化方向就好了。分解得到的Σ矩阵是一个对角阵,里面的特征值是由大到小排列的,这些特征值所对应的特征向量就是描述这个矩阵变化方向(从主要的变化到次要的变化排列)。通过特征值分解得到的前N个特征向量,就对应了这个矩阵最主要的N个变化方向。我们利用这前N个变化方向,就可以近似这个矩阵(变换)。也就是:提取这个矩阵最重要的特征。总结一下,特征值分解可以得到特征值与特征向量,特征值表示的是这个特征到底有多重要,而特征向量表示这个特征是什么,可以将每一个特征向量理解为一个线性的子空间,
3、我们可以利用这些线性的子空间干很多的事情。不过,特征值分解也有很多的局限,比如说变换的矩阵必须是方阵。2)奇异值: 特征值分解是一个提取矩阵特征很不错的方法,但是它只是对方阵而言的,而奇异值分解是一个能适用于任意的矩阵的一种分解的方法:假设X是一个n*p的矩阵,那么得到的U是一个n*n的方阵(里面的向量是正交的,U里面的向量称为左奇异向量),Σ是一个n*p的矩阵(除了对角线的元素都是0,对角线上的元素称为奇异值),(V的转置)是一个p*p的矩阵,里面的向量也是正交的,V里面的向量称为右奇异向量)。
4、那么奇异值和特征值是怎么对应起来的呢?首先,我们将一个矩阵X的转置乘以X,将会得到一个方阵,我们用这个方阵求特征值可以得到: 这里得到的v,就是我们上面的右奇异向量。此外我们还可以得到: 这里的σ就是上面说的奇异值,u就是上面说的左奇异向量。奇异值σ跟特征值类似,在矩阵Σ中也是从大到小排列,而且σ的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上了。也就是说,我们也可以用前r大的奇异值来近似描述矩阵,这里定义一下部分奇异值分解: r是一个远小于n、
5、p的数,右边的三个矩阵相乘的结果将会是一个接近于X的矩阵,在这儿,r越接近于p,则相乘的结果越接近于X。而这三个矩阵的面积之和(在存储观点来说,矩阵面积越小,存储量就越小)要远远小于原始的矩阵X,我们如果想要压缩空间来表示原矩阵X,我们存下这里的三个矩阵:U、Σ、V就好了。奇异值与主成分分析(PCA):PCA的全部工作简单点说,就是对原始的空间中顺序地找一组相互正交的坐标轴,第一个轴是使得方差最大的,第二个轴是在与第一个轴正交的平面中使得方差最大的,第三个轴是在与第1、2个轴正交的平面中方差最大的,这
6、样假设在N维空间中,我们可以找到N个这样的坐标轴,我们取前r个去近似这个空间,这样就从一个N维的空间压缩到r维的空间了,但是我们选择的r个坐标轴能够使得空间的压缩使得数据的损失最小。假设矩阵每一行表示一个样本,每一列表示一个特征,用矩阵的语言来表示,对一个n*p的矩阵X进行坐标轴的变化,P就是一个变换的矩阵,从一个p维的空间变换到另一个p维的空间,在空间中就会进行一些类似于旋转、拉伸的变化。 而将一个n*p的矩阵X变换成一个n*r的矩阵,这样就会使得本来有p个特征的样本,变成了有r个特征了(r
7、),这r个其实就是对p个特征的一种提炼。用数学语言表示就是: 但是这个跟奇异值分解(SVD)什么关系呢?之前谈到,SVD得出的奇异向量也是从奇异值由大到小排列的,按PCA的观点来看,就是方差最大的坐标轴就是第一个奇异向量,方差次大的坐标轴就是第二个奇异向量…我们回忆一下之前得到的SVD式子: 在矩阵的两边同时乘上一个矩阵V,由于V是一个正交的矩阵,所以V转置乘以V得到单位阵I,所以可以化成后面的式子 将后面的式子与X*P那个n*p的矩阵变换为n*r的矩阵的式子对照看看,在这里,其实V就
8、是P,也就是一个变化的向量,即一组新的坐标基,也叫主成分矩阵,而相当于原数据在新坐标基下的坐标,叫做得分矩阵。这里是将一个n*p的矩阵压缩到一个n*r的矩阵,也就是对列进行压缩。如果我们想对行进行压缩(在PCA的观点下,对行进行压缩可以理解为,将一些相似的样本合并在一起,或者将一些没有太大价值的样本去掉)怎么办呢?同样我们写出一个通用的行压缩例子: 这样就从一个n行的矩阵压缩到一个r行的矩阵了,对SVD来说也是一样的,我们对SVD分解的式子两边乘以U
此文档下载收益归作者所有