1 问题

     之前我们考虑的训练数据中样例因子分析(Factor Analysis)的个数m都远远大于其特征个数n,这样不管是进行回归、聚类等都没有太大的问题。然而当训练样例个数m太小,甚至m<<n的时候,使用梯度下降法进行回归时,如果初值不同,得到的参数结果会有很大偏差(因为方程数小于参数个数)。另外,如果使用多元高斯分布(Multivariate Gaussian distribution)对数据进行拟合时,也会有问题。让我们来演算一下,看看会有什么问题:

多元高斯分布的参数估计公式如下:

     因子分析(Factor Analysis)

     因子分析(Factor Analysis)

     分别是求mean和协方差的公式,因子分析(Factor Analysis)表示样例,共有m个,每个样例n个特征,因此因子分析(Factor Analysis)是n维向量,因子分析(Factor Analysis)是n*n协方差矩阵。

     当m<<n时,我们会发现因子分析(Factor Analysis)是奇异阵(因子分析(Factor Analysis)),也就是说因子分析(Factor Analysis)不存在,没办法拟合出多元高斯分布了,确切的说是我们估计不出来因子分析(Factor Analysis)

     如果我们仍然想用多元高斯分布来估计样本,那怎么办呢?

2 限制协方差矩阵

     当没有足够的数据去估计因子分析(Factor Analysis)时,那么只能对模型参数进行一定假设,之前我们想估计出完全的因子分析(Factor Analysis)(矩阵中的全部元素),现在我们假设因子分析(Factor Analysis)就是对角阵(各特征间相互独立),那么我们只需要计算每个特征的方差即可,最后的因子分析(Factor Analysis)只有对角线上的元素不为0

     因子分析(Factor Analysis)

     回想我们之前讨论过的二维多元高斯分布的几何特性,在平面上的投影是个椭圆,中心点由因子分析(Factor Analysis)决定,椭圆的形状由因子分析(Factor Analysis)决定。因子分析(Factor Analysis)如果变成对角阵,就意味着椭圆的两个轴都和坐标轴平行了。

     因子分析(Factor Analysis)

     如果我们想对因子分析(Factor Analysis)进一步限制的话,可以假设对角线上的元素都是等值的。

     因子分析(Factor Analysis)

     其中

     因子分析(Factor Analysis)

     也就是上一步对角线上元素的均值,反映到二维高斯分布图上就是椭圆变成圆。

     当我们要估计出完整的因子分析(Factor Analysis)时,我们需要m>=n+1才能保证在最大似然估计下得出的因子分析(Factor Analysis)是非奇异的。然而在上面的任何一种假设限定条件下,只要m>=2都可以估计出限定的因子分析(Factor Analysis)

     这样做的缺点也是显然易见的,我们认为特征间独立,这个假设太强。接下来,我们给出一种称为因子分析的方法,使用更多的参数来分析特征间的关系,并且不需要计算一个完整的因子分析(Factor Analysis)

3 边缘和条件高斯分布

     在讨论因子分析之前,先看看多元高斯分布中,条件和边缘高斯分布的求法。这个在后面因子分析的EM推导中有用。

     假设x是有两个随机向量组成(可以看作是将之前的因子分析(Factor Analysis)分成了两部分)

     因子分析(Factor Analysis)

     其中因子分析(Factor Analysis)因子分析(Factor Analysis),那么因子分析(Factor Analysis)。假设x服从多元高斯分布因子分析(Factor Analysis),其中

     因子分析(Factor Analysis)

     其中因子分析(Factor Analysis)因子分析(Factor Analysis),那么因子分析(Factor Analysis)因子分析(Factor Analysis),由于协方差矩阵是对称阵,因此因子分析(Factor Analysis)

     整体看来因子分析(Factor Analysis)因子分析(Factor Analysis)联合分布符合多元高斯分布。

     那么只知道联合分布的情况下,如何求得因子分析(Factor Analysis)的边缘分布呢?从上面的因子分析(Factor Analysis)因子分析(Factor Analysis)可以看出,

     因子分析(Factor Analysis),因子分析(Factor Analysis),下面我们验证第二个结果

     因子分析(Factor Analysis)

     由此可见,多元高斯分布的边缘分布仍然是多元高斯分布。也就是说因子分析(Factor Analysis)

     上面Cov(x)里面有趣的是因子分析(Factor Analysis),这个与之前计算协方差的效果不同。之前的协方差矩阵都是针对一个随机变量(多维向量)来说的,而因子分析(Factor Analysis)评价的是两个随机向量之间的关系。比如因子分析(Factor Analysis)={身高,体重},因子分析(Factor Analysis)={性别,收入},那么因子分析(Factor Analysis)求的是身高与身高,身高与体重,体重与体重的协方差。而因子分析(Factor Analysis)求的是身高与性别,身高与收入,体重与性别,体重与收入的协方差,看起来与之前的大不一样,比较诡异的求法。

     上面求的是边缘分布,让我们考虑一下条件分布的问题,也就是因子分析(Factor Analysis)的问题。根据多元高斯分布的定义,因子分析(Factor Analysis)

     且

     因子分析(Factor Analysis)

     这是我们接下来计算时需要的公式,这两个公式直接给出,没有推导过程。如果想了解具体的推导过程,可以参见Chuong B. Do写的《Gaussian processes》。

4 因子分析例子

     下面通过一个简单例子,来引出因子分析背后的思想。

     因子分析的实质是认为m个n维特征的训练样例因子分析(Factor Analysis)的产生过程如下:

     1、 首先在一个k维的空间中按照多元高斯分布生成m个因子分析(Factor Analysis)(k维向量),即

     因子分析(Factor Analysis)

     2、 然后存在一个变换矩阵因子分析(Factor Analysis),将因子分析(Factor Analysis)映射到n维空间中,即

     因子分析(Factor Analysis)

     因为因子分析(Factor Analysis)的均值是0,映射后仍然是0。

     3、 然后将因子分析(Factor Analysis)加上一个均值因子分析(Factor Analysis)(n维),即

     因子分析(Factor Analysis)

     对应的意义是将变换后的因子分析(Factor Analysis)(n维向量)移动到样本因子分析(Factor Analysis)的中心点因子分析(Factor Analysis)

     4、 由于真实样例因子分析(Factor Analysis)与上述模型生成的有误差,因此我们继续加上误差因子分析(Factor Analysis)(n维向量),

     而且因子分析(Factor Analysis)符合多元高斯分布,即

     因子分析(Factor Analysis)

     因子分析(Factor Analysis)

     5、 最后的结果认为是真实的训练样例因子分析(Factor Analysis)的生成公式

     因子分析(Factor Analysis)

     让我们使用一种直观方法来解释上述过程:

     假设我们有m=5个2维的样本点因子分析(Factor Analysis)(两个特征),如下:

因子分析(Factor Analysis)

     那么按照因子分析的理解,样本点的生成过程如下:

     1、 我们首先认为在1维空间(这里k=1),存在着按正态分布生成的m个点因子分析(Factor Analysis),如下

因子分析(Factor Analysis)

     均值为0,方差为1。

     2、 然后使用某个因子分析(Factor Analysis)将一维的z映射到2维,图形表示如下:

因子分析(Factor Analysis)

     3、 之后加上因子分析(Factor Analysis),即将所有点的横坐标移动因子分析(Factor Analysis),纵坐标移动因子分析(Factor Analysis),将直线移到一个位置,使得直线过点因子分析(Factor Analysis),原始左边轴的原点现在为因子分析(Factor Analysis)(红色点)。

因子分析(Factor Analysis)

     然而,样本点不可能这么规则,在模型上会有一定偏差,因此我们需要将上步生成的点做一些扰动(误差),扰动因子分析(Factor Analysis)

     4、 加入扰动后,我们得到黑色样本因子分析(Factor Analysis)如下:

因子分析(Factor Analysis)

     5、 其中由于z和因子分析(Factor Analysis)的均值都为0,因此因子分析(Factor Analysis)也是原始样本点(黑色点)的均值。

     由以上的直观分析,我们知道了因子分析其实就是认为高维样本点实际上是由低维样本点经过高斯分布、线性变换、误差扰动生成的,因此高维数据可以使用低维来表示。

5 因子分析模型

     上面的过程是从隐含随机变量z经过变换和误差扰动来得到观测到的样本点。其中z被称为因子,是低维的。

     我们将式子再列一遍如下:

     因子分析(Factor Analysis)

     因子分析(Factor Analysis)

     因子分析(Factor Analysis)

     其中误差因子分析(Factor Analysis)和z是独立的。

     下面使用的因子分析表示方法是矩阵表示法,在参考资料中给出了一些其他的表示方法,如果不明白矩阵表示法,可以参考其他资料。

     矩阵表示法认为z和x联合符合多元高斯分布,如下

     因子分析(Factor Analysis)

     求因子分析(Factor Analysis)之前需要求E[x]

     因子分析(Factor Analysis)

           因子分析(Factor Analysis)

           因子分析(Factor Analysis)

     我们已知E[z]=0,因此

     因子分析(Factor Analysis)

     下一步是计算因子分析(Factor Analysis)

     其中因子分析(Factor Analysis)

     接着求因子分析(Factor Analysis)

     因子分析(Factor Analysis)

     这个过程中利用了z和因子分析(Factor Analysis)独立假设(因子分析(Factor Analysis))。并将因子分析(Factor Analysis)看作已知变量。

     接着求因子分析(Factor Analysis)

     因子分析(Factor Analysis)

     然后得出联合分布的最终形式

     因子分析(Factor Analysis)

     从上式中可以看出x的边缘分布因子分析(Factor Analysis)

     那么对样本因子分析(Factor Analysis)进行最大似然估计

     因子分析(Factor Analysis)

     然后对各个参数求偏导数不就得到各个参数的值了么?

     可惜我们得不到closed-form。想想也是,如果能得到,还干嘛将z和x放在一起求联合分布呢。根据之前对参数估计的理解,在有隐含变量z时,我们可以考虑使用EM来进行估计。

6 因子分析的EM估计

     我们先来明确一下各个参数,z是隐含变量,因子分析(Factor Analysis)是待估参数。

     回想EM两个步骤:

循环重复直到收敛 {

(E步)对于每一个i,计算

因子分析(Factor Analysis)

(M步)计算

因子分析(Factor Analysis)

     我们套用一下:

     (E步):

     因子分析(Factor Analysis)

     根据第3节的条件分布讨论,

     因子分析(Factor Analysis)

     因此

     因子分析(Factor Analysis)

     那么根据多元高斯分布公式,得到

     因子分析(Factor Analysis)

     (M步):

     直接写要最大化的目标是

     因子分析(Factor Analysis)

     其中待估参数是因子分析(Factor Analysis)

     下面我们重点求因子分析(Factor Analysis)的估计公式

     首先将上式简化为:

     因子分析(Factor Analysis)

     这里因子分析(Factor Analysis)表示因子分析(Factor Analysis)服从因子分析(Factor Analysis)分布。然后去掉与因子分析(Factor Analysis)不相关的项(后两项),得

     因子分析(Factor Analysis)

     去掉不相关的前两项后,对因子分析(Factor Analysis)进行导,

     因子分析(Factor Analysis)

     第一步到第二步利用了tr a = a(a是实数时)和tr AB = tr BA。最后一步利用了因子分析(Factor Analysis)    

     tr就是求一个矩阵对角线上元素和。

     最后让其值为0,并且化简得

     因子分析(Factor Analysis)

     然后得到

     因子分析(Factor Analysis)

     到这里我们发现,这个公式有点眼熟,与之前回归中的最小二乘法矩阵形式类似

     因子分析(Factor Analysis)

     这里解释一下两者的相似性,我们这里的x是z的线性函数(包含了一定的噪声)。在E步得到z的估计后,我们找寻的因子分析(Factor Analysis)实际上是x和z的线性关系。而最小二乘法也是去找特征和结果直接的线性关系。

到这还没完,我们需要求得括号里面的值

     根据我们之前对z|x的定义,我们知道

     因子分析(Factor Analysis)

     第一步根据z的条件分布得到,第二步根据因子分析(Factor Analysis)得到

     将上面的结果代入(7)中得到

     因子分析(Factor Analysis)

     至此,我们得到了因子分析(Factor Analysis),注意一点是E[z]和因子分析(Factor Analysis)的不同,后者需要求z的协方差。

     其他参数的迭代公式如下:

     因子分析(Factor Analysis)

     均值因子分析(Factor Analysis)在迭代过程中值不变。

     因子分析(Factor Analysis)

     然后将因子分析(Factor Analysis)上的对角线上元素抽取出来放到对应的因子分析(Factor Analysis)中,就得到了因子分析(Factor Analysis)

7 总结

     根据上面的EM的过程,要对样本X进行因子分析,只需知道要分解的因子数(z的维度)即可。通过EM,我们能够得到转换矩阵因子分析(Factor Analysis)和误差协方差因子分析(Factor Analysis)

     因子分析实际上是降维,在得到各个参数后,可以求得z。但是z的各个参数含义需要自己去琢磨。

     下面从一个ppt中摘抄几段话来进一步解释因子分析。

     因子分析(factor analysis)是一种数据简化的技术。它通过研究众多变量之间的内部依赖关系,探求观测数据中的基本结构,并用少数几个假想变量来表示其基本的数据结构。这几个假想变量能够反映原来众多变量的主要信息。原始的变量是可观测的显在变量,而假想变量是不可观测的潜在变量,称为因子。

     例如,在企业形象或品牌形象的研究中,消费者可以通过一个有24个指标构成的评价体系,评价百货商场的24个方面的优劣。

     但消费者主要关心的是三个方面,即商店的环境、商店的服务和商品的价格。因子分析方法可以通过24个变量,找出反映商店环境、商店服务水平和商品价格的三个潜在的因子,对商店进行综合评价。而这三个公共因子可以表示为:

     因子分析(Factor Analysis)

     这里的因子分析(Factor Analysis)就是样例x的第i个分量,因子分析(Factor Analysis)就是因子分析(Factor Analysis)的第i个分量,因子分析(Factor Analysis)就是因子分析(Factor Analysis)的第i行第j列元素,因子分析(Factor Analysis)是z的第i个分量,因子分析(Factor Analysis)因子分析(Factor Analysis)

因子分析(Factor Analysis)是不可观测的潜在因子。24个变量共享这三个因子,但是每个变量又有自己的个性,不被包含的部分因子分析(Factor Analysis),称为特殊因子。

 

 

     注:

     因子分析与回归分析不同,因子分析中的因子是一个比较抽象的概念,而回归因子有非常明确的实际意义;

     主成分分析分析与因子分析也有不同,主成分分析仅仅是变量变换,而因子分析需要构造因子模型。

     主成分分析:原始变量的线性组合表示新的综合变量,即主成分;

     因子分析:潜在的假想变量和随机影响变量的线性组合表示原始变量。

相关文章: