PCA(主成分分析)与FA(因子分析)的直白理解

  主成分分析和因子分析是数据挖掘中常用的方法,帮助我们对原始数据有更好的理解,同时也可以实现降维等操作,为后续工作提供便利。
  但是有一些博客的介绍中,其中数学推导的部分过多,没有很好地跟实际例子结合到一起,通俗易懂地解释这两个东西。我更想更需要直白的解释。

PCA

  何谓主成分分析,其实大家通常意义说的那个借助于特征值和特征向量的PCA方法,应该叫做“基于方差最大化的特征主成分分析”
  真正的主成分分析,应该是所有能够对数据实现主要成分表示的方法的总的称谓。
  因为,主成分分析的目标是:
  

XmnBnk=Cmk
  其中, Xmn 表示 m n 列的样本矩阵, B 表示 k 维空间的基底矩阵, Cmk 表示原始数据 X 经过空间变换 B 之后,得到的新空间内的数据。其中的 B 是特征主成分的表示

   如何表示 B 有很多种角度,也就意味着有很多种主成分分析方法。
  先讲“基于方差最大化的特征主成分分析-PCA”,我们暂且还是这么叫它为PCA。
  PCA一开始就没打算 直接对数据怎么样, 而是研究维度之间的关系,将维度简化,比如去掉相关性之类的,或者是去掉一些用处不大的维度。
  假设样本矩阵 去中心后,表示为 Z
  如果从线性相关性入手研究的话,就必须要提到协方差矩阵 ZTZ ,注意其是 nn 的,表示的是维度之间的协方差关系。啥叫两个随机变量 M,N 的协方差,就是:
   Cov(M,N)=E(MM¯¯¯¯)(NN¯¯¯)=1mmi=1(miMi¯¯¯¯¯)(niNi¯¯¯¯)
   刚好 Cov(A,A)=1mZTZ m表示样本数量,是常数。
   协方差在一定程度上描述了维度之间的线性关系,为什么呢?
  因为线性相关系数 ρXY=Cov(X,Y)D(X)D(Y) ,协方差是分子部分,可以描述方差意义下的相关性。
   这个协方差矩阵是否可以缩减一下,(有些维度是线性相关性很强的,并且我们如果把主要信息所在的维度)如果可以把相关性这层关系表示成另外一种简化形式,岂不是更好。
  这个时候就需要特征值和特征向量的登场了。
  对某个矩阵 A 来说,如果存在不是零向量的 β 使得 Aβ=λβ ,则称 β 为矩阵 A 的特征向量, λ 为矩阵 A 的特征值。
  从空间变换上来看, β 这个向量有个很好的特点,就是 矩阵 A 经过 β 的变换之后,还在 β 这个方向上,只不过是数值大小(包括正负)会出现变化。
  怎么解释特征值呢,就是数据在特征向量方向上的方差。方差越大,信息量越大。(可否理解为方差越大,不确定性越大,信息量越大。方差小的表示本维度的值波动范围小,对样本标签的预测也就无法很好地预测,方差大的才能更好地。)
  那么,这样就好了,我们对维度之间的关系矩阵,进行特征值分解, ZTZ=QΛQT 就找到了特征向量,Q是由特征向量正交单位化之后组成的。
  于是将维度之间的关系矩阵,表示在了特征向量为基底的空间内,得到 ZTZ[β1,β2,...βn]=[λ1β1,λ2β2,....λnβn] ,其中的 λ 表示的是在各个基底方向上的大小(一个数据在三维中的表示为(1000,999,1),当然可以认为x,y维度上更重要)。
  (1) ZTZ 刚好是实对称矩阵,所以可以谱分解为上述形式。
  (2)Q也可以不单位正交化。
   根据原始维度之间的协方差关系,可以找到新的维度空间(特征向量为基底表示的空间),且能够变换过去,且不同特征值之间的特征向量线性不相关(所以有人也说是去相关)。
  选择 λ 较大的前几个,作为新的特征基底,比如 [λ1,λ2,λ3] (到这里,主成分分析算是完毕了,主要成分都已经找到了),对原始数据进行空间变换 X[λ1,λ2,λ3]=[Xλ1,Xλ2,Xλ3] ,将其表示在新的基底下,就是保留了较大方差的新数据(实现了降维)(因为方差小的维度对分类判断没有太大作用,去掉了认为数据损失不大,这个限度就看你取前几个最大的占所有的比例)。
  我们看到,主成分是指的维度的主成分,此处用的是方差最大的一种主成分分析,当然还可以用其他标准来分析其主成分,所以主成分分析是个很大的概念。

Factor Analysis

  因子分析,实际上应该叫做公共因子分析,为什么呢?看其定义:
  

X=AF+ε
   X 表示原始数据, F 表示公共因子, ε 是特殊因子

   因子分析的原理是假设原始的数据是由公共因子(公共维度)与误差因子(非公共维度)构成的,如上式所写。(但因子分析更关心公共因子,对特殊因子不甚关心)
  那么,问题来了,如何找到公共因子呢?
  我从一个易于理解的角度,为大家解析基于特征向量的公共因子分析,而不是从很恐怖的统计角度。 我仅仅是去凑出公共因子分析的定义形式,然后去比对着定义找公共因子。其中很多地方是与 任浩同学的讨论明白的。
  我们先尝试对上式变形运算:
   XTX=(AF+ε)T(AF+ε)
  先看右侧,我们将非公共部分去掉,得到:
   XTX(AF)T(AF)
   注意此处的约等于不是抽取公共因子(用少量公共因子)之后造成的约等,而是因为去掉了特殊因子造成的约等。
   XTX=VΛVT 实对称矩阵的特征值分解,此处不做单位化处理。
   XTX=[β1,β2,...,βn]λ1λ2...λnβ1β2...βn
   XTX=[λ1β1,λ2β2,...,λnβn]λ1β1λ2β2...λnβn
  对比上式: XTX(AF)T(AF) 看着形式是一样的,并且符合了定义的公共因子的样子。
  如果从 [λ1β1,λ2β2,...,λnβn] 抽取几个 β 作为公共因子,岂不是个很好的想法。 于是,就有了公共因子。
  此处的左侧 XTX ,怎么看着这么眼熟,是不是跟前面提到的协方差矩阵很像。哈哈,是的,很像。 但是请注意:这里可以不用去中心化,因为没有严格的去研究维度之间的相关性,而是单纯的做了转置再乘以自身(当然也可以去中心化),这种变形运算是为了凑出右侧乘的形式,以便于跟定义的公共因子的样子相近。
  至此,公共因子的抽取也就结束了,至于公共因子旋转之类的操作,是为了使得公共因子更具有可解释性,暂时还不做解释了。
  还有如何利用公共因子去分析原始维度的重要性,这里也不做赘述了,大家自己上网搜索了解吧。
  公共因子的形式可以有很多种,都能凑出定义的形式来,那么也就有很多因子分析方法了。

小结

  PCA和FA是很常用的因素分析方法,他们之间既有联系又各不相同。
  主成分分析,是分析维度属性的主要成分表示。
  因子分析,是分析属性们的公共部分的表示。

你可能感兴趣的:(技术博客)