特征值与奇异值的基础知识

Posted litaotao_doctor

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了特征值与奇异值的基础知识相关的知识,希望对你有一定的参考价值。

  在看论文的过程中,经常遇到涉及到特征值、特征向量、奇异值、右奇异向量等相关知识的地方,每次都是看得似懂非懂。本文将从特征值和奇异值相关的基础知识入手,探究奇异值和特征值的内涵,进而对特征值和奇异的知识进行梳理。

  特征值分解和奇异值分解(SVD)在主成分分析(PCA)和机器学习领域都有广泛的应用。PCA的实现由两种方法,一种是特征值分解,另一种是奇异值分解,特征值分解和奇异值分解的目的是一样的,都是提取出一个矩阵最重要的特性。特征值和奇异值在大部分人的印象中都只是停留在线性代数中,对他们特殊的物理意义及应用背景不胜了解。实际上特征值和奇异值都有其特定的物理意义,如奇异值分解可以将一个复杂的矩阵分解成几个小且简单的矩阵相乘,这些小矩阵就包含的矩阵的重要特性(奇异值、左右奇异值向量等)。有人在博文中用“描述一个人”的例子来解释过奇异值分解:“描述一个人说这个人长得浓眉大眼,方脸,络腮胡,而且带个黑框的眼镜,这样寥寥的几个特征,就让别人脑海里面就有一个较为清楚的认识,实际上,人脸上的特征有着无数种的,之所以能这么描述,是因为人天生就有着非常好的抽取重要特征的能力。”其中的“人脸上的特征有着无数种”就构成了待分解的矩阵,“寥寥得几个特征”代表了分解后的几个小矩阵,“人天生的抽取能力”就是一个奇异值分解(SVD)的过程。说了这么多关于奇异值分解的物理意义,接下来将依次介绍特征值和奇异值的相关知识。

  1、特征值

  一个矩阵(方阵A)乘以一个向量(X)的结果仍然是一个同维数的向量。因此矩阵乘法(AX)对应一个表换(旋转、平移、缩放),即将一个向量变成同维数的另一个向量。对于特征值和特征向量,我们不妨先回顾下线性代数中对特征值和特征向量的定义:设A是n阶方阵,如果存在 λ 和n维非零向量X,使  ,则 λ 称为方阵A的一个特征值,X为方阵A对应于或属于特征值 λ 的一个特征向量。从定义可以看出,对特征向量x进行A变换的实质是将特征向量进行缩放,缩放因子为特征值λ。因此,特征向量的代数上含义是:将矩阵乘法转换为数乘操作;特征向量的几何含义是:特征向量通过方阵A变换只进行伸缩,而保持特征向量的方向不变。特征值表示的是这个特征到底有多重要,类似于权重,而特征向量在几何上就是一个点,从原点到该点的方向表示向量的方向。

  一个变换方阵的所有特征向量组成了这个变换矩阵的一组基。所谓基,可以理解为坐标系的轴。我们平常用到的大多是直角坐标系,在线性代数中可以把这个坐标系扭曲、拉伸、旋转,称为基变换。我们可以按需求去设定基,但是基的轴之间必须是线性无关的,也就是保证坐标系的不同轴不要指向同一个方向或可以被别的轴组合而成,否则的话原来的空间就“撑”不起来了。从线性空间的角度看,在一个定义了内积的线性空间里,对一个N阶对称方阵进行特征分解,就是产生了该空间的N个标准正交基,然后把矩阵投影到这N个基上。N个特征向量就是N个标准正交基,而特征值的模则代表矩阵在每个基上的投影长度。特征值越大,说明矩阵在对应的特征向量上的方差越大,功率越大,信息量越多。总结一下,特征值分解可以得到特征值与特征向量,特征值表示的是这个特征到底有多重要,而特征向量表示这个特征是什么,可以将每一个特征向量理解为一个线性的子空间,我们可以利用这些线性的子空间干很多的事情。不过,特征值分解也有很多的局限,比如说变换的矩阵必须是方阵。

  在机器学习特征提取中,意思就是最大特征值对应的特征向量方向上包含最多的信息量,如果某几个特征值很小,说明这几个方向信息量很小,可以用来降维,也就是删除小特征值对应方向的数据,只保留大特征值方向对应的数据,这样做以后数据量减小,但有用信息量变化不大,PCA降维就是基于这种思路。

  2、特征值分解 

设A有n个特征值及特征向量,则:

将上面的写到一起成矩阵形式:

若(x1,x2,...,xn)可逆,则左右两边都求逆,则方阵A可直接通过特征值和特征向量进行唯一的表示,令

Q=(x1,x2,...,xn)

Σ = diag(λ1, λ2, ..., λn)

则  ,该表达式称为方阵的特征值分解,这样方阵A就被特征值和特征向量唯一表示。

  3、奇异值

  特征值及特征值分解都是针对方阵而言,现实世界中,我们看到的大部分矩阵不是方阵,比如每道数据有M个点,一共采集了N道数据,这样就形成了一个N*M的矩阵,那么怎样才能像方阵一样提取出它的特征,以及特征的重要性。奇异值分解就是来干这个事情的。奇异值相当于方阵中的特征值,奇异值分解相当于方阵中的特征值分解。

  4、奇异值分解(SVD)

  奇异值分解是一种适用于任意矩阵的分解方法。为了理解奇异值分解,首先从几何层面来说明二维的奇异值分解:对于任意的2*2矩阵,通过SVD可以将一个相互垂直的网格变换到另外一个相互垂直的网格。可以通过向量的方式来描述这个事实:首先,选择两个相互正交的单位向量v1、v2,向量Mv1、Mv2正交(如下图1)。u1、u2(如下图2)分别表示Mv1、Mv2的单位向量。σ1 * u1 =  Mv1 和 σ2 * u2 =  Mv2。σ1 和 σ2分别表示这不同方向向量上的模,也称作为矩阵M 的奇异值。

         

                    图1                                  图2

  这样我们就有了关系式:Mv1 = σ1u1Mv2 = σ2u2

  向量x在变换前可以表示成:x = (v1x)v1 + (v2x)v2

  经过M变换后:Mx = (v1x)Mv1 + (v2x)Mv2 
          Mx = (v1x) σ1u1 + (v2x) σ2u2

      其中:向量的内积可以用向量的转置来表示,vx = vTx = |v||x|cosθ

      因此上面的式子可以转化为:Mx = u1σ1 v1Tx + u2σ2 v2Tx 

                    M =u1σ1 v1T + u2σ2 v2T

  上述的式子经常表示成:M =UΣVT 

  U 矩阵(左奇异矩阵)的列向量分别是u1,u2MMT的特征向量);Σ是一个对角矩阵,对角元素分别是对应的σ1 和 σ2V矩阵(右奇异矩阵)的列向量分别是v1,v2MTM的特征向量)。上角标T 表示矩阵 的转置。这就表明任意的矩阵 M 是可以分解成三个矩阵。V表示了原始域的标准正交基,U表示经过M 变换后的co-domain的标准正交基,Σ表示了中的向量与u中相对应向量之间的关系。从图3反映了几个相乘矩阵的大小关系。

                        图3

  5、特征值和奇异值关系 

  特征值和奇异值既然各自描述了矩阵中特征(特征向量和奇异值向量)的重要性,那么必然存在一定的关系。一般矩阵A,将A与其转置相乘ATA将会得到一个方阵,便可求得方阵ATA的特征值(ATAviivi)。这里的得到的特征向量vi上面的右奇异向量,所有特征向量一起组成了右奇异矩阵。此外我们还可以得到奇异值和左奇异向量(矩阵):

  这里的σ就是上面说的奇异值,u就是上面说的左奇异向量。奇异值σ跟特征值类似,在矩阵Σ中也是从大到小排列,而且σ的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上了。也就是说,我们也可以用前r大的奇异值来近似描述矩阵,这里定义一下部分奇异值分解

  r是一个远小于m、n的数,这样矩阵的乘法看起来像是下面的样子:

  右边的三个矩阵相乘的结果将会是一个接近于A的矩阵,在这儿,r越接近于n,则相乘的结果越接近于A。而这三个矩阵的面积之和(在存储观点来说,矩阵面积越小,存储量就越小)要远远小于原始的矩阵A,我们如果想要压缩空间来表示原矩阵A,我们存下这里的三个矩阵:U、Σ、V就好了。

 

参考:

  奇异值分解及几何意义:http://blog.csdn.net/redline2005/article/details/24100293   

  机器学习中的数学(5)-强大的矩阵奇异值分解(SVD)及其应用:http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html    

  线性判别分析(LDA), 主成分分析(PCA): http://www.cnblogs.com/LeftNotEasy/archive/2011/01/08/lda-and-pca-machine-learning.html

以上是关于特征值与奇异值的基础知识的主要内容,如果未能解决你的问题,请参考以下文章

关于线性模型你可能还不知道的二三事(三特征值与奇异值的魔力)

机器学习数学基础知识备忘

Python与矩阵论——特征值与特征向量

机器学习的数学基础 - 特征分解与奇异值分解

奇异值分解(SVD)原理及应用

奇异值分解