因子分析

转载 http://www.cnblogs.com/jerrylead自己也做了些添加修改

问题

之前我们考虑的训练数据中样例 x(i) 的个数 m 都远远大于其特征个数 n,这样不管是进行回归、聚类等都没有太大的问题。然而当训练样例个数 m 太小,甚至 m<<n 的时候,使用梯度下降法进行回归时, 如果初值不同, 得到的参数结果会有很大偏差(因为方程数小于参数个数)。另外,如果使用多元高斯分布(Multivariate Gaussian distribution)对数据进行拟合时,也会有问题。让我们来演算一下,看看会有什么问题:
多元高斯分布的参数估计公式如下:
这里写图片描述
它们分别是求 mean 和协方差的公式, x(i) 表示样例,共有 m 个,每个样例 n 个特征,因此 μ 是 n 维向量, Σ n×n 协方差矩阵。
m<<n 时, 我们会发现Σ是奇异阵 |Σ|=0 ,也就是说 Σ1 存在,没办法拟合出多元高斯分布了,确切的说是我们估计不出来 Σ
如果我们仍然想用多元高斯分布来估计样本,那怎么办呢?

限制协方差矩阵

当没有足够的数据去估计 Σ 时,那么只能对模型参数进行一定假设,之前我们想估计出完全的 Σ (矩阵中的全部元素),现在我们假设Σ就是对角阵(各特征间相互独立),那么我们只需要计算每个特征的方差即可,最后的Σ只有对角线上的元素不为 0 ,我们可以按如下方式获得Σ
这里写图片描述
回想我们之前讨论过的二维多元高斯分布的几何特性,在平面上的投影是个椭圆,中心点由 μ 决定,椭圆的形状由Σ决定。 Σ 如果变成对角阵,就意味着椭圆的两个轴都和坐标轴平行了。
有时我们还会给协方差矩阵更大的限制,可以假设对角线上的元素都是等值的,即:

Σ=σ2I

其中 这里写图片描述

此时高斯分布的轮廓图由椭圆变成圆(在二维上)。
当我们要估计出完整的 Σ 时,我们需要 m>=n+1才能保证在最大似然估计下得出的 Σ 是非奇异的。然而在上面的任何一种假设限定条件下,只要m>=2都可以估计出限定的 Σ
这样做的缺点也是显然易见的,我们认为特征间独立,这个假设太强。
接下来,我们给出一种称为因子分析的方法,使用Σ中更多的参数来分析特征间的关系,而不是将其限制为对角矩阵并且不需要计算一个完整的 Σ .

边缘和条件高斯分布

在讨论因子分析之前,先看看多元高斯分布中条件和边缘高斯分布的求法。这个在后面因子分析的 EM 推导中有用。
假设 x由两个随机向量组成(可以看作是将之前的 x(i) 分成了两部分)
这里写图片描述
其中 x1Rrx2Rs xRr+s 。假设 x 服从多元高斯分布xN(μ,Σ),其中:
这里写图片描述
其中 μ1Rrμ2Rs ,那么 Σ11Rr×rΣ12Rr×s ,由于协方差矩阵是对称阵,因此 Σ12=ΣT21

这说明 x1 x2 的联合分布符合多元高斯分布。

begin-补充-边缘概率

如果我们把每一个变量的概率分布称为一个概率分布,那么边缘分布就是若干个变量的概率加和所表现出的分布。举个例子,假设 P(B),P(C),P(A|B),P(A|C) 已知,求 P(A) 。那么 P(A)=sum(P(B)P(A|B)+P(C)P(A|C))

再举个简单的例子:对于一个任意大小(n*n)的概率矩阵X,每一个元素表示一个概率,对于其中任一行或任一列求和,得到的概率就是边缘概率。如果写成式子,就是第i行有以下边缘分布: P(i)=sum(P(i,j),foreachjinn)

对,定义就是这么简单。就是指的某一些概率的加和值的分布,其实就对应一个等式,让它等于某种概率加和运算。

end-补充

那么只知道联合分布的情况下,如何求得 x1 的边缘分布呢?从上面的 μ Σ可以看出: E[x1]=µ1Cov(x1)=E[(x1µ1)(x1µ1)]=Σ11
第一个很明显就能得到,第二个也不难理解,我们来看下第二个怎么得到的:
这里写图片描述
由此可见, 多元高斯分布的边缘分布仍然是多元高斯分布。也就是说 x1N(μ1,Σ11) .

上面 Cov(x) 里面的 Σ12 评价的是两个随机向量之间的关系。比如 x1 ={身高,体重}, x2 ={性别,收入},那么 Σ11 求的是身高与身高,身高与体重,体重与体重的协方差。而 Σ12 求的是身高与性别,身高与收入,体重与性别,体重与收入的协方差,反映了 x1x2 之间的某些属性的关联度,当 Σ12 越小说明构成 Σ12 的各个属性间的关联度越小。

上面求的是边缘分布,让我们考虑一下条件分布的问题,也就是 x1|x2 的问题。根据多元高斯分布的定义, x1|x2N(μ1|2,Σ1|2) .
且:
这里写图片描述

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

因子分析例子

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

因子分析的实质是认为 m n维特征的训练样例 x(i)(x(i)1,x(i)2,,x(i)n) 的产生过程如下:
1、 首先在一个 k 维的空间中按照多元高斯分布生成 m z(i) k 维向量),即:

z(i)N(0,I)

2、 然后存在一个变换矩阵 Rn×k ,将 z(i) 映射到 n 维空间中,即:

z(i)

因为 z(i) 的均值是0(因为 z(i)N(0,I) ),映射后均值仍然是 0

3、 然后将 z(i) 加上一个均值 μ n 维),即:

μ+z(i)

对应的意义是将变换后的 z(i)n 维向量)中心移动到变换后样本的均值处.

4、 由于真实样例 x(i) 与上述模型生成的有误差,因此我们继续加上误差 ϵ n 维向量),而且 ϵ 符合多元高斯分布ϵN(0,Ψ),即:

μ+z(i)+ϵ

5、 最后的结果认为是真实的训练样例 x(i) 的生成公式:

x=µ+z(i)+ϵ

让我们使用一种直观方法来解释上述过程:
假设我们有 m=5 个 2 维的样本点 x(i) (两个特征),如下:
这里写图片描述

那么按照因子分析的理解,样本点的生成过程如下:
1、 我们首先认为在 1 维空间(这里 k=1), 存在着按正态分布生成的 m 个点 z(i) ,如下:
这里写图片描述
均值为0,方差为1.

2、 然后使用某个 =(a,b)T 将一维的 z 映射到 2 维,图形表示如下:
这里写图片描述

3、 之后加上 μ(μ1,μ2)T ,即将所有点的横坐标移动 μ1 ,纵坐标移动 μ2 ,将直线移到一
个位置,使得直线过点 μ ,原始左边轴的原点现在为μ(红色点)。
这里写图片描述
然而,样本点不可能这么规则,在模型上会有一定偏差, 因此我们需要将上步生成
的点做一些扰动(误差),扰动 ϵN(0,Ψ)

4、 加入扰动后,我们得到黑色样本 x(i) 如下:
这里写图片描述
5、 其中由于 z ϵ 的均值都为 0, 因此μ也是原始样本点(黑色点)的均值。

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

因子分析模型

上面的过程是从隐含随机变量 z 经过变换和误差扰动来得到观测到的样本点。其中 z被称为因子,是低维的
我们将式子再列一遍如下:
这里写图片描述
其中误差ϵ z 是独立的,I是单位矩阵(一元标准正态分布是 N(0,1) )。

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

矩阵表示法认为 z x联合符合多元高斯分布,如下:
这里写图片描述

下面我们将求 μzxΣ
首先我们知道 E[z]=0,E[ϵ]=0
这里写图片描述
因此
这里写图片描述

下一步是计算 Σ :
我们需要获得:Σzz=E[(zE[z])(zE[z])T](左上方), Σzx=E[(zE[z])(xE[x])T] (右上方), Σxx=E[(xE[x])(xE[x])T] (右下方).
由于 zN(0,I) ,我们容易得到 Σzz=Cov(z)=I ,以及:
这里写图片描述

这个过程中利用了 E[zzT]=Cov(z) (因为z的均值是0) ,以及 E[zϵT]=E[z]E[ϵT]=0 (基于 z ϵ 独立假设,z ϵ 的乘积的期望等于z ϵ 各自期望的乘积)。并将Λ看作已知变量。第一行中间省略了一步: =E[z(xμ)T]
接着求 Σxx
这里写图片描述
然后得出联合分布的最终形式
这里写图片描述

从上式中可以看出 x 的边缘分布xN(μ,ΛΛT+Ψ)

那么对样本{ x(i);i=1,,m }进行最大似然估计
这里写图片描述

然后对各个参数求偏导数不就得到各个参数的值了么?
可惜我们得不到 closed-form。想想也是,如果能得到,还干嘛将 z 和 x 放在一起求联合分布呢。根据之前对参数估计的理解,在有隐含变量 z 时,我们可以考虑使用 EM 来代替求最大似然值的方法进行估计。

因子分析的 EM 估计

若不知道EM算法请看这里

我们先来明确一下各个参数, z 是隐含变量,μ,Λ,Ψ是待估参数。

E步就是要计算:
这里写图片描述

根据第 3 节的条件分布讨论,
这里写图片描述
因此
这里写图片描述

那么根据多元高斯分布公式,得到E步的计算公式
这里写图片描述

下面来看M步:
M步最大化的目标是:
这里写图片描述
其中待估参数是 µ,Λ,Ψ loge,lne 在这里并没有区别 loge=1

下面我们重点求 Λ 的估计公式
首先将上式简化为:
这里写图片描述

这里z(i)Qi表示 z(i) 服从 Qi 分布。然后去掉与 Λ 不相关的项(后两项),得:
这里写图片描述

去掉不相关的前两项后,对Λ进行导:
这里写图片描述

第一步到第二步利用了 tr a=a ( a 是实数时)和 tr AB = tr BA。最后一步利用了 AtrABATC=CAB+CTABT
tr 就是求一个矩阵对角线上元素和。

最后让其值为 0,并且化简得:
这里写图片描述
然后得到
这里写图片描述
到这里我们发现,这个公式有点眼熟,与之前回归中的最小二乘法矩阵形式类似:
这里写图片描述

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

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

根据我们之前对 Qi (Qi(z(i)|x(i))) 的定义,我们有均值 μz(i)|x(i) 和协方差矩阵 Σz(i)|x(i) ,因此可得:
这里写图片描述

第二个式子是根据: Cov(Y)=E[YYT]E[Y]E[Y]T E[YYT]=E[Y]E[Y]T+Cov(Y) 得到的。
此时可得:
这里写图片描述
至此,我们得到了 Λ ,注意一点是 E[z] E[zzT] 的不同,后者需要求 z 的协方差

其他参数的迭代公式如下:
这里写图片描述
均值μ只需要计算依次,它在迭代过程中值不变。

这里写图片描述
然后将 Φ 上的对角线上元素抽取出来放到对应的Ψ中,就得到了对角矩阵 Ψ

总结

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

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

下面从一个 ppt 中摘抄几段话来进一步解释因子分析。
因子分析(factor analysis)是一种数据简化的技术。它通过研究众多变量之间的内部依赖关系,探求观测数据中的基本结构,并用少数几个假想变量来表示其基本的数据结构。这几个假想变量能够反映原来众多变量的主要信息。原始的变量是可观测的显在变量,而假想变量是不可观测的潜在变量,称为因子。
例如,在企业形象或品牌形象的研究中,消费者可以通过一个有 24 个指标构成的评价体系,评价百货商场的 24 个方面的优劣。
但消费者主要关心的是三个方面,即商店的环境、商店的服务和商品的价格。因子分析方法可以通过 24 个变量,找出反映商店环境、商店服务水平和商品价格的三个潜在的因子,对商店进行综合评价。而这三个公共因子可以表示为:
这里写图片描述
这里的 xi 就是样例 x 的第i 个分量, μi 就是 μ 的第i个分量, αij 就是 Λ 的第i 行第 j 列元素,Fi z 的第 i 个分量, ϵi ϵ(i)
Fi 是不可观测的潜在因子。 24 个变量共享这三个因子,但是每个变量又有自己的个性,不被包含的部分 ϵi ,称为特殊因子。

注:
因子分析与回归分析不同,因子分析中的因子是一个比较抽象的概念,而回归因子有非常明确的实际意义;
主成分分析分析与因子分析也有不同,主成分分析仅仅是变量变换,而因子分析需要构造因子模型。
主成分分析:原始变量的线性组合表示新的综合变量,即主成分;
因子分析:潜在的假想变量和随机影响变量的线性组合表示原始变量。

PPT 地址
http://www.math.zju.edu.cn/webpagenew/uploadfiles/attachfiles/2008123195228555.ppt
其他值得参考的文献
An Introduction to Probabilistic Graphical Models by Jordan Chapter 14

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值