1 问题

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

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

     因子分析_协方差矩阵_02

     因子分析_数据_03

     分别是求mean和协方差的公式,因子分析_主成分分析_04表示样例,共有m个,每个样例n个特征,因此因子分析_因子分析_05是n维向量,因子分析_数据_06是n*n协方差矩阵。

     当m<<n时,我们会发现因子分析_协方差_07是奇异阵(因子分析_协方差_08),也就是说因子分析_协方差_09不存在,没办法拟合出多元高斯分布了,确切的说是我们估计不出来因子分析_主成分分析_10

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

2 限制协方差矩阵

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

     因子分析_协方差矩阵_15

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

     因子分析_协方差矩阵_19

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

     因子分析_主成分分析_21

     其中

     因子分析_协方差_22

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

     当我们要估计出完整的因子分析_协方差矩阵_23时,我们需要m>=n+1才能保证在最大似然估计下得出的因子分析_数据_24是非奇异的。然而在上面的任何一种假设限定条件下,只要m>=2都可以估计出限定的因子分析_协方差矩阵_25

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

3 边缘和条件高斯分布

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

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

     因子分析_因子分析_28

     其中因子分析_主成分分析_29因子分析_主成分分析_30,那么因子分析_主成分分析_31。假设x服从多元高斯分布因子分析_数据_32,其中

     因子分析_因子分析_33

     其中因子分析_数据_34因子分析_协方差矩阵_35,那么因子分析_协方差_36因子分析_协方差矩阵_37,由于协方差矩阵是对称阵,因此因子分析_因子分析_38

     整体看来因子分析_协方差_39因子分析_主成分分析_40联合分布符合多元高斯分布。

     那么只知道联合分布的情况下,如何求得因子分析_数据_41的边缘分布呢?从上面的因子分析_主成分分析_42因子分析_数据_43可以看出,

     因子分析_协方差_44,因子分析_数据_45,下面我们验证第二个结果

     因子分析_主成分分析_46

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

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

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

     且

     因子分析_协方差_56

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

4 因子分析例子

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

     因子分析的实质是认为m个n维特征的训练样例因子分析_协方差矩阵_57的产生过程如下:

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

     因子分析_数据_59

     2、 然后存在一个变换矩阵因子分析_协方差矩阵_60,将因子分析_协方差矩阵_61映射到n维空间中,即

     因子分析_协方差_62

     因为因子分析_协方差_63的均值是0,映射后仍然是0。

     3、 然后将因子分析_协方差_64加上一个均值因子分析_因子分析_65(n维),即

     因子分析_协方差_66

     对应的意义是将变换后的因子分析_协方差_67(n维向量)移动到样本因子分析_协方差_68的中心点因子分析_协方差矩阵_69

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

     而且因子分析_协方差矩阵_72符合多元高斯分布,即

     因子分析_因子分析_73

     因子分析_主成分分析_74

     5、 最后的结果认为是真实的训练样例因子分析_主成分分析_75的生成公式

     因子分析_协方差矩阵_76

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

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

因子分析_主成分分析_78

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

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

­因子分析_协方差矩阵_80

     均值为0,方差为1。

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

因子分析_协方差矩阵_82

     3、 之后加上因子分析_因子分析_83,即将所有点的横坐标移动因子分析_协方差_84,纵坐标移动因子分析_协方差_85,将直线移到一个位置,使得直线过点因子分析_数据_86,原始左边轴的原点现在为因子分析_因子分析_87(红色点)。

因子分析_数据_88

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

     4、 加入扰动后,我们得到黑色样本因子分析_主成分分析_90如下:

因子分析_数据_91

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

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

5 因子分析模型

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

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

     因子分析_协方差_94

     因子分析_协方差_95

     因子分析_协方差_96

     其中误差因子分析_因子分析_97和z是独立的。

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

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

     因子分析_协方差_98

     求因子分析_因子分析_99之前需要求E[x]

     因子分析_数据_100

           因子分析_协方差_101

           因子分析_因子分析_102

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

     因子分析_协方差_103

     下一步是计算因子分析_协方差_104

     其中因子分析_主成分分析_105

     接着求因子分析_主成分分析_106

     因子分析_协方差矩阵_107

     这个过程中利用了z和因子分析_主成分分析_108独立假设(因子分析_协方差矩阵_109)。并将因子分析_协方差矩阵_110看作已知变量。

     接着求因子分析_因子分析_111

     因子分析_协方差矩阵_112

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

     因子分析_数据_113

     从上式中可以看出x的边缘分布因子分析_主成分分析_114

     那么对样本因子分析_协方差矩阵_115进行最大似然估计

     因子分析_协方差_116

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

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

6 因子分析的EM估计

     我们先来明确一下各个参数,z是隐含变量,因子分析_数据_117是待估参数。

     回想EM两个步骤:

循环重复直到收敛 {

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

因子分析_数据_118

(M步)计算

因子分析_数据_119

     我们套用一下:

     (E步):

     因子分析_主成分分析_120

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

     因子分析_主成分分析_121

     因此

     因子分析_因子分析_122

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

     因子分析_协方差_123

     (M步):

     直接写要最大化的目标是

     因子分析_数据_124

     其中待估参数是因子分析_主成分分析_125

     下面我们重点求因子分析_数据_126的估计公式

     首先将上式简化为:

     因子分析_协方差矩阵_127

     这里因子分析_因子分析_128表示因子分析_协方差_129服从因子分析_数据_130分布。然后去掉与因子分析_协方差矩阵_131不相关的项(后两项),得

     因子分析_协方差矩阵_132

     去掉不相关的前两项后,对因子分析_协方差_133进行导,

     因子分析_因子分析_134

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

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

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

     因子分析_因子分析_136

     然后得到

     因子分析_因子分析_137

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

     因子分析_协方差矩阵_138

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

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

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

     因子分析_因子分析_140

     第一步根据z的条件分布得到,第二步根据因子分析_因子分析_141得到

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

     因子分析_主成分分析_142

     至此,我们得到了因子分析_协方差_143,注意一点是E[z]和因子分析_主成分分析_144的不同,后者需要求z的协方差。

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

     因子分析_数据_145

     均值因子分析_因子分析_146在迭代过程中值不变。

     因子分析_协方差_147

     然后将因子分析_数据_148上的对角线上元素抽取出来放到对应的因子分析_协方差矩阵_149中,就得到了因子分析_协方差矩阵_150

7 总结

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

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

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

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

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

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

     因子分析_协方差_153

     这里的因子分析_数据_154就是样例x的第i个分量,因子分析_数据_155就是因子分析_协方差_156的第i个分量,因子分析_数据_157就是因子分析_主成分分析_158的第i行第j列元素,因子分析_协方差_159是z的第i个分量,因子分析_数据_160因子分析_主成分分析_161

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

 

 

     注:

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

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

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

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

     PPT地址

     http://www.math.zju.edu.cn/webpagenew/uploadfiles/attachfiles/2008123195228555.ppt

     其他值得参考的文献

     An Introduction to Probabilistic Graphical Models by Jordan Chapter 14

     主成分分析和因子分析的区别http://cos.name/old/view.php?tid=10&id=82