【转载】因子分析(Factor Analysis)

因子分析(Factor Analysis)

【pdf版本】因子分析

1 问题

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

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

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

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

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

2 限制协方差矩阵

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

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

如果我们想对进一步限制的话,可以假设对角线上的元素都是等值的。

其中

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

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

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

3 边缘和条件高斯分布

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

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

其中,那么。假设x服从多元高斯分布,其中

其中,那么,由于协方差矩阵是对称阵,因此

整体看来联合分布符合多元高斯分布。

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

,,下面我们验证第二个结果

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

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

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

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

4 因子分析例子

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

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

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

2、 然后存在一个变换矩阵,将映射到n维空间中,即

因为的均值是0,映射后仍然是0。

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

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

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

而且符合多元高斯分布,即

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

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

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

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

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

均值为0,方差为1。

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

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

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

4、 加入扰动后,我们得到黑色样本如下:

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

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

5 因子分析模型

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

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

其中误差和z是独立的。

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

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

之前需要求E[x]

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

下一步是计算

其中

接着求

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

接着求

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

从上式中可以看出x的边缘分布

那么对样本进行最大似然估计

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

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

6 因子分析的EM估计

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

回想EM两个步骤:


循环重复直到收敛 {

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

(M步)计算

我们套用一下:

(E步):

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

因此

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

(M步):

直接写要最大化的目标是

其中待估参数是

下面我们重点求的估计公式

首先将上式简化为:

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

去掉不相关的前两项后,对进行导,

第一步到第二步利用了tr a = a(a是实数时)和tr AB = tr BA。最后一步利用了

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

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

然后得到

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

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

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

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

第一步根据z的条件分布得到,第二步根据得到

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

至此,我们得到了,注意一点是E[z]和的不同,后者需要求z的协方差。

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

均值在迭代过程中值不变。

然后将上的对角线上元素抽取出来放到对应的中,就得到了

7 总结

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

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

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

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

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

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

这里的就是样例x的第i个分量,就是的第i个分量,就是的第i行第j列元素,是z的第i个分量,

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

 

 

注:

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

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

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

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

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

时间: 2024-10-06 08:45:31

【转载】因子分析(Factor Analysis)的相关文章

因子分析(Factor analysis)

1.引言 在高斯混合和EM算法中,我们运用EM算法拟合混合模型,但是我们得考虑得需要多少的样本数据才能准确识别出数据中的多个高斯模型!看下面两种情况的分析: 第一种情况假如有 m 个样本,每个样本的维度是 n, 如果 n » m, 这时哪怕拟合出一个高斯模型都很困难,更不用说高斯混合, 为什么呢? 这和解多元线性方程组是一样的道理,就是自变量的个数多于非线性相关的方程的个数,这必然导致解的不唯一,虽然在解方程的时候可以随便选一个解满足方程组,但是对于某一实际数据集,往往样本对应的概率分布在客观上

Stat3—因子分析(Factor Analysis)

http://www.datasoldier.net/post/40.html http://wenku.baidu.com/view/4904e121192e45361066f522.html http://wenku.baidu.com/link?url=EwayX82S9pd1TO486JW4iEK2YEjTB-FuNiDlKeVRJ_bEJ4UfubCXbfsCErAw0ZTzfWVtFQvBCXr_7x1CclrYxRtPnVlrwFzyMqE_R9Q8dVW http://wenku

因子分析法(Factor Analysis)是什么分析

因子分析与因子分析法主成分分析通过线性组合将原变量综合成几个主成分,用较少的综合指标来代替原来较多的指标(变量).在多变量分析中,某些变量间往往存在相关性.是什么原因使变量间有关联呢?是否存在不能直接观测到的.但影响可观测变量变化的公共因子?因子分析法(Factor Analysis)就是寻找这些公共因子的模型分析方法,它是在主成分的基础上构筑若干意义较为明确的公因子,以它们为框架分解原变量,以此考察原变量间的联系与区别. 例如,随着年龄的增长,儿童的身高.体重会随着变化,具有一定的相关性,身高

因子分析 (Factor Analysis Sharp)

In my understanding, factor analysis is a method developed to avoid the mass estimation of the variance-covariance matrix when doing Markowitz Allocation. Factor Analysis breakdown the risk factors in stocks into risk factors in portfolio. It apply t

转载-对LR analysis的平均事务响应时间和summary里的时间值的不同的解释

这里我已经忽略了思考时间. 看这里的liboys事务的值.先记住它们. 再看这个图中的liboys事务的时间值,再记住它们. 看看这个average transaction response time的采样时间: granularity 2秒.现在我改为:115秒(整个场景的运行时间). 再来看average transaction response time图. 这里,我再把min,ave,max列显示出来 是不是graph的最大,最小,平均,都是一样了? 是不是和Summary里的平均值也是

Principal components analysis(PCA):主元分析

在因子分析(Factor analysis)中,介绍了一种降维概率模型,用EM算法(EM算法原理详解)估计参数.在这里讨论另外一种降维方法:主元分析法(PCA),这种算法更加直接,只需要进行特征向量的计算,不需要用到EM算法. 假设数据集表示 m 个不同类型汽车的属性,比如最大速度,转弯半径等等. 对于任意一辆汽车,假设第 i 个属性和第 j 个属性 xi 和 xj 分别以 米/小时 和 千米/小时 来表示汽车的最大速度,那么很显然这两个属性是线性相关的,所以数据可以去掉其中一个属性,即在 n-

声纹识别之PLDA算法描述

之前我写过<我对说话人识别/声纹识别的研究综述>,本篇基本上可以是这个综述的续写.其实,写的也没有什么深度,想获得深度信息的朋友们可以不用往下看了,还不如下载几篇领域内的国内博士论文看看.为什么是国内呢?因为国内博士论文前面的综述写的还不错,嘿嘿~我写这个主要是给不熟悉这个领域内的朋友看的,用通熟的话描述这个领域内重要的一些算法,等于是入个门吧. PLDA算法 前面博客已经提到过声纹识别的信道补偿算法,而且重点说了LDA算法.PLDA(Probabilistic Linear Discrimi

PCA算法理解及代码实现

github:PCA代码实现.PCA应用 本文算法均使用python3实现 1. 数据降维 ??在实际生产生活中,我们所获得的数据集在特征上往往具有很高的维度,对高维度的数据进行处理时消耗的时间很大,并且过多的特征变量也会妨碍查找规律的建立.如何在最大程度上保留数据集的信息量的前提下进行数据维度的降低,是我们需要解决的问题. ??对数据进行降维有以下优点: ??(1)使得数据集更易使用 ??(2)降低很多算法的计算开销 ??(3)去除噪声 ??(4)使得结果易懂 ??降维技术作为数据预处理的一部

这七种数据分析领域中最为人称道的降维方法

这七种数据分析领域中最为人称道的降维方法 感谢王穆荣的投稿,转自数盟社区 近来由于数据记录和属性规模的急剧增长,大数据处理平台和并行数据分析算法也随之出现.于此同时,这也推动了数据降维处理的应用.实际上,数据量有时过犹不及.有时在数据分析应用中大量的数据反而会产生更坏的性能. 最新的一个例子是采用 2009 KDD Challenge 大数据集来预测客户流失量. 该数据集维度达到 15000 维. 大多数数据挖掘算法都直接对数据逐列处理,在数据数目一大时,导致算法越来越慢.该项目的最重要的就是在