浅解PCA

网上讲PCA的文章简直多的不胜枚举,有的确实深入浅出讲的很好,不过大部分感觉都是抄来炒去,本来对PCA,SVD似懂非懂,今天看了两篇文章觉得又有所收获,怕后面又忘了..还是自己思路写得自己更看得懂,故记录一下。

首先把那个让我恍然大悟的协方差矩阵摆出来

1mXXT=1mi=0ma2i1mi=0maibi1mi=0maibi1mi=0maibi1mi=0mb2i1mi=0mcibi1mi=0aici1mi=0mbici1mi=0mc2i

这个图感觉能够很好的解释pca的目的跟原理了ref:svd,pca,relation
(图片引自另外一篇博客,给的原图地址)

对于PCA我的理解就是,数据投影到方差最大的方向上并且损失的信息最小(对样本的描述维度会降低)。

{x1x2xn}X=a1b1c1a2b2c2anbncn

我们把每一列看做为一个数据,每个数据有a,b,c三个特征。

我们想得到方差最大,即

Var(x)=1mi=0m(xiu)

对每个数据的方差求解即对数据每个字段(特征)方差的求解,即
xi=aibici
而通常,每个字段上都会中心化,即均值都为0,所以
Var(x)=1mi=0mxi

在确定变化基(新坐标)准则之后,就需要考虑降维的问题了,因为a,b,c三个字段可能是相关的,因此结合相关信息可以将信息的损失尽量降低。在确定第一个维度后,如何确定下一个维度的方向呢。我们希望让两个字段尽可能表示更多的原始信息,我们是不希望它们之间存在(线性)相关性的,因为相关性意味着两个字段不是完全独立,必然存在重复表示的信息。

cov(a,b)=1mi=0maibi

数学上可以用两个字段的协方差表示其相关性,可以看到,在字段均值为0的情况下,两个字段的协方差简洁的表示为其内积除以元素数m。

当协方差为0时,表示两个字段完全独立。为了让协方差为0,我们选择第二个基时只能在与第一个基正交的方向上选择。因此最终选择的两个方向一定是正交的。

现在我们就确定的两个目标:

1.使Var(x)=1mi=0mxi

2.使cov(a,b),cov(a,c),cov(b,c)0

然后现在再来看下那个协方差矩阵

1mXXT=1mi=0ma2i1mi=0maibi1mi=0maibi1mi=0maibi1mi=0mb2i1mi=0mcibi1mi=0aici1mi=0mbici1mi=0mc2i

这个矩阵对角线上的两个元素分别是两个字段的方差,而其它元素是a和b的协方差。两者被统一到了一个矩阵的。所以当我们实现了对协方差矩阵的对角化时就实现了我们的目标。

假设变换后的矩阵为Y,即

Y=PX

Y的协方差矩阵为D
D=1mXXT=1mPX(PX)T=1mPXXTPT=P(1mXXT)PT=PCPT

C为X的协方差矩阵,
1)实对称矩阵不同特征值对应的特征向量必然正交。

2)设特征向量λ重数为r,则必然存在r个线性无关的特征向量对应于λ,因此可以将这r个特征向量单位正交化。

然后就是线性代数上学的求解特征值了,真是到现在才知道特征值这玩意是干啥的!

ETCE=Λ=λ1λ2λ3

其中E为与特征值对应的特征向量

对比D跟Λ可以发现,

ET=P
P就可以看做是得到的一个新的基,而在这个基上的坐标系满足上面说的两个条件。

大部分的内容取自这篇博文,在网上看到很多,这个发表日期最早

如果与SVD比较

X=USVT

1mXTX=1mVSTUTUSVT=VS2mVT

1mXXT=1mUSVTVSTUT=US2mUT

你可能感兴趣的:(机器学习,PCA-矩阵)