核主成分分析(Kernel PCA)的数学推导与特征空间降维过程
题目描述
核主成分分析(Kernel PCA)是主成分分析(PCA)的非线性扩展。PCA只能对线性可分的样本进行降维,而KPCA通过核技巧(Kernel Trick)将样本映射到高维特征空间,并在该特征空间中进行线性PCA,从而实现对非线性结构的有效降维。本题要求详细讲解KPCA的数学推导、核技巧的运用、特征值问题的求解步骤,以及如何在特征空间中进行降维。
解题过程
1. 问题背景与核心思想
标准PCA通过寻找数据协方差矩阵的最大特征值对应的特征向量(主成分)来降维,但这是线性变换。如果数据存在非线性结构(如螺旋分布、同心圆分布等),线性PCA效果不佳。
KPCA的核心思想:
- 通过一个非线性映射函数 φ,将原始d维数据 \(\mathbf{x}_i \in \mathbb{R}^d\) 映射到高维特征空间 \(\mathcal{F}\) 中,得到 \(\varphi(\mathbf{x}_i)\)。
- 在特征空间 \(\mathcal{F}\) 中对映射后的数据执行标准PCA。
- 由于 \(\mathcal{F}\) 的维数可能很高(甚至无穷维),直接计算 φ 的显式映射和协方差矩阵不可行,因此通过核函数 \(k(\mathbf{x}_i, \mathbf{x}_j) = \langle \varphi(\mathbf{x}_i), \varphi(\mathbf{x}_j) \rangle\) 隐式计算内积,避免显式使用 φ。
2. 特征空间中的PCA
假设我们有n个样本 \(\mathbf{X} = [\mathbf{x}_1, \dots, \mathbf{x}_n]^T\),映射后为 \(\varphi(\mathbf{X}) = [\varphi(\mathbf{x}_1), \dots, \varphi(\mathbf{x}_n)]^T\)。为简化,假设映射后的数据已中心化(即 \(\sum_{i=1}^n \varphi(\mathbf{x}_i) = 0\)),后续会说明如何在不中心化时处理。
特征空间中的协方差矩阵为:
\[\mathbf{C} = \frac{1}{n} \sum_{i=1}^n \varphi(\mathbf{x}_i) \varphi(\mathbf{x}_i)^T \]
PCA需要求解特征值问题:
\[\mathbf{C} \mathbf{v} = \lambda \mathbf{v} \]
其中特征向量 \(\mathbf{v}\) 位于特征空间 \(\mathcal{F}\) 中。由于 \(\mathbf{C}\) 的维数可能很高,直接求解困难。但根据表示定理,\(\mathbf{v}\) 可表示为样本的线性组合:
\[\mathbf{v} = \sum_{i=1}^n \alpha_i \varphi(\mathbf{x}_i) \]
其中 \(\boldsymbol{\alpha} = (\alpha_1, \dots, \alpha_n)^T\) 是待求系数向量。
3. 推导核特征值问题
将 \(\mathbf{v} = \sum_{i=1}^n \alpha_i \varphi(\mathbf{x}_i)\) 代入特征方程 \(\mathbf{C} \mathbf{v} = \lambda \mathbf{v}\):
\[\frac{1}{n} \sum_{i=1}^n \varphi(\mathbf{x}_i) \varphi(\mathbf{x}_i)^T \left( \sum_{j=1}^n \alpha_j \varphi(\mathbf{x}_j) \right) = \lambda \sum_{j=1}^n \alpha_j \varphi(\mathbf{x}_j) \]
两边左乘 \(\varphi(\mathbf{x}_k)^T\)(k=1,...,n):
\[\frac{1}{n} \sum_{i=1}^n \varphi(\mathbf{x}_k)^T \varphi(\mathbf{x}_i) \left[ \varphi(\mathbf{x}_i)^T \sum_{j=1}^n \alpha_j \varphi(\mathbf{x}_j) \right] = \lambda \sum_{j=1}^n \alpha_j \varphi(\mathbf{x}_k)^T \varphi(\mathbf{x}_j) \]
利用核函数 \(k_{ij} = k(\mathbf{x}_i, \mathbf{x}_j) = \varphi(\mathbf{x}_i)^T \varphi(\mathbf{x}_j)\),得到:
\[\frac{1}{n} \sum_{i=1}^n k_{ki} \left( \sum_{j=1}^n \alpha_j k_{ij} \right) = \lambda \sum_{j=1}^n \alpha_j k_{kj} \]
对所有k=1,...,n,可写成矩阵形式。定义核矩阵 \(\mathbf{K} \in \mathbb{R}^{n \times n}\),其中 \(\mathbf{K}_{ij} = k_{ij}\)。则上式等价于:
\[\frac{1}{n} \mathbf{K} \mathbf{K} \boldsymbol{\alpha} = \lambda \mathbf{K} \boldsymbol{\alpha} \]
假设 \(\mathbf{K}\) 可逆,两边左乘 \(\mathbf{K}^{-1}\),得到标准特征值问题:
\[\frac{1}{n} \mathbf{K} \boldsymbol{\alpha} = \lambda \boldsymbol{\alpha} \]
更常见的形式是两边乘以n:
\[\mathbf{K} \boldsymbol{\alpha} = n \lambda \boldsymbol{\alpha} \]
令 \(\eta = n \lambda\),则最终核特征值问题为:
\[\mathbf{K} \boldsymbol{\alpha} = \eta \boldsymbol{\alpha} \]
其中 \(\eta\) 是特征值,\(\boldsymbol{\alpha}\) 是特征向量。
4. 中心化核矩阵
上述推导假设 \(\varphi(\mathbf{x}_i)\) 已中心化。实际中,我们需要对核矩阵 \(\mathbf{K}\) 进行中心化处理,使其对应中心化后的特征空间数据。中心化后的核矩阵 \(\tilde{\mathbf{K}}\) 为:
\[\tilde{\mathbf{K}} = \mathbf{K} - \mathbf{1}_n \mathbf{K} - \mathbf{K} \mathbf{1}_n + \mathbf{1}_n \mathbf{K} \mathbf{1}_n \]
其中 \(\mathbf{1}_n\) 是n×n矩阵,每个元素为1/n。写成元素形式:
\[\tilde{k}_{ij} = k_{ij} - \frac{1}{n} \sum_{m=1}^n k_{mj} - \frac{1}{n} \sum_{m=1}^n k_{im} + \frac{1}{n^2} \sum_{m,l=1}^n k_{ml} \]
在代码实现中,可用矩阵运算:\(\tilde{\mathbf{K}} = \mathbf{H} \mathbf{K} \mathbf{H}\),其中 \(\mathbf{H} = \mathbf{I}_n - \frac{1}{n} \mathbf{1}_n\),\(\mathbf{I}_n\) 是n×n单位矩阵。
因此,实际求解的特征值问题是:
\[\tilde{\mathbf{K}} \boldsymbol{\alpha} = \eta \boldsymbol{\alpha} \]
5. 特征向量的归一化
在特征空间 \(\mathcal{F}\) 中,特征向量 \(\mathbf{v}\) 应满足单位长度约束 \(\| \mathbf{v} \|^2 = 1\):
\[\mathbf{v}^T \mathbf{v} = \sum_{i,j} \alpha_i \alpha_j \varphi(\mathbf{x}_i)^T \varphi(\mathbf{x}_j) = \boldsymbol{\alpha}^T \mathbf{K} \boldsymbol{\alpha} = 1 \]
由于特征值问题中 \(\mathbf{K} \boldsymbol{\alpha} = \eta \boldsymbol{\alpha}\),代入得:
\[\boldsymbol{\alpha}^T (\eta \boldsymbol{\alpha}) = \eta \| \boldsymbol{\alpha} \|^2 = 1 \]
因此,需要对 \(\boldsymbol{\alpha}\) 进行归一化:
\[\boldsymbol{\alpha} \leftarrow \frac{\boldsymbol{\alpha}}{\sqrt{\eta}} \]
如果使用中心化核矩阵 \(\tilde{\mathbf{K}}\),则用 \(\tilde{\mathbf{K}}\) 替换 \(\mathbf{K}\) 进行归一化。
6. 投影与降维
求解特征值问题后,我们得到特征值 \(\eta_1 \ge \eta_2 \ge \dots \ge \eta_n\) 和对应的特征向量 \(\boldsymbol{\alpha}^{(1)}, \dots, \boldsymbol{\alpha}^{(n)}\)。为降至k维,取前k个特征向量。
对于一个新样本 \(\mathbf{x}\),其在第p个核主成分上的投影为:
\[t_p = \mathbf{v}^{(p)T} \varphi(\mathbf{x}) = \sum_{i=1}^n \alpha_i^{(p)} \varphi(\mathbf{x}_i)^T \varphi(\mathbf{x}) = \sum_{i=1}^n \alpha_i^{(p)} k(\mathbf{x}_i, \mathbf{x}) \]
注意:若使用了中心化,则需用中心化的核函数计算。在预测时,新样本的核向量 \(\mathbf{k}_* = [k(\mathbf{x}_1, \mathbf{x}), \dots, k(\mathbf{x}_n, \mathbf{x})]^T\) 也需要中心化:
\[\tilde{\mathbf{k}}_* = \mathbf{k}_* - \frac{1}{n} \mathbf{1}_n \mathbf{k}_* - \frac{1}{n} \mathbf{K} \mathbf{1}_{n1} + \frac{1}{n^2} \mathbf{1}_n \mathbf{K} \mathbf{1}_{n1} \]
其中 \(\mathbf{1}_{n1}\) 是n×1的全1向量。然后投影为 \(t_p = \sum_{i=1}^n \alpha_i^{(p)} \tilde{k}_{*i}\)。
7. 常用核函数
- 线性核:\(k(\mathbf{x}, \mathbf{y}) = \mathbf{x}^T \mathbf{y}\)(退化为标准PCA)。
- 多项式核:\(k(\mathbf{x}, \mathbf{y}) = (\mathbf{x}^T \mathbf{y} + c)^d\)。
- 高斯径向基(RBF)核:\(k(\mathbf{x}, \mathbf{y}) = \exp(-\gamma \|\mathbf{x} - \mathbf{y}\|^2)\),最常用,γ控制带宽。
- Sigmoid核:\(k(\mathbf{x}, \mathbf{y}) = \tanh(\kappa \mathbf{x}^T \mathbf{y} + \theta)\)。
算法步骤总结
- 选择核函数 \(k\) 和超参数(如RBF核的γ)。
- 计算核矩阵 \(\mathbf{K}\)(n×n),其中 \(K_{ij} = k(\mathbf{x}_i, \mathbf{x}_j)\)。
- 中心化核矩阵:\(\tilde{\mathbf{K}} = \mathbf{H} \mathbf{K} \mathbf{H}\),\(\mathbf{H} = \mathbf{I}_n - \frac{1}{n} \mathbf{1}_n\)。
- 求解特征值问题:\(\tilde{\mathbf{K}} \boldsymbol{\alpha} = \eta \boldsymbol{\alpha}\),得到特征值 \(\eta_i\) 和特征向量 \(\boldsymbol{\alpha}^{(i)}\)。
- 对特征向量归一化:\(\boldsymbol{\alpha}^{(i)} \leftarrow \boldsymbol{\alpha}^{(i)} / \sqrt{\eta_i}\)。
- 选择前k个特征向量对应最大的k个特征值。
- 对新样本 \(\mathbf{x}\) 计算中心化核向量 \(\tilde{\mathbf{k}}_*\),然后投影到第p个主成分:\(t_p = \boldsymbol{\alpha}^{(p)T} \tilde{\mathbf{k}}_*\)。
关键点
- KPCA通过核函数隐式在高维特征空间中计算,无需知道φ的具体形式。
- 中心化步骤是必要的,确保特征空间数据均值为零。
- 计算复杂度主要在求解n×n矩阵的特征值问题,适合样本数n不太大的情况。
- 降维后的数据可用于可视化、去噪或作为其他机器学习算法的输入特征。