📖 本章概要
核主成分分析(Kernel PCA, KPCA)是主成分分析的扩展,用于处理非线性数据。 通过核技巧将数据隐式映射到高维空间,再进行PCA,从而捕捉复杂的非线性结构。
PCA的局限性与KPCA引入
两个格拉姆矩阵与SVD联系
核矩阵、中心化、特征值分解
18.1 核PCA
⚠️ 主成分分析不是万能的!
PCA有个致命前提:PCA假设数据服从多元高斯分布。 对于非线性数据(如环形、球形、螺旋形),PCA在降维提取最大方差上几乎起不到任何作用。
核主成分分析(Kernel PCA)通过核技巧解决这个问题: 使用核函数将原始特征空间映射到更高维度的空间,使得数据在新空间中可以更好地被线性分离。
核主成分分析引入
Kernel PCA vs Traditional PCA
⚠️ PCA的局限性:PCA假设数据服从多元高斯分布。对于非线性数据(如环形、球形),PCA在降维和提取最大方差上几乎无效。 KPCA通过核技巧将数据映射到高维空间,再进行PCA,从而处理非线性结构。
图1:非线性环形数据
PCA投影(无效)
❌ PCA失败:线性投影无法分离两个同心圆,所有点混在一起,方差解释能力极差。
- • 假设:数据服从线性结构
- • 方法:在原始空间找最大方差方向
- • 局限:无法处理非线性关系
- • 结果:环形数据投影后完全混叠
- • 核技巧:φ(x) 映射到高维空间
- • 方法:在核空间进行PCA
- • 灵活:多项式核、高斯核、Sigmoid核
- • 结果:非线性数据在核空间线性可分
💡 核心思想:KPCA不直接在原始空间计算,而是通过核函数K(xᵢ, xⱼ)隐式地在高维空间完成内积运算。 这样既避免了显式映射φ(x)的高计算成本,又能处理复杂的非线性结构。
核PCA的步骤
- 选择核函数:根据数据的性质选择适当的核函数(多项式核、高斯核、Sigmoid核)
- 构建核矩阵:计算每对样本之间的核函数值,形成核矩阵K(xⁱ, xʲ)
- 中心化核矩阵:对核矩阵进行中心化处理,确保数据的行列均值同时为零
- 计算特征值和特征向量:对中心化后的核矩阵进行特征值分解
- 选择主成分:选择前p个最大特征值对应的特征向量,构成新的特征矩阵
18.2 从PCA说起
🔄 回顾:两个格拉姆矩阵
对于数据矩阵X (n×D),存在两个格拉姆矩阵:
• 公式(1): XᵀX = VΛVᵀ
• V: 主成分载荷(D×D)
• Λ: 特征值对角矩阵
• 因子得分: Z = XV
• 公式(5): XXᵀ = UΛUᵀ
• U: 左奇异向量(n×n)
• Λ: 相同的非零特征值
• XXᵀ是线性核矩阵!
从PCA说起
两个格拉姆矩阵与奇异值分解
📐 关键回顾:矩阵X有两个格拉姆矩阵:XᵀX (D×D) 和 XXᵀ (n×n)。 两者特征值分解的结果通过SVD联系起来。KPCA的核心思路来自于第二个格拉姆矩阵XXᵀ!
图2:第一个格拉姆矩阵 XᵀX 特征值分解
XᵀX = VΛVᵀ• Λ: 对角矩阵,对角元素λⱼ为特征值
• 因子得分:
Z = XV🔑 关键洞察:XXᵀ的每个元素是样本间的内积x⁽ⁱ⁾·x⁽ʲ⁾,本质上是一个线性核矩阵。 KPCA的核心思路是:将XXᵀ替换为核函数矩阵K(xⁱ, xʲ), 从而在高维空间隐式计算内积,处理非线性结构!
18.3 核主成分分析
🧮 高斯核为例
本节以高斯核(RBF核)为例介绍KPCA的完整计算流程: 从原始数据X → 欧氏距离 → 距离平方 → 高斯核矩阵K → 核中心化Kc → 特征值分解 → 因子得分。
欧氏距离→距离平方→高斯核(图5-7)
💡 动画说明:以下动画逐步展示从散点图计算欧氏距离,到平方得距离²矩阵,最后应用高斯核函数的完整过程。 每一步都是逐元素计算,揭示矩阵构建的因果关系。
距离→核矩阵计算过程
图5-7:逐步动画演示
图5:散点图与欧氏距离
矩阵热图(4×4)
🎯 过程揭示:(1) 从散点图计算所有点对的欧氏距离; (2) 平方得到距离²矩阵(避免开方运算); (3) 应用高斯核κ(xⁱ,xʲ)=exp(-γ·||xⁱ-xʲ||²),将距离转换为相似度。 γ越大,核函数衰减越快,只有非常近的点才相似。
核矩阵中心化(图8)
💡 动画说明:核矩阵中心化分为两步:①列中心化MK,②行中心化(MK)Mᵀ。 动画展示矩阵相乘的逐步过程,而不是直接展示结果。
核矩阵中心化过程
图8:MKMᵀ逐步动画
矩阵运算可视化
原始核矩阵 K
🔄 中心化的必要性:PCA要求数据中心化(均值为0)。在核空间中,我们无法直接访问φ(x), 只能通过核矩阵K间接操作。使用中心化矩阵M = I - (1/n)·11ᵀ, 通过Kc = MKMᵀ实现行列同时去均值,等价于在核空间中对数据中心化。
特征值分解(图9)
💡 动画说明:特征值分解的关键步骤:计算→排序→选择。 动画重点展示为什么要降序排列特征值,以及如何选择前p个主成分的决策过程。
特征值分解过程
图9:Kc → WDWᵀ 逐步动画
特征值分解流程
特征值贡献度
🔬 关键洞察:(1) 使用numpy.linalg.eigh()对对称矩阵Kc进行特征值分解; (2) 特征值降序排列,越大的特征值对应越重要的主成分; (3) 特征向量W直接作为KPCA的因子得分,无需像普通PCA那样计算XV; (4) 选择前p个主成分,通常累计方差解释率达到80-90%即可。
非线性网格变形(图10)
💡 动画说明:核映射的升维效果可视化:规则网格在核空间中发生非线性扭曲。 动画展示从原始空间到核空间的连续变形过程,而不是前后对比静态图。
非线性网格变形
图10:核映射的升维效果
原始特征空间(2D)
核空间(高维映射)
🌀 升维的本质:高斯核κ(x,x')=exp(-γ·||x-x'||²)隐式地将数据映射到无穷维空间。 网格变形展示了这种非线性映射:中心区域被"拉伸"(高相似度区域被放大), 外围区域被"压缩"(低相似度区域被缩小)。 这种变形使得原本线性不可分的环形、月牙形数据在核空间中变得可分。 γ越大,变形越剧烈,但可能导致过拟合。
核技巧的威力
核技巧的主要优势在于它避免了直接在高维空间中进行计算, 而是通过核函数在低维空间中的计算得到高维空间中的内积。
- 节省计算成本:无需显式计算映射φ(x),只需计算核函数K(xⁱ, xʲ)
- 避免维度灾难:高斯核对应无限维映射,但核矩阵仍是n×n
- 灵活性:不同核函数对应不同的特征空间和非线性变换
交互式KPCA探索
🎨 参数影响探索(图11-13)
通过交互式组件,直观感受高斯核参数γ对KPCA结果的影响。 观察原始空间的网格如何在核空间中发生非线性变形, 以及不同数据模式(环形、月牙)在KPCA下的分离效果。
图11:sklearn.decomposition.KernelPCA()生成的环形数据KPCA结果
图12-13:Gamma参数对核主成分分析结果影响(环形与球形数据)
交互式KPCA探索
图10-13:非线性映射与参数影响
• γ越小:核函数越宽,较远的点也有相似度
• 影响特征空间的"弯曲程度"
• 越多:保留更多信息,但可能过拟合
• 越少:降维效果好,但可能损失信息
原始特征空间
核空间投影 (PC1 vs PC2)
图10:非线性映射网格变化
通过核函数达到的"升维"效果:虽然原始特征只有2个,但经过非线性变换, 数据被映射到高维空间,网格发生扭曲变形,使得原本线性不可分的数据在新空间中线性可分。
🎯 交互探索建议:(1) 调节γ观察网格变形和分离效果的变化; (2) 切换数据模式对比KPCA在不同非线性结构上的表现; (3) 调整主成分数量,理解降维与信息保留的权衡。 环形数据在核空间中被"拉直",月牙数据被"展开",这就是核技巧的威力!
升维过程的理解
图10展示的就是非线性投影产生的网格变化。 虽然原始特征只有两个,但是经过非线性变换我们可以得到各种奇形怪状的非线性投影网格。 这个过程就是通过核函数达到的"升维"的效果。
环形数据在核空间中被"拉直",使得内外圈在第一主成分上清晰分离。 这正是KPCA处理非线性数据的核心能力!
实践与应用
📦 Scikit-learn实现
参数说明:
• n_components: 保留的主成分数量
• kernel: 核函数类型('rbf', 'poly', 'sigmoid'等)
• gamma: RBF核的参数,控制核函数宽度
🎯 应用场景
处理环形、球形、螺旋等非线性可分数据
从复杂数据中提取非线性特征
作为分类/聚类前的数据预处理
将高维非线性数据投影到2D/3D空间
⚙️ 参数选择建议
• 高斯核(RBF): 通用,适合大多数情况
• 多项式核: 适合多项式可分数据
• Sigmoid核: 类似神经网络激活函数
• 网格搜索:尝试[0.001, 0.01, 0.1, 1, 10]
• 交叉验证:根据下游任务性能选择
• 数据规模:大数据集用较小γ
• 累计方差解释率≥85%
• 或通过交叉验证确定
• 平衡降维效果与信息保留
📚 本章总结
核心概念
- ✓ PCA假设线性结构,无法处理非线性数据
- ✓ KPCA通过核技巧隐式映射到高维空间
- ✓ 核矩阵替代格拉姆矩阵XXᵀ
- ✓ 核中心化确保数据去均值
- ✓ 特征向量直接作为因子得分
关键公式
延伸阅读:有关核主成分分析背后的数学原理,请参考:arxiv.org/pdf/1207.3538.pdf