之前我们考虑的训练数据中样例
的个数m都远远大于其特征个数n,这样不管是进行回归、聚类等都没有太大的问题。然而当训练样例个数m太小,甚至m<<n的时候,使用梯度下降法进行回归时,如果初值不同,得到的参数结果会有很大偏差(因为方程数小于参数个数)。另外,如果使用多元高斯分布(Multivariate Gaussian distribution)对数据进行拟合时,也会有问题。让我们来演算一下,看看会有什么问题:
多元高斯分布的参数估计公式如下:
分别是求mean和协方差的公式,
表示样例,共有m个,每个样例n个特征,因此
是n维向量,
是n*n协方差矩阵。
当m<<n时,我们会发现
是奇异阵(
),也就是说
不存在,没办法拟合出多元高斯分布了,确切的说是我们估计不出来
。
如果我们仍然想用多元高斯分布来估计样本,那怎么办呢?
当没有足够的数据去估计
时,那么只能对模型参数进行一定假设,之前我们想估计出完全的
(矩阵中的全部元素),现在我们假设
就是对角阵(各特征间相互独立),那么我们只需要计算每个特征的方差即可,最后的
只有对角线上的元素不为0
回想我们之前讨论过的二维多元高斯分布的几何特性,在平面上的投影是个椭圆,中心点由
决定,椭圆的形状由
决定。
如果变成对角阵,就意味着椭圆的两个轴都和坐标轴平行了。
如果我们想对
进一步限制的话,可以假设对角线上的元素都是等值的。
其中
也就是上一步对角线上元素的均值,反映到二维高斯分布图上就是椭圆变成圆。
当我们要估计出完整的
时,我们需要m>=n+1才能保证在最大似然估计下得出的
是非奇异的。然而在上面的任何一种假设限定条件下,只要m>=2都可以估计出限定的
。
这样做的缺点也是显然易见的,我们认为特征间独立,这个假设太强。接下来,我们给出一种称为因子分析的方法,使用更多的参数来分析特征间的关系,并且不需要计算一个完整的
。
在讨论因子分析之前,先看看多元高斯分布中,条件和边缘高斯分布的求法。这个在后面因子分析的EM推导中有用。
假设x是有两个随机向量组成(可以看作是将之前的
分成了两部分)
其中
,
,那么
。假设x服从多元高斯分布
,其中
其中
,
,那么
,
,由于协方差矩阵是对称阵,因此
。
整体看来
和
联合分布符合多元高斯分布。
那么只知道联合分布的情况下,如何求得
的边缘分布呢?从上面的
和
可以看出,
,
,下面我们验证第二个结果
由此可见,多元高斯分布的边缘分布仍然是多元高斯分布。也就是说
。
上面Cov(x)里面有趣的是
,这个与之前计算协方差的效果不同。之前的协方差矩阵都是针对一个随机变量(多维向量)来说的,而
评价的是两个随机向量之间的关系。比如
={身高,体重},
={性别,收入},那么
求的是身高与身高,身高与体重,体重与体重的协方差。而
求的是身高与性别,身高与收入,体重与性别,体重与收入的协方差,看起来与之前的大不一样,比较诡异的求法。
上面求的是边缘分布,让我们考虑一下条件分布的问题,也就是
的问题。根据多元高斯分布的定义,
。
且
这是我们接下来计算时需要的公式,这两个公式直接给出,没有推导过程。如果想了解具体的推导过程,可以参见Chuong B. Do写的《Gaussian processes》。
下面通过一个简单例子,来引出因子分析背后的思想。
因子分析的实质是认为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,因此
也是原始样本点(黑色点)的均值。
由以上的直观分析,我们知道了因子分析其实就是认为高维样本点实际上是由低维样本点经过高斯分布、线性变换、误差扰动生成的,因此高维数据可以使用低维来表示。
上面的过程是从隐含随机变量z经过变换和误差扰动来得到观测到的样本点。其中z被称为因子,是低维的。
我们将式子再列一遍如下:
其中误差
和z是独立的。
下面使用的因子分析表示方法是矩阵表示法,在参考资料中给出了一些其他的表示方法,如果不明白矩阵表示法,可以参考其他资料。
矩阵表示法认为z和x联合符合多元高斯分布,如下
求
之前需要求E[x]
我们已知E[z]=0,因此
下一步是计算
,
其中
接着求
这个过程中利用了z和
独立假设(
)。并将
看作已知变量。
接着求
然后得出联合分布的最终形式
从上式中可以看出x的边缘分布
那么对样本
进行最大似然估计
然后对各个参数求偏导数不就得到各个参数的值了么?
可惜我们得不到closed-form。想想也是,如果能得到,还干嘛将z和x放在一起求联合分布呢。根据之前对参数估计的理解,在有隐含变量z时,我们可以考虑使用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的协方差。
其他参数的迭代公式如下:
均值
在迭代过程中值不变。
然后将
上的对角线上元素抽取出来放到对应的
中,就得到了
。
根据上面的EM的过程,要对样本X进行因子分析,只需知道要分解的因子数(z的维度)即可。通过EM,我们能够得到转换矩阵
和误差协方差
。
因子分析实际上是降维,在得到各个参数后,可以求得z。但是z的各个参数含义需要自己去琢磨。
下面从一个ppt中摘抄几段话来进一步解释因子分析。
因子分析(factor analysis)是一种数据简化的技术。它通过研究众多变量之间的内部依赖关系,探求观测数据中的基本结构,并用少数几个假想变量来表示其基本的数据结构。这几个假想变量能够反映原来众多变量的主要信息。原始的变量是可观测的显在变量,而假想变量是不可观测的潜在变量,称为因子。
例如,在企业形象或品牌形象的研究中,消费者可以通过一个有24个指标构成的评价体系,评价百货商场的24个方面的优劣。
但消费者主要关心的是三个方面,即商店的环境、商店的服务和商品的价格。因子分析方法可以通过24个变量,找出反映商店环境、商店服务水平和商品价格的三个潜在的因子,对商店进行综合评价。而这三个公共因子可以表示为:
这里的
就是样例x的第i个分量,
就是
的第i个分量,
就是
的第i行第j列元素,
是z的第i个分量,
是
。
称
是不可观测的潜在因子。24个变量共享这三个因子,但是每个变量又有自己的个性,不被包含的部分
,称为特殊因子。
注:
因子分析与回归分析不同,因子分析中的因子是一个比较抽象的概念,而回归因子有非常明确的实际意义;
主成分分析分析与因子分析也有不同,主成分分析仅仅是变量变换,而因子分析需要构造因子模型。
主成分分析:原始变量的线性组合表示新的综合变量,即主成分;
因子分析:潜在的假想变量和随机影响变量的线性组合表示原始变量。
主成分分析和因子分析的区别
主成分分析和因子分析无论从算法上还是应用上都有着比较相似之处以下文结合以往资料以及自己的理解总结了以下十大不同之处,适合初学者学习之用。
1.原理不同
主成分分析基本原理:利用降维(线性变换)的思想,在损失很少信息的前提下把多个指标转化为几个不相关的综合指标(主成分),即每个主成分都是原始变量的线性组合,且各个主成分之间互不相关,使得主成分比原始变量具有某些更优越的性能(主成分必须保留原始变量90%以上的信息),从而达到简化系统结构,抓住问题实质的目的。
因子分析基本原理:利用降维的思想,由研究原始变量相关矩阵内部的依赖关系出发,把一些具有错综复杂关系的变量表示成少数的公共因子和仅对某一个变量有作用的特殊因子线性组合而成。就是要从数据中提取对变量起解释作用的少数公共因子(因子分析是主成分的推广,相对于主成分分析,更倾向于描述原始变量之间的相关关系)
2.线性表示方向不同
因子分析是把变量表示成各公因子的线性组合;而主成分分析中则是把主成分表示成各变量的线性组合。
3.假设条件不同
主成分分析:不需要有假设(assumptions),
因子分析:需要一些假设。因子分析的假设包括:各个共同因子之间不相关,特殊因子(specificfactor)之间也不相关,共同因子和特殊因子之间也不相关。
4.求解方法不同
求解主成分的方法:从协方差阵出发(协方差阵已知),从相关阵出发(相关阵R已知),采用的方法只有主成分法。
(实际研究中,总体协方差阵与相关阵是未知的,必须通过样本数据来估计)
注意事项:由协方差阵出发与由相关阵出发求解主成分所得结果不一致时,要恰当的选取某一种方法;一般当变量单位相同或者变量在同一数量等级的情况下,可以直接采用协方差阵进行计算;对于度量单位不同的指标或是取值范围彼此差异非常大的指标,应考虑将数据标准化,再由协方差阵求主成分;实际应用中应该尽可能的避免标准化,因为在标准化的过程中会抹杀一部分原本刻画变量之间离散程度差异的信息。此外,最理想的情况是主成分分析前的变量之间相关性高,且变量之间不存在多重共线性问题(会出现最小特征根接近0的情况);
求解因子载荷的方法:主成分法,主轴因子法,极大似然法,最小二乘法,a因子提取法。
5.主成分和因子的变化不同
主成分分析:当给定的协方差矩阵或者相关矩阵的特征值唯一时,主成分一般是固定的独特的;
因子分析:因子不是固定的,可以旋转得到不同的因子。
6.因子数量与主成分的数量
主成分分析:主成分的数量是一定的,一般有几个变量就有几个主成分(只是主成分所解释的信息量不等),实际应用时会根据碎石图提取前几个主要的主成分。
因子分析:因子个数需要分析者指定(SPSS和sas根据一定的条件自动设定,只要是特征值大于1的因子主可进入分析),指定的因子数量不同而结果也不同;
7.解释重点不同:
主成分分析:重点在于解释个变量的总方差,
因子分析:则把重点放在解释各变量之间的协方差。
8.算法上的不同: 主成分分析:协方差矩阵的对角元素是变量的方差;
因子分析:所采用的协方差矩阵的对角元素不在是变量的方差,而是和变量对应的共同度(变量方差中被各因子所解释的部分)
9.优点不同:
因子分析:对于因子分析,可以使用旋转技术,使得因子更好的得到解释,因此在解释主成分方面因子分析更占优势;其次因子分析不是对原有变量的取舍,而是根据原始变量的信息进行重新组合,找出影响变量的共同因子,化简数据;
主成分分析:
第一:如果仅仅想把现有的变量变成少数几个新的变量(新的变量几乎带有原来所有变量的信息)来进入后续的分析,则可以使用主成分分析,不过一般情况下也可以使用因子分析;
第二:通过计算综合主成分函数得分,对客观经济现象进行科学评价;
第三:它在应用上侧重于信息贡献影响力综合评价。
第四:应用范围广,主成分分析不要求数据来自正态分布总体,其技术来源是矩阵运算的技术以及矩阵对角化和矩阵的谱分解技术,因而凡是涉及多维度问题,都可以应用主成分降维;
10.应用场景不同:
主成分分析:
可以用于系统运营状态做出评估,一般是将多个指标综合成一个变量,即将多维问题降维至一维,这样才能方便排序评估;
此外还可以应用于经济效益、经济发展水平、经济发展竞争力、生活水平、生活质量的评价研究上;
主成分还可以用于和回归分析相结合,进行主成分回归分析,甚至可以利用主成分分析进行挑选变量,选择少数变量再进行进一步的研究。
一般情况下主成分用于探索性分析,很少单独使用,用主成分来分析数据,可以让我们对数据有一个大致的了解。
几个常用组合:
主成分分析+判别分析,适用于变量多而记录数不多的情况;
主成分分析+多元回归分析,主成分分析可以帮助判断是否存在共线性,并用于处理共线性问题;
主成分分析+聚类分析,不过这种组合因子分析可以更好的发挥优势。
因子分析:
首先,因子分析+多元回归分析,可以利用因子分析解决共线性问题;
其次,可以利用因子分析,寻找变量之间的潜在结构;
再次,因子分析+聚类分析,可以通过因子分析寻找聚类变量,从而简化聚类变量;
此外,因子分析还可以用于内在结构证实。