机器学习笔记——12 主成分分析(PCA)和因子分析(FA)

机器学习笔记——12 主成分分析和因子分析

主成分分析(principal components analysis,PCA)是一种有比较完美的数学理论支持的方法,它广泛用于数据降维和图像识别等领域。因子分析(factor analysis,FA)是一种的数据模型,它可以处理一些数据量少但是数据维度又大的数据建模问题。本文将介绍PCA的数学原理,然后介绍FA的基本思想,并对FA中参数的估计进行一些介绍。

PCA的数学原理

PCA重点在于寻找一个投影方向,我们记之为 u u u,该方向向量是归一化的,长度为一,即 u T u = 1 u^Tu = 1 uTu=1。理想上我们希望样本数据投影到该方向后,保留有较大的差异,即投影后的数据方差最大,亦即 u = a r g M a x u ∈ R n 1 m ∑ i = 1 m ( u T x ( i ) ) 2 u = argMax _{u\in R^{n}}\frac{1}{m}\sum_{i = 1}^{m} (u^Tx^{(i)})^2 u=argMaxuRnm1i=1m(uTx(i))2进一步分析,如果我们记样本的协方差为 Σ \Sigma Σ,那么我们要最大化的东西为 u T Σ u u^T\Sigma u uTΣu,利用条件极值的基本理论,在最值点的必要条件,即限制条件的函数和最值化的函数在最值点处的导数是一致的,因此有 2 Σ u = 2 λ u 2\Sigma u = 2\lambda u 2Σu=2λu其中 λ \lambda λ为一个常数。变换一下即可得到 ( Σ − λ I ) u = 0 (\Sigma-\lambda I)u = 0 (ΣλI)u=0 u T Σ u = λ u^T\Sigma u = \lambda uTΣu=λ从而我们发现 λ \lambda λ Σ \Sigma Σ的特征值, u u u Σ \Sigma Σ的特征向量。因此就得到一个漂亮的结论:
投影方向应为 Σ \Sigma Σ的特征向量,并且为了使得方差达到最大,我们应该选择相应特征值最大的特征向量。
类似地,如果我们还需要另一个投影方向,此时我们还要求新添加的投影方向 v v v应该与已添加的投影方向 u u u是不相关的,即样本协方差 c o v ( u T x , v T x ) = u T Σ v = λ u T v = 0 cov(u^Tx,v^Tx) = u^T\Sigma v = \lambda u^Tv = 0 cov(uTx,vTx)=uTΣv=λuTv=0,从而可以得到 ( Σ − λ I ) v = 0 (\Sigma-\lambda I)v = 0 (ΣλI)v=0 v T Σ v = λ v^T\Sigma v = \lambda vTΣv=λ u T v = 0 u^Tv = 0 uTv=0因此第二个投影向量应该选择第二个特征向量,其首先应当满足与前一投影向量正交,在此基础上选择对应最大的特征值。

从协方差对称矩阵 Σ \Sigma Σ的谱分解角度看待PCA

由于数据存在相关和冗余,所以PCA实际上在做两件事,一是旋转整个坐标系,合适的旋转可以有效地消除相关性,因为它相当于聚合原来的各个数据维度;二是舍弃一些旋转后样本数据方差较差的坐标轴。
基于此,我们记旋转坐标系的正交矩阵为 U T U^T UT,则旋转后的数据维度为 Y = U T X Y = U^TX Y=UTX记旋转后的数据协方差为 S S S,则 S = U T Σ U S = U^T\Sigma U S=UTΣU因此我们希望S是一个对角阵,这样的话不同的维度就是不相关的,其次我们根据对角阵对角元素的大小,也可筛选出一些较小的方差值,将其去掉投影方向去掉。
上述问题即归结为矩阵 Σ \Sigma Σ的分解问题,即 Σ = U S U T \Sigma = USU^T Σ=USUT由于 Σ \Sigma Σ是一个对称矩阵,根据线性代数的理论,这样的分解必是存在的,此时 U U U使其规范正交化后的特征向量构成的矩阵,而 S S S是其特征值。

PCA的应用

PCA主要有两大应用,一个是消除数据间的相关性,另一个是减低数据维度。对于一些高维数据,通过降低到两或三的维度,我们可以将数据进行可视化;对于一些有监督的学习问题,我们也可以先利用PCA进行数据预处理,比如我们可以利用PCA在人脸识别中先对图片进行降维,这样可以提高图片识别的计算时间。

FA的基本思想

我们首先介绍FA背后的思想。假设我们拿到的数据有n个维度,但是数据背后起决定因素的实际只有 k ( k < < n ) k(k << n) k(k<<n)个,它们称为因子。我们假设这k个因子服从独立的多元正态分布,即 z ∼ N ( 0 , I ) , z ∈ R k z \sim N(0,I),z \in R^k zN(0,I),zRk然后我们的观测数据是这k个因子的线性组合,再加上一些无法观测的扰动项,因此我们需要线性组合矩阵,记之为 Λ \Lambda Λ,然后观测数据的平均水平记之为 u u u,扰动项记之为 ϵ \epsilon ϵ,因此整个因子模型可以用方程表示为 E ( ϵ ) = 0 , V a r ( ϵ ) = Ψ E(\epsilon) = 0 , Var(\epsilon) = \Psi E(ϵ)=0,Var(ϵ)=Ψ x = u + Λ z + ϵ x = u + \Lambda z + \epsilon x=u+Λz+ϵ显然有 x ∣ z ∼ N ( u + Λ z , Ψ ) x|z \sim N(u+\Lambda z, \Psi) xzN(u+Λz,Ψ) x ∼ N ( u , Λ Λ T + Ψ ) x \sim N(u,\Lambda \Lambda^T+\Psi) xN(u,ΛΛT+Ψ)
因子分析模型的参数便是 u 、 Λ 、 Ψ u、\Lambda、\Psi uΛΨ

FA的实际需要

在实际应用中,有时我们确实需要FA,因为我们的观测数据量可能很少,而数据维度可能很大,因此通过因子分析模型,我们可以大大降低需要估计的参数个数。否则,我们可能需要牺牲其他一些有趣的东西做一些假设,最典型的就是,我们假设各个维度独立,如前面的朴素贝叶斯假设。又比如我们可以假设各个维度是同方差的。总而言之,这种假设是需要根据具体情况加以分析的,很多时候,数据间的相关性是不能简单地通过一个假设就无视掉的,这时候FA就可以很好的解决问题。

FA参数的估计

我们在这里并打算详细介绍FA参数估计的具体方法,只是对陈述其中的两个方法。

  • EM算法(参见吴恩达CS229的讲义部分)
  • PCA + 正交旋转 (参见多元统计分析的教材)

你可能感兴趣的:(机器学习笔记,PCA的数学原理,谱分解,数据降维,统计学)