CS229 因子分析(Factor Analysis)

CS229 因子分析(Factor Analysis)

因子分析的本质是一种降维算法,即现有特征向量是由维度更小的因子经过映射得到的。当原有特征维度过高,甚至超过了样本数目,这时要运用高斯模型来建模是不可行的,因为特征的协方差矩阵是奇异的,所以可以利用因子分析对数据进行降维,即将隐变量(因子)和观测到的样本的联合分布进行建模,得到样本的边缘分布,由于直接求解边缘分布的最大似然估计没有封闭解(参数是因子到样本的映射中涉及到的系数),所以运用EM算法得到一个关于因子到样本映射的参数的解,得到映射的参数后,就可以将所有样本还原为维度更小的因子了。

引入

给定一个数据集$x^{(i)}\in{R^n}$,假设它们是来自几个高斯分布的组合。那么就可以使用上一篇文章的EM算法来对数据建模。假如$n >> m$,应用到一个高斯模型可能比较困难,更不用说应用到高斯分模型,对于一个高斯分模型,如果使用最大似然估计。(这里开一个坑,就是这个最大似然估计好像涉及到关于矩阵求导,我想试一下,最后还是放弃了,不过第一个结果没有涉及到矩阵,很容易就出来了)

现在观察这个结果,可以发现当$m << n$时,协方差矩阵$\Sigma$是奇异的,奇异矩阵是不可逆的,为什么不可逆呢?因为它的行列式为0,而行列式为0的在几何中的直观意义是什么呢?考虑有如下矩阵:

现在要求他们的逆,设逆矩阵为:

所以有

将(1)(3),(2)(4)分别联立就可以进行求解。
而如果原矩阵行列式为0,则有$ad = bc$,即$\frac{a}{c}=\frac{b}{d}$,那么上面联立的方程所表示的线在几何空间中肯定是平行的,所以这个方程肯定无解或者有无数解,所以行列式为0的矩阵肯定不可逆。(不过我在这里只列举了2*2矩阵的情况,泛化还需要进一步证明)。另外,为什么$m << n$时,行列式为0呢?这一点我也想了很久,但是google也google不到详细的证明过程,网上的博客都很自然引出了这个结论,最后我还是只有举例验证了一下,最后发现真的是这样(菜到安详.jpg)。

好的,绕了这么大一个圈子,终于理清了为什么$m << n$的情况下矩阵的奇异的。现在回过头来看高斯模型中,参数$\Sigma$参与了什么,观察公式可以发现正是要用到$\Sigma^{-1}$以及$\frac{1}{|\Sigma|^{1/2}}$,如果$\Sigma$奇异,那么这两个都没有办法得到。所以,在$m << n$这种情况下,就可以使用因子分析对数据进行降维打击处理,然后就可以继续快乐地进行建模了。
在这之前,还可以对$\Sigma$进行限制来建模,即将其限制为对角矩阵,甚至还把对角元素的值都设为一样的,有了这样的限制,因为协方差矩阵反映的就是各个维度之间的相关性,非对角元素为0,特征的各个维度之间在高斯模型中已经是互相独立的了,所以可以看到高斯分布的对称轴和坐标轴平行,如果对角元素还是一致的,高斯分布的轮廓就是一个圆形(二维中)了,通常情况下这种方式都是有效的,但是如果不使用这个方法呢,就要用因子分析模型了。

高斯模型的边缘分布和条件分布

这是推导算法所需要的数学工具
考虑有一个随机向量

$x_1 \in R^r,x_2 \in R^s,x \in R^{r+s}$
假设

有$\mu_1 \in R^r,\mu_2 \in R^s,\Sigma_{11} \in R^{r*r},\Sigma_{12} \in R^{r*s}$,以此类推。另外,协方差矩阵是对称的,$\Sigma_{12} = \Sigma_{21}^T$
对于$x_1,x_2$这个联合多元高斯分布的的边缘分布和条件分布,姑且作为结论性的东西直接用吧,贴图片啦:

其边缘分布为:$x_1 \sim \mathcal{N}(\mu_1,\Sigma_{11})$ 条件分布为:$x_1|x_2 \sim \mathcal{N}(\mu_{1|2},\Sigma_{1|2})$

因子分析模型

假设一个关于$(x,z)$的联合分布,$z\in R^k$是一个随机隐变量:

$\mu \in R^n,\Lambda \in R^{n*k}$,对角矩阵$\Psi \in R^{n*n}$,$k$通常比$n$更小。
现在,可以想象一下每个数据点是通过什么方式生成的:在一个k维多元高斯分布生成一个样本$z^{(i)}$,然后把它映射到一个n维空间通过$\mu+\Lambda z^{(i0}$,最后加上协方差$\Psi$的噪声。
同样的,因子分析模型可以被定义为:

其中$\epsilon$和$z$是独立的。
变量$z$和$x$服从联合高斯分布

现在,要求解$u_{zx}$和$\Sigma$
已知$E[z]=0$,所以

所以有
接下来要计算$\Sigma$,需要计算

因为$z \sim \mathcal{N}(0,I)$,可以得到$E_{zz}=Cov(z)=I$

在最后一步,因为$z$和$\epsilon$是独立的,$E[z\epsilon^T] = E[z]E[\epsilon^T]=0$

所以

$x$的边缘分布为:$x\sim \mathcal{N}(\mu,\Lambda\Lambda^T+\Psi)$
关于参数的最大似然估计为:

这个最大似然估计没有算法可以求出封闭解,所以使用EM算法来解决。

将EM算法运用到因子分析

将EM算法运用到因子分析中,$z$是隐变量

E步

,运用之前多元高斯模型条件分布的公式:

所以:

M步

可以被简化为:

后续最大化过程再看讲义吧,推不下去了ORZ。