核主成分分析(Kernel PCA)的数学推导与特征空间降维过程
字数 6081 2025-12-07 00:11:14

核主成分分析(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)\)

算法步骤总结

  1. 选择核函数 \(k\) 和超参数(如RBF核的γ)。
  2. 计算核矩阵 \(\mathbf{K}\)(n×n),其中 \(K_{ij} = k(\mathbf{x}_i, \mathbf{x}_j)\)
  3. 中心化核矩阵:\(\tilde{\mathbf{K}} = \mathbf{H} \mathbf{K} \mathbf{H}\)\(\mathbf{H} = \mathbf{I}_n - \frac{1}{n} \mathbf{1}_n\)
  4. 求解特征值问题:\(\tilde{\mathbf{K}} \boldsymbol{\alpha} = \eta \boldsymbol{\alpha}\),得到特征值 \(\eta_i\) 和特征向量 \(\boldsymbol{\alpha}^{(i)}\)
  5. 对特征向量归一化:\(\boldsymbol{\alpha}^{(i)} \leftarrow \boldsymbol{\alpha}^{(i)} / \sqrt{\eta_i}\)
  6. 选择前k个特征向量对应最大的k个特征值。
  7. 对新样本 \(\mathbf{x}\) 计算中心化核向量 \(\tilde{\mathbf{k}}_*\),然后投影到第p个主成分:\(t_p = \boldsymbol{\alpha}^{(p)T} \tilde{\mathbf{k}}_*\)

关键点

  • KPCA通过核函数隐式在高维特征空间中计算,无需知道φ的具体形式。
  • 中心化步骤是必要的,确保特征空间数据均值为零。
  • 计算复杂度主要在求解n×n矩阵的特征值问题,适合样本数n不太大的情况。
  • 降维后的数据可用于可视化、去噪或作为其他机器学习算法的输入特征。
核主成分分析(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不太大的情况。 降维后的数据可用于可视化、去噪或作为其他机器学习算法的输入特征。