PCA(主成分分析)原理涉及到的线性代数理论(一):特征值与特征向量、特征值分解

目录

引言

一、特征值与特征向量

1.1 定义与求解

1.2 矩阵和变换规则

1.3 含义

1.4 性质

二、特征值分解

2.1 定义、公式证明

2.2 总结


引言

学习降维PCA之前,还是有很多关于线性代数的知识需要先填充的,给PCA的学习作为一个底层理论支撑,以便更好的理解PCA原理。本篇并不是主讲PCA原理和实践,主要还是把一些前提信息都做一次详细的介绍,或者说数学推导里面涉及到的一些知识点。从根本入手,先把这些点悟彻了,才能真正贯通整个PCA推算流程。

分为两篇讲解,本篇为第一篇,主讲特征值与特征向量、特征值分解。

第二篇:PCA(主成分分析)原理涉及到的线性代数理论(二):协方差矩阵


一、特征值与特征向量

1.1 定义与求解

PCA原理涉及到特征值分解,所以有必要先弄明白特征值和特征向量有何含义。先来看看它们的定义:

A是n阶矩阵,如果存在实数\lambda和n维非零向量x使得

                                                                             Ax=\lambda x                                         (1)

则称\lambda为矩阵A特征值,非零向量x称为矩阵A对应于\lambda特征向量

(1)式也可以写成                                            (A-\lambda E)x=0  ,

这是n个未知数n个方程的齐次线性方程组,它有非零解的充分必要条件是系数行列式

                                                                          |A-\lambda E|=0                                     (2)

看了这个定义,线代没学好的同学是不是有点蒙圈了?所以说线性代数还是要学好啊。不要急,一步一步来……

首先很明显地看出,式(2)其实就是关于特征值\lambda的函数,只要给定矩阵A,就能求出相应的特征值\lambda以及对应的特征向量,

|A-\lambda E|也叫做特征多项式

贴上《工程数学线性代数》里面一个简单的求解特征值和特征向量的例子:            

                            

看了例子是不是觉得求解其实也没想象中那么难,但是它们又分别代表什么含义呢?

1.2 矩阵和变换规则

在讲解含义之前,说明一些几何意义的描述:一个矩阵可以看做是一种变换规则,是一个线性函数,一次矩阵乘法就对应一次线性变换。比如矩阵A左乘向量x_{1}会得到一个新向量,而如果是用矩阵B去左乘向量x_{1},得到的向量又会是另外一个新向量了。原因是:矩阵不同,变换规则也不同,x_{1}也就变换成了不同的新向量。

相信有人还是不懂:what??矩阵代表一种变换规则??什么鬼??来看一下下面这个例子,演示一下如何将向量X变换为另外一个向量Y

例1:

假设矩阵A=\left [ \begin{matrix} a_{11} & a_{12}\\ a_{21} & a_{22} \end{matrix}\right ],向量为X=\begin{bmatrix} x_{1}\\ x_{2} \end{bmatrix},那么A左乘以X得:

                                    AX=\left [ \begin{matrix} a_{11} & a_{12}\\ a_{21} & a_{22} \end{matrix}\right ]\begin{bmatrix} x_{1}\\ x_{2} \end{bmatrix}=\begin{bmatrix} a_{11} x_{1}+a_{12}x_{2}\\ a_{21}x_{1}+a_{22}x_{2} \end{bmatrix}=\begin{bmatrix} y_{1}\\ y_{2} \end{bmatrix}=Y

也就是说向量X通过矩阵A这个变换规则变换成了向量Y:

                                                           X=\begin{bmatrix} x_{1}\\ x_{2} \end{bmatrix} \overset{A}{\rightarrow}\begin{bmatrix} y_{1}\\ y_{2} \end{bmatrix}=Y

在几何上的变换大概如下:

                                        

1.3 含义

从上面例1的图中可以看出,一个向量变换到另一个向量(X\rightarrow Y),在几何空间中意味着需要方向上的变换和长度上的变换,也可以说成是方向上的旋转和长度上的伸缩。而如果矩阵A左乘某些向量x_{i}只发生伸缩变换,不对这些向量产生旋转的效果,那么这些向量就称为这个矩阵的特征向量,伸缩的比例就是特征值。

例2:上面《工程数学线性代数》的例子中,我们已求得了矩阵A=\left [ \begin{matrix} 3 & -1\\ -1 & 3 \end{matrix}\right ]的特征值为\lambda _{1}=2\lambda _{2}=4,且分别对应的特征向量为p_{1}=\begin{bmatrix} 1\\ 1 \end{bmatrix}p_{2}=\begin{bmatrix} -1\\ 1 \end{bmatrix}

在这里我们做一下实验,用矩阵A=\left [ \begin{matrix} 3 & -1\\ -1 & 3 \end{matrix}\right ]左乘以特征向量p_{1}=\begin{bmatrix} 1\\ 1 \end{bmatrix},即:

                                Ap_{1}=\left [ \begin{matrix} 3 & -1\\ -1 & 3 \end{matrix}\right ]\begin{bmatrix} 1\\ 1 \end{bmatrix}=\begin{bmatrix} 3\times 1+(-1)\times 1\\ (-1)\times1+3\times1 \end{bmatrix}=\begin{bmatrix} 2\\ 2 \end{bmatrix}=p_{1}'          (a),

可以看出p_{1}'=\begin{bmatrix} 2\\ 2 \end{bmatrix}=2\begin{bmatrix} 1\\ 1 \end{bmatrix}=2p_{1},所以式(a)也可以表示为 Ap_{1}=2p_{1} ,对比定义中的Ax=\lambda x,是不是就可以得到了我们已经算出来的第一个特征值\lambda_{1} =2

如上所述,特征值就是向量伸缩的比例,\lambda_{1} =2说明p_{1}在矩阵A的作用下,长度伸长为原来的两倍得到p_{1}',而方向没有改变。将向量p_{1}p_{1}'在坐标系中表示就能看出来了:

                                            

同样的,用矩阵A=\left [ \begin{matrix} 3 & -1\\ -1 & 3 \end{matrix}\right ]去左乘另外一个特征向量p_{2}=\begin{bmatrix} -1\\ 1 \end{bmatrix},得到了p_{2}'=\begin{bmatrix} -4\\ 4 \end{bmatrix},其特征值为\lambda_{2} =4,也就是说明p_{2}在矩阵A的作用下,长度伸长为原来的四倍得到p_{2}',方向也没有改变。

(注意:在特征向量同个方向上的其它向量也是该矩阵的特征向量,比如跟p_{1}=\begin{bmatrix} 1\\ 1 \end{bmatrix}同方向上的\begin{bmatrix} 0.5\\ 0.5 \end{bmatrix}或者\begin{bmatrix} 1.5\\ 1.5 \end{bmatrix}也是矩阵A的特征向量。即p_{i}为矩阵A的特征向量,那么kp_{i}k是一个常数)也是其特征向量(称为特征空间))

可以这么理解:特征值指明了长度伸缩的大小,而特征向量指明了伸缩的方向。另外一个说法:特征值表示了一个矩阵中的某个特征有多重要,而特征向量指明这个特征是什么。

1.4 性质

特征值与特征向量的性质:

  • 只有方阵才有特征值和特征向量。
  • 不同特征值对应的特征向量是线性无关的。
  • 对于实对称矩阵来说,不同特征值对应的特征向量必定正交,也就是相互垂直。(PCA算法中是对协方差矩阵求其特征值和特征向量的,而协方差矩阵是一个实对称矩阵,因此这点性质很重要)

二、特征值分解

2.1 定义、公式证明

求出特征值和特征向量有何用呢?答案就是:可将矩阵A特征分解。特征值分解的定义:

矩阵An个特征值分别为\lambda _{1},\lambda _{2},\cdots ,\lambda _{n},对应的n个特征向量为q_{1},q_{2},\cdots ,q_{n},如果这n个特征向量线性无关,那么矩阵A就可以用下式的特征分解表示:

                                                                                       A=Q\Sigma Q^{-1}

其中Q是这n个特征向量所组成的矩阵,即Q=[q_{1},q_{2},\cdots ,q_{n}]

\Sigma是这n个特征值作为对角线元素的对角阵,即\Sigma=diag(\lambda _{1},\lambda _{2},\cdots ,\lambda_{n})

证明:根据对特征值与特征向量的定义,对于矩阵An个特征值\lambda _{1},\lambda _{2},\cdots ,\lambda _{n}n个特征向量q_{1},q_{2},\cdots ,q_{n},存在如下关系:

                                                                              \left\{\begin{matrix} Aq_{1}=\lambda_{1}q_{1}\\ Aq_{2}=\lambda_{2}q_{2}\\ \cdots \\ Aq_{n}=\lambda_{n}q_{n} \end{matrix}\right.

转换成矩阵乘法:

                                              A[q_{1},q_{2},\cdots ,q_{n}]=[q_{1},q_{2},\cdots ,q_{n}]\begin{bmatrix} \lambda_{1} &0 &\cdots &0 \\ 0&\lambda_{2} &\cdots & 0\\ \vdots & \vdots & \ddots &\vdots \\ 0& 0 & \cdots &\lambda_{n} \end{bmatrix}  

                                                                                AQ=Q\Sigma

两边等右乘Q^{-1},因此得到                                     A=Q\Sigma Q^{-1}

上述性质中提到:实数矩阵特征向量相互正交,因此特征向量矩阵Q是一个正交矩阵。根据正交矩阵的逆等于其转置的性质,即Q^{T}=Q^{-1},那么上式也可表示为                        A=Q\Sigma Q^{T}

2.2 总结

关于对特征值分解的意义及总结,引用了这篇博客的说法:

在上式中,分解得到的\Sigma矩阵是一个对角阵,里面的特征值是由大到小排列的,这些特征值所对应的特征向量就是描述这个矩阵变化方向(从主要的变化到次要的变化排列

当矩阵是高维的情况下,那么这个矩阵就是高维空间下的一个线性变换,这个线性变化可能没法通过图片来表示,但是可以想象,这个变换也同样有很多的变换方向,我们通过特征值分解得到的前n个特征向量,那么就对应了这个矩阵最主要的n个变化方向。我们利用这前n个变化方向,就可以近似这个矩阵(变换)。也就是之前说的:提取这个矩阵最重要的特征。

总结一下,特征值分解可以得到特征值与特征向量,特征值表示的是这个特征到底有多重要,而特征向量表示这个特征是什么,可以将每一个特征向量理解为一个线性的子空间,我们可以利用这些线性的子空间干很多的事情。不过,特征值分解也有很多的局限,比如说变换的矩阵必须是方阵


引用及参考:

[1] 《工程数学线性代数第六版》

[2] 特征值和特征向量

[3] 矩阵的各种分解

[4] 特征值(eigenvalue)特征向量(eigenvector)特征值分解(eigenvalue decomposition)

[5] 机器学习中的数学(5)-强大的矩阵奇异值分解(SVD)及其应用

(欢迎转载,转载请注明出处)  

猜你喜欢

转载自blog.csdn.net/qq_42267603/article/details/88814343