原文地址:http://www.cnblogs.com/jerrylead/archive/2011/05/11/2043317.html

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

因子分析(Factor Analysis)的更多相关文章

  1. 因子分析(Factor analysis)

    1.引言 在高斯混合和EM算法中,我们运用EM算法拟合混合模型,但是我们得考虑得需要多少的样本数据才能准确识别出数据中的多个高斯模型!看下面两种情况的分析: 第一种情况假如有 m 个样本,每个样本的维 ...

  2. Stat3—因子分析(Factor Analysis)

    题注:主成分分析分析与因子分析也有不同,主成分分析仅仅是变量变换,而因子分析需要构造因子模型.主成分分析:原始变量的线性组合表示新的综合变量,即主成分:因子分析:潜在的假想变量和随机影响变量的线性组合 ...

  3. Andrew Ng机器学习公开课笔记 – Factor Analysis

    网易公开课,第13,14课 notes,9 本质上因子分析是一种降维算法 参考,http://www.douban.com/note/225942377/,浅谈主成分分析和因子分析 把大量的原始变量, ...

  4. 因子分析factor analysis_spss运用_python建模(推荐AAA)

    sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...

  5. [Scikit-learn] 2.5 Dimensionality reduction - Probabilistic PCA & Factor Analysis

    2.5.4. Factor Analysis PPCA的基本性质以及人肉推导: 以上假设z是标准正态分布的情况.以下是对z的分布的扩展,为general normal distribution. Fr ...

  6. Principal components analysis(PCA):主元分析

    在因子分析(Factor analysis)中,介绍了一种降维概率模型,用EM算法(EM算法原理详解)估计参数.在这里讨论另外一种降维方法:主元分析法(PCA),这种算法更加直接,只需要进行特征向量的 ...

  7. R Language

    向量定义:x1 = c(1,2,3); x2 = c(1:100) 类型显示:mode(x1) 向量长度:length(x2) 向量元素显示:x1[c(1,2,3)] 多维向量:multi-dimen ...

  8. 【机器学习实战】第13章 利用 PCA 来简化数据

    第13章 利用 PCA 来简化数据 降维技术 场景 我们正通过电视观看体育比赛,在电视的显示器上有一个球. 显示器大概包含了100万像素点,而球则可能是由较少的像素点组成,例如说一千个像素点. 人们实 ...

  9. 一步步教你轻松学主成分分析PCA降维算法

    一步步教你轻松学主成分分析PCA降维算法 (白宁超 2018年10月22日10:14:18) 摘要:主成分分析(英语:Principal components analysis,PCA)是一种分析.简 ...

随机推荐

  1. 【本周主题】第一期:JavaScript单线程与异步

    相信下边这个图一定都不陌生,本周就围绕这张图深入了解下js代码执行时的来龙去脉. 一.JavaScript是单线程的 2018-11-19 21:21:21 周一 js本质是单线程的.这一特性是jav ...

  2. Free Download Manager (FDM) 中文版 - 替代迅雷最佳免费开源下载工具软件

    https://www.freedownloadmanager.org/ Free Download Manager (FDM) 是一款经典免费纯粹的下载软件,它开源无广告,界面简洁清爽,支持 BT. ...

  3. ngnix +tomcat7 简单配置

    1.下载tomcat7 修改conf 文件夹下的server.xml文件 1.<Server port="8205" shutdown="SHUTDOWN" ...

  4. 如何区分slice、splice和split

    小颖之前写过一篇文章:JavaScript Array 对象方法 以及 如何区分javascript中的toString().toLocaleString().valueOf()方法中有分享过slic ...

  5. 浅谈P2P、P2C 、O2O 、B2C、B2B、 C2C的区别

    相信有很多人对P2P.P2C .O2O .B2C.B2B. C2C不是很熟悉,甚至是云里雾里,每天看着这些常见又陌生的名词,如果有人跟你说 让你解释它的含义,金融的小伙伴们是不是瞬间石化了,尤其是做淘 ...

  6. Laya 位图字体制作(失败...)

    参考: 官网教程-位图字体的制作与使用 一.下载字体并安装字体 从站长字体下载了液晶数字字体,将TTF文件拖入C盘windows/Font文件夹,则字体会自动安装 二.下载字体制作工具 Bitmap ...

  7. How arduino IDE works?

    test.ino void setup() { pinMode(,OUTPUT); } void loop() { digitalWrite(,HIGH); delay(); digitalWrite ...

  8. 关于virgo-tomcat-server-3.6.0.RELEASE配置文件修改说明

    Virgo项目Web服务器是EclipseRT项目的一部分,是一个完全模块化的Java运行时. Virgo自身就是设计为在标准OSGi框架实现(Equinox)之上的一个OSGi bundle集合. ...

  9. Unity性能优化之Draw Call(转)

    Unity(或者说基本所有图形引擎)生成一帧画面的处理过程大致可以这样简化描述:引擎首先经过简单的可见性测试,确定摄像机可以看到的物体,然后把这些物体的顶点(包括本地位置.法线.UV等),索引(顶点如 ...

  10. 解决IE6下透明图片有背景的问题

    描述,透底的图片,在其他浏览器中效果: 在IE6中的效果:  1.改图片 IMG 换用gif格式的图片,但是这样的话图片效果不好: 想让IE6用gif的图片,其他浏览器用png图片,但是只有IE有这样 ...