第 9 课
← 返回系列列表

Lecture 17-18:因子分析与 ICA

Stanford CS229 — 斯坦福机器学习

因子分析、独立成分分析。

Lecture 17-18:因子分析与 ICA

课程简介

因子分析、独立成分分析。

🎬 本课程视频:Stanford CS229 — 斯坦福机器学习


一、因子分析

1.1 问题设定

因子分析(Factor Analysis)是一种概率降维方法。当样本数少于特征数($m < n$)时,GDA 的协方差矩阵 $\Sigma$ 是奇异的,无法求逆。因子分析解决了这个问题。

在因子分析中,我们假设数据 $x \in \mathbb{R}^n$ 由少数 $k < n$ 个隐因子 $z \in \mathbb{R}^k$ 生成:

$$z \sim \mathcal{N}(0, I)$$
$$x | z \sim \mathcal{N}(\mu + \Lambda z, \Psi)$$

其中:
- $\Lambda \in \mathbb{R}^{n \times k}$:因子载荷矩阵(Factor Loading Matrix)
- $\Psi \in \mathbb{R}^{n \times n}$:对角协方差矩阵(每个特征的独立噪声)
- $\mu \in \mathbb{R}^n$:均值向量

1.2 模型解释

因子分析假设观测到的特征之间的相关性来自共同的隐因子。具体来说:

$x$ 的边缘分布:

$$x \sim \mathcal{N}(\mu, \Lambda \Lambda^T + \Psi)$$

注意:$n \times n$ 的协方差矩阵 $\Sigma = \Lambda \Lambda^T + \Psi$ 只有 $nk + n$ 个自由参数(去掉缩放歧义后约为 $nk - k(k-1)/2$),远少于完整协方差矩阵的 $n(n+1)/2$ 个参数。

1.3 EM 算法求解

E 步:计算 $z^{(i)}$ 的后验分布

$$E[z^{(i)}|x^{(i)}] = \beta^T (x^{(i)} - \mu)$$
$$E[z^{(i)} (z^{(i)})^T | x^{(i)}] = I - \beta^T \Lambda + \beta^T (x^{(i)} - \mu)(x^{(i)} - \mu)^T \beta$$

其中 $\beta^T = \Lambda^T (\Lambda \Lambda^T + \Psi)^{-1}$。

M 步:更新参数

$$\Lambda = \left[ \sum_{i=1}^{m} (x^{(i)} - \mu) E[z^{(i)}|x^{(i)}]^T \right] \left[ \sum_{i=1}^{m} E[z^{(i)} (z^{(i)})^T | x^{(i)}] \right]^{-1}$$

$$\Psi = \frac{1}{m} \text{diag} \left( \sum_{i=1}^{m} (x^{(i)} - \mu)(x^{(i)} - \mu)^T - \Lambda E[z^{(i)}|x^{(i)}] (x^{(i)} - \mu)^T \right)$$

1.4 因子分析与 PCA 的比较

方面 因子分析 PCA
模型 概率模型,有隐变量 确定性投影
目标 解释特征间的相关性 最大化方差
噪声 显式建模噪声 $\Psi$ 无显式噪声模型
旋转 因子可以旋转(非唯一) 主成分唯一确定
适用性 适合 $m < n$ 时估计协方差 适合降维和可视化

因子分析对载荷矩阵有旋转模糊性——如果 $R$ 是正交矩阵,$\Lambda R$ 和 $\Lambda$ 产生相同的似然。ICA 通过施加独立性约束解决了这个问题。

二、独立成分分析(ICA)

2.1 鸡尾酒会问题

独立成分分析(Independent Component Analysis, ICA)解决的是盲源分离(Blind Source Separation)问题。

经典的鸡尾酒会问题:在一个嘈杂的房间里,有 $n$ 个人同时说话,$n$ 个麦克风在不同位置录制了混合声音。ICA 的目标是从混合录音中分离出每个人的原始语音。

2.2 模型形式

假设有 $n$ 个独立的信号源 $s_j$,我们观测到 $n$ 个混合信号 $x_i$:

$$x = A s$$

其中 $A$ 是 $n \times n$ 的混合矩阵(未知)。ICA 的目标是从 $x$ 恢复 $s$,即找到分离矩阵 $W = A^{-1}$,使得 $s = W x$。

2.3 ICA 的不确定性

ICA 有两个固有的不确定性:
1. 排列不确定:无法确定分离后的信号顺序
2. 缩放不确定:无法确定信号的能量(乘以常数后可以被 $A$ 吸收)

2.4 ICA 的假设

ICA 的核心假设:
1. 源信号独立:$p(s_1, s_2, ..., s_n) = \prod_{j=1}^{n} p(s_j)$
2. 非高斯分布:最多只有一个源服从高斯分布
3. 方阵混合:源信号数量等于观测信号数量

为什么需要非高斯假设?如果 $s$ 都是高斯分布,那么 $x = As$ 也是高斯分布,且 $E[x] = 0$,$E[xx^T] = AA^T$。对于任何正交矩阵 $R$,$(AR)(AR)^T = AA^T$——这意味着有无穷多种分解方式,ICA 无法区分。

2.5 极大似然 ICA

使用逻辑分布(Logistic Distribution)作为源信号的先验:

$$p(s) = \frac{1}{\pi} \frac{1}{e^s + e^{-s}}$$

观测数据的似然:

$$\ell(W) = \sum_{i=1}^{m} \left( \log |W| + \sum_{j=1}^{n} \log g'(w_j^T x^{(i)}) \right)$$

其中 $g$ 是 Sigmoid 函数,$g'(s) = e^s/(1+e^s)^2$。

梯度更新:

$$W := W + \alpha \left( (W^T)^{-1} + \frac{1}{m} \sum_{i=1}^{m} (1 - 2g(W x^{(i)})) (x^{(i)})^T \right)$$

2.6 ICA 的应用

def ica(X, alpha=0.01, max_iter=1000):
    # X: m x n 观测矩阵,每行是一个观测样本
    # 返回: W (分离矩阵), S (估计的源信号)
    m, n = X.shape
    # 预处理:中心化 + 白化
    X = X - np.mean(X, axis=0)
    U, S, Vt = np.linalg.svd(X, full_matrices=False)
    X_white = X @ Vt.T * np.sqrt(m) / (S + 1e-10)

    W = np.eye(n)
    for _ in range(max_iter):
        S_est = X_white @ W.T
        # 逻辑分布下的梯度
        grad = (W @ np.linalg.inv(W.T @ W)) + (X_white.T @ (1 - 2 * sigmoid(S_est))) / m
        W = W + alpha * grad.T
        # 正交化(保持分离矩阵的正交性)
        U, _, Vt = np.linalg.svd(W)
        W = U @ Vt
    return W, X_white @ W.T

2.7 ICA 与 PCA 的比较

方面 ICA PCA
目标 找到独立成分 找到不相关的主成分
相关性 去除高阶依赖 仅去除二阶相关性
分布 要求非高斯 无分布要求
应用 盲源分离 降维、去噪
输出 独立信号 不相关的投影

PCA 仅去除了二阶相关性(协方差为 0),而 ICA 去除了所有阶的统计依赖,使输出尽可能独立。

三、总结

  1. 因子分析:概率降维模型,用少量隐因子解释特征间相关性
  2. 因子载荷矩阵 $\Lambda$ 编码了隐因子与观测数据的关系
  3. 因子分析 vs PCA:因子分析概率建模噪声,PCA 确定性最大化方差
  4. ICA:盲源分离方法,基于非高斯性和独立性假设
  5. ICA 的应用:语音分离、EEG 分析、金融信号处理

三、因子分析与 PCA 的对比进阶

3.1 从因子分析到 PCA 的演变

因子分析和 PCA 看似相似,但目标不同。PCA 寻找最大化方差的方向,因子分析寻找解释特征间相关性的隐因子。

从数学模型上看,因子分析:$x = \Lambda z + \epsilon$,其中 $\epsilon \sim \mathcal{N}(0, \Psi)$,$\Psi$ 是对角矩阵。

而概率 PCA:$x = Wz + \mu + \epsilon$,其中 $\epsilon \sim \mathcal{N}(0, \sigma^2 I)$,$\Psi = \sigma^2 I$。

因此,概率 PCA 是因子分析的一个特例——当因子分析假设所有特征的噪声方差相同时,就退化为概率 PCA。

3.2 模型选择的准则

如何选择隐变量的数量 k?以下方法可供参考:

似然比检验:比较 k 和 k+1 个因子的模型拟合优度。

信息准则
- AIC(Akaike Information Criterion):-2 log L + 2p
- BIC(Bayesian Information Criterion):-2 log L + p log m

其中 p 是自由参数数量。BIC 对模型复杂度有更强的惩罚。

交叉验证:在训练集上拟合模型,在验证集上评估重构误差。选择重构误差最低的 k。

3.3 ICA 的数学性质

ICA 的辨识性(Identifiability)需要满足以下条件:

  1. 独立性:源信号间统计独立
  2. 非高斯性:最多一个源信号服从高斯分布
  3. 方阵混合:观测数等于源信号数

如果满足这些条件,ICA 的分解在排列和缩放意义下是唯一的。这种唯一性使得 ICA 在盲源分离任务中具有突出的优势。

3.4 ICA 的算法变体

除了极大似然 ICA,还有其他 ICA 算法:

FastICA:基于负熵(Negentropy)最大化的固定点算法。通过寻找使投影数据非高斯性最大化的方向来估计独立成分。收敛速度快,不需要选择学习率。

Infomax ICA:基于信息最大化原则——最大化输出熵等价于最小化输出之间的互信息。

JADE:基于联合对角化四阶累积量的方法,不依赖迭代优化。

这些算法各有优劣,在实践中通常根据具体问题和数据特性选择。FastICA 由于其速度和稳定性,是最广泛使用的 ICA 算法。

延伸阅读

← Lecture 15-16:聚类与降维 Lecture 19-20:强化学习与总结 →