目录
引言
学习降维PCA之前,还是有很多关于线性代数的知识需要先填充的,给PCA的学习作为一个底层理论支撑,以便更好的理解PCA原理。本篇并不是主讲PCA原理和实践,主要还是把一些前提信息都做一次详细的介绍,或者说数学推导里面涉及到的一些知识点。从根本入手,先把这些点悟彻了,才能真正贯通整个PCA推算流程。
分为两篇讲解,本篇为第一篇,主讲特征值与特征向量、特征值分解。
第二篇:PCA(主成分分析)原理涉及到的线性代数理论(二):协方差矩阵
一、特征值与特征向量
1.1 定义与求解
PCA原理涉及到特征值分解,所以有必要先弄明白特征值和特征向量有何含义。先来看看它们的定义:
设是n阶矩阵,如果存在实数和n维非零向量使得
(1)
则称为矩阵的特征值,非零向量称为矩阵对应于的特征向量。
(1)式也可以写成 ,
这是n个未知数n个方程的齐次线性方程组,它有非零解的充分必要条件是系数行列式
(2)
看了这个定义,线代没学好的同学是不是有点蒙圈了?所以说线性代数还是要学好啊。不要急,一步一步来……
首先很明显地看出,式(2)其实就是关于特征值的函数,只要给定矩阵,就能求出相应的特征值以及对应的特征向量,
也叫做特征多项式。
贴上《工程数学线性代数》里面一个简单的求解特征值和特征向量的例子:
看了例子是不是觉得求解其实也没想象中那么难,但是它们又分别代表什么含义呢?
1.2 矩阵和变换规则
在讲解含义之前,说明一些几何意义的描述:一个矩阵可以看做是一种变换规则,是一个线性函数,一次矩阵乘法就对应一次线性变换。比如矩阵左乘向量会得到一个新向量,而如果是用矩阵去左乘向量,得到的向量又会是另外一个新向量了。原因是:矩阵不同,变换规则也不同,也就变换成了不同的新向量。
相信有人还是不懂:what??矩阵代表一种变换规则??什么鬼??来看一下下面这个例子,演示一下如何将向量变换为另外一个向量:
例1:
假设矩阵,向量为,那么左乘以得:
也就是说向量通过矩阵这个变换规则变换成了向量:
在几何上的变换大概如下:
1.3 含义
从上面例1的图中可以看出,一个向量变换到另一个向量(),在几何空间中意味着需要方向上的变换和长度上的变换,也可以说成是方向上的旋转和长度上的伸缩。而如果矩阵左乘某些向量后只发生伸缩变换,不对这些向量产生旋转的效果,那么这些向量就称为这个矩阵的特征向量,伸缩的比例就是特征值。
例2:上面《工程数学线性代数》的例子中,我们已求得了矩阵的特征值为和,且分别对应的特征向量为和。
在这里我们做一下实验,用矩阵左乘以特征向量,即:
(a),
可以看出,所以式(a)也可以表示为 ,对比定义中的,是不是就可以得到了我们已经算出来的第一个特征值。
如上所述,特征值就是向量伸缩的比例,说明在矩阵的作用下,长度伸长为原来的两倍得到,而方向没有改变。将向量、在坐标系中表示就能看出来了:
同样的,用矩阵去左乘另外一个特征向量,得到了,其特征值为,也就是说明在矩阵的作用下,长度伸长为原来的四倍得到,方向也没有改变。
(注意:在特征向量同个方向上的其它向量也是该矩阵的特征向量,比如跟同方向上的或者也是矩阵的特征向量。即为矩阵的特征向量,那么(是一个常数)也是其特征向量(称为特征空间))
可以这么理解:特征值指明了长度伸缩的大小,而特征向量指明了伸缩的方向。另外一个说法:特征值表示了一个矩阵中的某个特征有多重要,而特征向量指明这个特征是什么。
1.4 性质
特征值与特征向量的性质:
- 只有方阵才有特征值和特征向量。
- 不同特征值对应的特征向量是线性无关的。
- 对于实对称矩阵来说,不同特征值对应的特征向量必定正交,也就是相互垂直。(PCA算法中是对协方差矩阵求其特征值和特征向量的,而协方差矩阵是一个实对称矩阵,因此这点性质很重要)
二、特征值分解
2.1 定义、公式证明
求出特征值和特征向量有何用呢?答案就是:可将矩阵特征分解。特征值分解的定义:
矩阵的个特征值分别为,对应的个特征向量为,如果这个特征向量线性无关,那么矩阵就可以用下式的特征分解表示:
其中是这个特征向量所组成的矩阵,即;
而是这个特征值作为对角线元素的对角阵,即。
证明:根据对特征值与特征向量的定义,对于矩阵的个特征值和个特征向量,存在如下关系:
转换成矩阵乘法:
两边等右乘,因此得到
上述性质中提到:实数矩阵特征向量相互正交,因此特征向量矩阵是一个正交矩阵。根据正交矩阵的逆等于其转置的性质,即,那么上式也可表示为
2.2 总结
关于对特征值分解的意义及总结,引用了这篇博客的说法:
在上式中,分解得到的矩阵是一个对角阵,里面的特征值是由大到小排列的,这些特征值所对应的特征向量就是描述这个矩阵变化方向(从主要的变化到次要的变化排列)
当矩阵是高维的情况下,那么这个矩阵就是高维空间下的一个线性变换,这个线性变化可能没法通过图片来表示,但是可以想象,这个变换也同样有很多的变换方向,我们通过特征值分解得到的前个特征向量,那么就对应了这个矩阵最主要的个变化方向。我们利用这前个变化方向,就可以近似这个矩阵(变换)。也就是之前说的:提取这个矩阵最重要的特征。
总结一下,特征值分解可以得到特征值与特征向量,特征值表示的是这个特征到底有多重要,而特征向量表示这个特征是什么,可以将每一个特征向量理解为一个线性的子空间,我们可以利用这些线性的子空间干很多的事情。不过,特征值分解也有很多的局限,比如说变换的矩阵必须是方阵。
引用及参考:
[1] 《工程数学线性代数第六版》
[2] 特征值和特征向量
[3] 矩阵的各种分解
[4] 特征值(eigenvalue)特征向量(eigenvector)特征值分解(eigenvalue decomposition)
[5] 机器学习中的数学(5)-强大的矩阵奇异值分解(SVD)及其应用
(欢迎转载,转载请注明出处)