您的位置:首页 > 其它

矩阵的特征值分解与奇异值分解

2018-03-20 16:39 766 查看
最近在看PCA降维的过程中,发现与特征值分解与奇异值分解都有或多或少的关系,但又感觉有些模糊不清,今天看了几篇文章,发现从线性变换的角度来了解矩阵更清晰了一些,于是整理了一些知识点如下。

本文参考的知识点有:PCA的数学原理,链接:http://blog.codinglabs.org/articles/pca-tutorial.html;特征值与奇异值有什么区别,链接:https://www.zhihu.com/question/19666954/answer/54788626,欢迎大家移步去看~

向量之间的内积

首先我们考虑在一个空间中两个向量之间内积的含义,如图



计算两个向量之间的内积可以表示为:A⋅B=|A||B|cos(a)A⋅B=|A||B|cos(a),A与B的内积等于A到B的投影长度乘以B的模。再进一步,如果我们假设B的模为1,即让|B|=1,那么就变成了:A⋅B=|A|cos(a)A⋅B=|A|cos(a)

也就是说,设向量B的模为1,则A与B的内积值等于A向B所在直线投影的矢量长度!

再进一步的想到,对一个向量A而言,当它乘一个模为1的B向量时,实际上就是将
4000
A向量投影到B向量上去,这时我们可以将B向量想象成空间中的一组基。

一般的,如果我们有M个N维向量,想将其变换为由R个N维向量表示的新空间中,那么首先将R个基按行组成矩阵A,然后将向量按列组成矩阵B,那么两矩阵的乘积AB就是变换结果,其中AB的第m列为A中第m列变换后的结果。

⎛⎝⎜⎜⎜⎜p1p2⋮pR⎞⎠⎟⎟⎟⎟(a1a2⋯aM)=⎛⎝⎜⎜⎜⎜⎜p1a1p2a1⋮pRa1p1a2p2a2⋮pRa2⋯⋯⋱⋯p1aMp2aM⋮pRaM⎞⎠⎟⎟⎟⎟⎟(p1p2⋮pR)(a1a2⋯aM)=(p1a1p1a2⋯p1aMp2a1p2a2⋯p2aM⋮⋮⋱⋮pRa1pRa2⋯pRaM)

因此,两个矩阵相乘的意义是将右边矩阵中的每一列列向量变换到左边矩阵中每一行行向量为基所表示的空间中去。

那么组成B矩阵的这一组基如何选择呢?这里就需要涉及到矩阵的特征值分解与奇异值分解的含义了。

特征值分解与奇异值分解

特征值分解

我们知道,当矩阵A为方阵时,可以将它做特征值分解,A=WΣWT,A=WΣWT,此时中间的ΣΣ就是由矩阵的特征组组成的对角矩阵,WW是由矩阵的特征向量组成的矩阵。此时有Awi=λwi,Awi=λwi, wiwi是其中的一个特征向量。联系上面我们得到的矩阵相乘的意义和A的分解公式:wΣwT⋅wi=λwi,wΣwT⋅wi=λwi,我们可以认为是将特征向量wiwi先投影到特征向量矩阵W的空间中去,经过ΣΣ系数的缩放,再投影到W空间中去(实际上就是没有进行投影,因为特征向量本来就在这个W空间定义的基向量上),最后得到的结果是对特征向量wiwi直接进行缩放的结果!这与我们的理解是相符的。

SVD

上述讲的是A为方阵的情况,当A不为方阵时呢??

这时就需要弄到SVD(奇异值分解)了,A=μΣσTA=μΣσT,μμ和σσ是两组正交单位向量,ΣΣ是对角阵,表示奇异值,它表示我们找到了μμ和σσ这样两组基,A矩阵的作用是将一个向量从σσ这组正交基向量的空间旋转到μμ这组正交基向量空间,并对每个方向进行了一定的缩放,缩放因子就是各个奇异值。如果σσ维度比μμ大,则表示还进行了投影。可以说奇异值分解将一个矩阵原本混合在一起的三种作用效果,分解出来了。

因此可以总结说:SVD是旋转,缩放,投影的结果,而特征值分解只存在缩放。

PCA

对数据做降维处理,也即是对一组输入数据集X,我们要找到一组基,使得这个数据集以这组基的坐标尽可能分散,也就是方差尽可能大,协方差尽可能小(这是为了让数据之间的相关性小)。

X=(a1b1a2b2⋯⋯ambm)X=(a1a2⋯amb1b2⋯bm)每一个样本点xi=(ai,bi)xi=(ai,bi)

因为根据数据集X的协方差矩阵1mXXT=(1m∑mi=1a2i1m∑mi=1aibi1m∑mi=1aibi1m∑mi=1b2i)1mXXT=(1m∑i=1mai21m∑i=1maibi1m∑i=1maibi1m∑i=1mbi2)

可以看出,协方差矩阵的对角元素为方差,其他元素为协方差,那么我们只要让X投影之后的Y的协方差矩阵为对角矩阵就可以了。

设原始数据矩阵X对应的协方差矩阵为C,而P是一组基按行组成的矩阵,设Y=PX,则Y为X对P做基变换后的数据。设Y的协方差矩阵为D,我们推导一下D与C的关系:

D=====1mYYT1m(PX)(PX)T1mPXXTPTP(1mXXT)PTPCPTD=1mYYT=1m(PX)(PX)T=1mPXXTPT=P(1mXXT)PT=PCPT

我们的目的是要使D成为一个对角化矩阵,对一个矩阵C,因为C为方阵,那么将C做特征值分解与奇异值分解是一样的,都是C=WΣWTC=WΣWT此时P=WTWT就可以使D满足对角化了。因为要降维处理,也就是取WTWT矩阵的前K行向量为P(K是降维之后的维数)。

总结一下PCA的算法步骤:

设有m条n维数据。

1)将原始数据按列组成n行m列矩阵X

2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值

3)求出协方差矩阵C=1mXXTC=1mXXT

4)求出协方差矩阵的特征值及对应的特征向量

5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P

6)Y=PXY=PX即为降维到k维后的数据

PCA的优点是简单便于实现,缺点是本身无法个性化的优化。

PCA与LDA

LDA的全名为线性判别分析Linear Discriminant Analysis,与PCA不同的是,LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的。投影的目的是“投影后类内方差最小,类间方差最大”。

我们要将数据在低维度上进行投影,投影后希望每一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大。

LDA用于降维,和PCA有很多相同,也有很多不同的地方,因此值得好好的比较一下两者的降维异同点。

首先我们看看相同点:

1)两者均可以对数据进行降维。

2)两者在降维时均使用了矩阵特征分解的思想。

3)两者都假设数据符合高斯分布。

我们接着看看不同点:

1)LDA是有监督的降维方法,而PCA是无监督的降维方法

2)LDA降维最多降到类别数k-1的维数,而PCA没有这个限制。

3)LDA除了可以用于降维,还可以用于分类。

4)LDA选择分类性能最好的投影方向,而PCA选择样本点投影具有最大方差的方向。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: