介绍
在PCA中,有一份样本为n,维度为d的数据
,我们希望降维,于是:
而Probabilistic PCA则是假设
当
时,PPCA等价于PCA。 另外Factor analysis则是假设
其中D是一个对角矩阵,他跟PPCA的区别就是x的每一个维度的方差都可以不一样,而PPCA中x每个维度的方差都是一样的
。不过好像很多人都没搞明白FA跟PCA的区别,这主要是因为很多软件,它写着方法是FA,但实际上给你运行的是PCA >_< 这都是这些软件的锅...
接下来将介绍PCA和PPCA的一些推导。
从PCA说起
我们知道PCA一般是用来降维的,如果有一份样本为n,维度为d的数据
,那他是怎么实现的呢?其实是基于以下公式实现的:
其中
,只要我们能够找到一个k≪d的矩阵,使得X跟
尽可能接近就可以了。更具体的说,对于某个样本
,其近似方式为
一般来说,我们只需要估计W的值,因为如果W已知的话,z是可以直接用x求出来的:
可以简单推导下:
我们通常假设W是正交矩阵,于是
,从而
;从这条式子可以看出,z的每一个维度是由一列一列的w,然后将x加权平均得到的。又因为这个W是不唯一的,他的旋转的是等价的,因此为了保证唯一性,我们通常会通过逐列求解W来保证唯一性。那么如何逐列求解呢?
为了求解方便,假设X是经过标准化的样本矩阵(这将意味着
)。首先整体来看就是找到W使得重构误差最小,也称为(synthesis view):
其中
。但是或许大家听得最多的是所谓的最大化方差,接下来将证明是等价的 考虑求解第一列
,则对于第i个样本它对应着
(这个是一个标量),其loss函数为:
可以看到,推到最后其实就是在最大化方差,那么如果求解呢?我们把w和x代回去:
其中
,是经验协方差矩阵(注意到这是个很多个外积的求和)。然而要最大化,显然最简单的是将w设得无穷大,所以为了限制这一天,我们要加个约束
,于是
对其求导:
最终我们发现
恰好是
的特征向量,所以我们求PCA的时候,直接求协方差的特征向量就把w给求出来了。接下来的求
也是类似的,考虑
这里因为
是已知的,所以被当做常数项了。又因为,
最后求导可以得到
,是第二个特征向量,如此类推。
Probabilistic PCA
在PCA中我们假设
而在PPCA中我们假设
显然当
的时候,PPCA与PCA是等价的。根据上述假设,可以知道他们的分布为:
其实PPCA的框架是很灵活的,完全可以假设p(x|z)是laplace分布(Robust PCA),或者如果x是离散就是softmax之类的(Latent Discrete Analysis)。这里先假设高斯的,那我们可以简单推导下x和z的联合分布
,这个需要用到高斯求条件概率的公式。不过这里,就简单推推
参考文献
CPSC 540: Machine Learning Probabilistic PCA and Factor Analysis
Murphy K. Machine Learning: a Probabilistic Perspective. The MIT Press, 2012.