463 字
2 分钟
kPCA-核主成分分析 (Kernel Principal Component Analysis)
2026-06-19
无标签

KPCA(核主成分分析,Kernel PCA) 是PCA的非线性扩展,本质是“先升维,后降维”——通过核函数将数据隐式映射到高维(甚至无穷维)特征空间,再在该空间里做标准的线性PCA,从而在原始空间中捕捉非线性主成分。

经典的PCA方法假设数据 x\mathbf{x} 服从多变量高斯分布,但实际应用中这一假设可能不成立基于核方法,我们可以将数据从原始空间 x\mathbf{x} 转换为特征空间 Φ(x)\Phi(\mathbf{x}),如果 Φ(x)\Phi(\mathbf{x}) 服从高斯分布的话,我们可在特征空间下做PCA,即核PCA.

数学推导#

特征空间中的数据已经中心化

原始空间中的数据 x\mathbf{x} 通过核函数 k(x,y)=Φ(x),Φ(y)k(\mathbf{x}, \mathbf{y}) = \langle \Phi(\mathbf{x}), \Phi(\mathbf{y}) \rangle 映射到特征空间 F\mathcal{F} 中的点 Φ(x)\Phi(\mathbf{x})

在特征空间中,协方差矩阵(散度矩阵)CC

C=i=1nΦ(xi)Φ(xi)TC = \sum_{i=1}^n \Phi(\mathbf{x}_i) \Phi(\mathbf{x}_i)^T

由于特征空间可能是高维甚至无穷维的,直接对 CC 特征值分解是不可行的。KPCA 的核心思想是利用核函数来避免显式地计算 Φ(x)\Phi(\mathbf{x})

需要求解特征值问题:

Cv=λvC \mathbf{v} = \lambda \mathbf{v}

我们可以将特征向量 v\mathbf{v} 表示为训练样本的线性组合:(特征向量可以表示成列向量的线性组合)

v=i=1nαiΦ(xi)\mathbf{v} = \sum_{i=1}^n \alpha_i \Phi(\mathbf{x}_i)

v\mathbf{v} 代入特征值问题中:

(i=1nΦ(xi)Φ(xi)T)j=1nαjΦ(xj)=λj=1nαjΦ(xj)i=1nj=1nαjΦ(xi)Φ(xi)TΦ(xj)=λj=1nαjΦ(xj)( \sum_{i=1}^n \Phi(\mathbf{x}_i) \Phi(\mathbf{x}_i)^T) \sum_{j=1}^n \alpha_j \Phi(\mathbf{x}_j) = \lambda \sum_{j=1}^n \alpha_j \Phi(\mathbf{x}_j)\\[1em] \Rightarrow \sum_{i=1}^n \sum_{j=1}^n \alpha_j \Phi(\mathbf{x}_i)\Phi(\mathbf{x}_i)^T \Phi(\mathbf{x}_j) = \lambda \sum_{j=1}^n \alpha_j \Phi(\mathbf{x}_j)

利用核函数 k(xi,xj)=Φ(xi)TΦ(xj)k(\mathbf{x}_i, \mathbf{x}_j) = \Phi(\mathbf{x}_i)^T \Phi(\mathbf{x}_j),两边同时乘以 Φ(xk)T,k=1,2,,n\Phi(\mathbf{x}_k)^T,k=1,2,\ldots,n 可以将上述方程转化为:

i=1nj=1nαjk(xi,xj)k(xi,xk)=λj=1nαjk(xj,xk) \sum_{i=1}^n \sum_{j=1}^n \alpha_j k(\mathbf{x}_i, \mathbf{x}_j) k(\mathbf{x}_i, \mathbf{x}_k) = \lambda \sum_{j=1}^n \alpha_j k(\mathbf{x}_j, \mathbf{x}_k)

定义核矩阵(Gram 矩阵.) KK,其中 Kij=k(xi,xj)K_{ij} = k(\mathbf{x}_i, \mathbf{x}_j),上述方程可以写成矩阵形式:

K2α=λKαK^2 \boldsymbol{\alpha} = \lambda K \boldsymbol{\alpha}

进一步简化为:

Kα=λαK \boldsymbol{\alpha} = \lambda \boldsymbol{\alpha}
kPCA-核主成分分析 (Kernel Principal Component Analysis)
https://biscuit0613.github.io/posts/ml/kpca/
作者
Biscuit
发布于
2026-06-19
许可协议
CC BY-NC-SA 4.0
LDA-线性判别分析 (Linear Discriminant Analysis)
形式语言与自动机的一些习题