4. 因子分析基础

在机器学习因子压缩与特征表示中,我们面对的高维数据往往存在大量冗余与噪声。主成分分析(PCA)、因子分析(FA)和独立成分分析(ICA)是三种最常用的线性降维与特征提取方法。它们都试图用少数潜在变量解释原始观测,但背后的假设、优化目标和适用场景差异显著。理解这些差异,是后续实战中选择正确工具的前提。

一、核心原理:三种方法在“找什么”

PCA 的目标是方差最大化。它寻找一组正交方向,使数据投影到这些方向后方差尽可能大。第一主成分方向是数据协方差矩阵最大特征值对应的特征向量,后续主成分依次正交且方差递减。PCA 不区分“信号”与“噪声”,只关心整体波动。

FA 假设观测数据由潜在公共因子和特殊噪声共同生成:X = ΛF + ε。其中 F 是低维公共因子,Λ 是因子载荷矩阵,ε 是各变量独有的误差项。FA 的目标是解释变量之间的协方差结构,而非总方差。它允许噪声项具有不同方差,因此更贴近“变量间相关性由少数潜在因子驱动”的假设。

ICA 追求统计独立性。它假设观测是若干独立非高斯源信号的线性混合,目标是恢复出相互独立的成分。ICA 不要求成分正交,也不按方差排序,而是通过最大化非高斯性(如负熵、峭度)来分离源信号。

三种因子分析方法的优化目标与假设对比 PCA 主成分分析 目标:方差最大化 • 成分正交 • 按方差排序 • 不区分信号与噪声 • 假设无特殊误差结构 适合:压缩、去冗余 可视化、预处理 FA 因子分析 目标:解释协方差结构 • 公共因子 + 特殊噪声 • 因子可旋转 • 允许噪声方差不同 • 关注变量间相关性 适合:潜变量建模 问卷、金融因子 ICA 独立成分分析 目标:统计独立性最大化 • 成分非高斯 • 不要求正交 • 恢复源信号 • 按非高斯性排序 适合:盲源分离 信号去噪、EEG/fMRI

二、方法流程与关键参数

三种方法在实操流程上有相似骨架,但关键步骤和参数不同。以下以 Python 生态为例说明。

from sklearn.decomposition import PCA, FactorAnalysis, FastICA
from sklearn.preprocessing import StandardScaler

X_scaled = StandardScaler().fit_transform(X)

# PCA:指定主成分数或方差解释率
pca = PCA(n_components=0.95, whiten=True)
X_pca = pca.fit_transform(X_scaled)

# FA:指定因子数,rotation 可选 varimax/promax
fa = FactorAnalysis(n_components=5, rotation='varimax', random_state=42)
X_fa = fa.fit_transform(X_scaled)

# ICA:指定成分数,algorithm 可选 parallel/deflation
ica = FastICA(n_components=5, algorithm='parallel', whiten='unit-variance', random_state=42)
X_ica = ica.fit_transform(X_scaled)

PCA 的核心参数是 n_components 与 whiten;FA 需要关注 rotation 以提升因子可解释性;ICA 则需注意 whiten 预处理和 algorithm 选择,且对随机种子敏感。

三、区别与适用场景对照

维度 PCA FA ICA
优化目标 方差最大化 协方差结构拟合 统计独立性最大化
成分关系 正交 可旋转、非唯一 非正交、独立
噪声假设 不显式建模 允许特殊噪声 假设无噪声或低噪声
排序依据 方差大小 因子解释力 非高斯性
典型场景 压缩、可视化、去冗余 潜变量建模、问卷分析 盲源分离、信号去噪

四、案例与误区复盘

案例:股票收益因子提取。若目标是降低组合维度并保留最大波动信息,PCA 是自然选择;若想识别“市场因子”“行业因子”等潜在驱动,FA 更合适,因为它的载荷矩阵可旋转出经济含义;若处理的是高频交易中的混合信号,且源信号近似独立,ICA 可能分离出更干净的微观结构成分。

常见误区一:把 PCA 当作因子分析。PCA 的成分是观测变量的线性组合,而 FA 的因子是潜在变量。PCA 不假设噪声结构,直接用于解释“为什么变量相关”时容易过度拟合。

常见误区二:ICA 前不做白化。ICA 通常需要先白化以去除二阶相关,否则独立成分的恢复会不稳定。但白化不等于 PCA 降维,二者目的不同。

常见误区三:忽略标准化。三种方法对量纲都敏感,未标准化时方差大的变量会主导结果。务必先做 StandardScaler 或等效处理。

选择建议:先问“我要保留方差,还是解释相关性,还是恢复独立源?”——保留方差选 PCA;解释相关性选 FA;恢复独立源选 ICA。若不确定,可从 PCA 开始做基线,再根据业务假设切换到 FA 或 ICA。