PCA很有用,可以降维,也很好理解。但是有弱点不能设置参数,数据之间的某些特征也会被剔除。在PCA的基础上,有人提出了probability principal component analysis,简称pPCA。pPCA与高斯分布密切相关。所以先理解一下高斯分布。
高斯分布:
一维的高斯分布很容易理解。这里说的Multivariate normal distribution。简单来是多维高斯分布的PDF可以表示为: 其中
为协方差矩阵,因此是对称的。
是均值。为了直观一点,可以画出二维的图。如下。各个图的意义见参数,可以看到
和
起到的作用。
PPCA:
PPCA的主要问题是把x转换为,其中x是p维的数据,z是q维向量(q<p),并且
。(如果不考虑
就是普通的PCA,解释见slideshare)。要求就是x的最大似然。表示为
.求ML最大即可。如果光是这样事情就好办了。我们可以根据Estimation of Covariance直接得出C。但这里C是要满足一个条件。
为什么C能这样表示,详细见论文。推倒还不是很麻烦。麻烦的是推倒
。这里没有用到这个,在EM算法中会用到,所以先不考虑。
解法:
解法比较多。最直接的就是求导,分别求出。还有就是EM,比较复杂,但是计算上有优势。可以证明他们等价。具体解法见笔记。最终求得
其中V可以是任意正交矩阵。,就是求SVD。
实验:
实验数据是跟PCA一样的产生方法。代码见github。看了结果,第一感觉就是难以置信。虽然这是假数据。从下图可以看到整个高斯分布基本上覆盖了数据。
来张透明点的,可以看到红色的是原数据。绿色的有z生成。这里我有点不能理解。虽然是把x降维了,但是跟z有什么关系啊。根据z生成出来的数据根本不是x啊。以后再想想。
后续:
PPCA还有EM解法,等我复习了再说。还有Kernel PCA等等。有点牛啊!