网上讲PCA的文章简直多的不胜枚举,有的确实深入浅出讲的很好,不过大部分感觉都是抄来炒去,本来对PCA,SVD似懂非懂,今天看了两篇文章觉得又有所收获,怕后面又忘了..还是自己思路写得自己更看得懂,故记录一下。
首先把那个让我恍然大悟的协方差矩阵摆出来
这个图感觉能够很好的解释pca的目的跟原理了ref:svd,pca,relation
(图片引自另外一篇博客,给的原图地址)
对于PCA我的理解就是,数据投影到方差最大的方向上并且损失的信息最小(对样本的描述维度会降低)。
我们把每一列看做为一个数据,每个数据有a,b,c三个特征。
我们想得到方差最大,即
在确定变化基(新坐标)准则之后,就需要考虑降维的问题了,因为a,b,c三个字段可能是相关的,因此结合相关信息可以将信息的损失尽量降低。在确定第一个维度后,如何确定下一个维度的方向呢。我们希望让两个字段尽可能表示更多的原始信息,我们是不希望它们之间存在(线性)相关性的,因为相关性意味着两个字段不是完全独立,必然存在重复表示的信息。
数学上可以用两个字段的协方差表示其相关性,可以看到,在字段均值为0的情况下,两个字段的协方差简洁的表示为其内积除以元素数m。
当协方差为0时,表示两个字段完全独立。为了让协方差为0,我们选择第二个基时只能在与第一个基正交的方向上选择。因此最终选择的两个方向一定是正交的。
现在我们就确定的两个目标:
然后现在再来看下那个协方差矩阵
假设变换后的矩阵为Y,即
2)设特征向量λ重数为r,则必然存在r个线性无关的特征向量对应于λ,因此可以将这r个特征向量单位正交化。
然后就是线性代数上学的求解特征值了,真是到现在才知道特征值这玩意是干啥的!
对比D跟Λ可以发现,
大部分的内容取自这篇博文,在网上看到很多,这个发表日期最早
如果与SVD比较