返回
查看原链接原链接
Bilibili22分19秒 · —

PCA 主成分分析:原理、数学推导与实践应用

PCA 主成分分析:原理、数学推导与实践应用

PCA 是一种无监督的线性降维算法,其核心思想是将高维数据投影到低维空间,同时尽可能保留原始数据中方差最大的方向(即信息量最大的方向),从而有效应对“维度灾难”,实现减少特征数量、消除多重共线性的目的。

一、背景:为什么需要降维

1.1 维度灾难

在日常实践中,我们常遇到包含成百上千个特征的数据集。当特征维度不断增长时,一系列问题随之而来,统称为维度灾难,主要包括以下几个方面:

(1)计算成本急剧增长

参数量变大时,会导致严重的算力和时间开销。

(2)数据稀疏性与过拟合风险

  • 在高维空间中(维度可理解为特征的个数),数据会变得非常稀疏。
  • 要训练出可靠结果,所需的数据量往往呈指数级增加。
  • 模型容易记住噪声而产生过拟合现象。

(3)距离度量失效

  • 在高维空间中,任意两点之间的距离趋向于相等。
  • 依赖基于距离的算法(如 KNN、K-Means)基本上会失效。

(4)多重共线性问题

  • 特征之间往往存在强相关性。例如波士顿房价数据集中,面积和房间个数明显正相关。
  • 这会影响模型评估,形成多重共线性问题

1.2 维度灾难的应对思路

为了应对特征过多的问题,需要对数据进行预处理,其中一种方式是减少特征数量,即降维。一般有两种做法:特征选择与特征提取。

二、特征选择与特征提取

2.1 特征选择

定义:直接从原始特征库中挑选最有价值的特征子集,剔除无用或贡献度低的特征。

常见方法

  • 方差阈值
  • 相关系数
  • L1 正则化(可将部分特征系数压缩为 0,实现特征筛选)

缺点

  • 非常依赖人的判断。
  • 是一个非此即彼的粗暴操作:要么用,要么不用。
  • 某些特征虽然相关系数不大,但包含有用信息,被特征选择永久丢弃。

2.2 特征提取

定义:将高维原始特征通过不断做线性变换(线性映射)到低维的新特征空间。例如十维数据经变换后变成六维。

核心特点

  • 新特征是原始特征的组合,不是粗暴丢弃。
  • 将某些相关特征组合成更少的特征,在降低维度的同时最大程度保留原始特征的信息。
  • 最典型代表就是 PCA(主成分分析)

三、PCA 核心思想与直观理解

3.1 定义与核心思想

  • PCA 是一种无监督的线性降维算法,不需要数据有标签。
  • 核心思想:将高维数据投影到低维空间中,同时尽可能保留原始数据中存在的最大方差,方差即代表信息量

3.2 为什么方差越大信息量越大?

举例说明:一个特征中的数据如果在 0.001 到 0.002 之间分布,可以认为所有数据基本一样,样本之间没有区别。数据之间的差异度越大(方差越大),蕴含的信息才越大。PCA 的目标就是让数据保留最大方差。

3.3 直观比喻:茶壶拍照

  • 一个茶壶是三维物体,想保留它的二维图像(拍照片),可以从不同角度拍摄。
  • 从正上方拍摄只能看到一个圆形,丢失壶嘴或把手的信息。
  • 选择绝佳的侧面角度,照片能完整呈现茶壶全貌。
  • 不同角度在三维物体降维到二维表示时保留的信息量不同。
  • PCA 是利用数学在空间中寻找“绝佳角度”的算法,这个角度称为主成分

3.4 案例一:身高体重与 BMI

场景:构建健康风险预测模型,数据集包含身高和体重两个特征。

  • 数据可视化后发现:身高越高的人体重相对也越大,数据沿着对角线分布,两个特征存在强烈的正相关。
  • PCA 找到一条最能代表数据走势的对角线方向(红线),将所有点投影到该线上。
  • 投影到原点的距离变成一个纯数字,用这一个数字代表身高和体重的关系。
  • 这个数字非常类似于 BMI 体重指数(体重除以身高平方)。
  • 关键意义:PCA 在不了解相关医学知识的情况下,纯粹从数据结构出发,自动发现组合特征,用一个数字代替原来的两维数据。

3.5 案例二:房价预测的六个特征

场景:房价预测模型,原始数据包含六个特征:

  1. 地铁的距离
  2. 公交的路数
  3. 商场的数量
  4. 学校的评分
  5. 医院的等级
  6. 公园的面积

问题:六个特征之间高度相关,如地铁和公交线路高度相关,信息大量重复冗余,增加模型复杂度且难以解释。

背后隐藏因子:这六个特征表面各不相同,但背后都与地段的好坏密切相关。好地段的小区往往同时具备这些特征,信息高度重叠。

PCA 处理方式:自动分析特征间相关性,将六个特征压缩成少数的综合成分:

  • 第一主成分(PC1)≈ 地段综合分:包含多个特征的加权组合(如地铁距离为负权重,因为离地铁越远重要性越低;公交站数量、商场数量等为正相关成分),可解释原始数据约 70% 的方差信息。
  • 第二主成分(PC2)≈ 生活便利性与自然环境:公园数量、公交相关为正,地铁可能为负,捕捉郊区宜居 vs 市中心商业的差异,可解释额外 15% 的方差。
  • 两个主成分合计解释约 85% 的信息。

结论:PCA 通过数学方法把隐藏因子挖掘出来,用少量维度替代大量冗余特征。它不是简单粗暴丢弃特征,而是对原始特征做综合运算,转换成少量新特征。

四、PCA 的数学原理

4.1 前置概念回顾

(1)方差

公式:每个数减去均值,平方后再求平均(均方差)。

  • 数据越分散,方差越大。
  • 数据越密集(如所有数据都一样),方差为零。
  • 寻找数据分散最大的方向就是寻找方差最大的方向。

(2)协方差

  • 方差描述的是每个变量/特征自身的变化。
  • 协方差描述两个特征之间的关系:各自减去均值后相乘再求平均。
  • 协方差为正数:两个变量正相关;为零:基本无关;为负:此消彼长的关系。数值越大,相关性越强。

4.2 PCA 的底层逻辑

PCA 建立在协方差矩阵特征值分解之上。

设定:有一个包含 N 个样本、D 个特征的数据集,组成矩阵 X(N × D),希望降为 K 维。

4.3 主成分的寻找过程(几何直观)

以三维数据为例:

  1. 在三维空间中找一条线,让所有数据都向这条线投影,使投影后方差最大 → 第一主成分
  2. 在与第一主成分正交的方向上找第二主成分(正交保证信息差距最大);在三维中,与一条线垂直的是一个平面,在这个平面中找方差最大的线即为第二主成分。
  3. 不断找与前面都正交的新方向。若三维降成二维,只需两个主成分即可。
  4. 把所有点投影到选定的主成分方向上,即完成降维。

4.4 详细计算步骤

步骤一:去中心化(中心化)

对每个特征的数据减去该特征的均值。

  • 例:有五个人,数据包含身高、坐高、体重三个特征,先计算每个特征的均值,每个值减去对应均值。
  • 很多时候还会做标准化,以消除特征量纲和量级差异(数据差距不大时可只做中心化)。
  • 中心化后数据有正有负,每个特征均值为零。
步骤二:计算协方差矩阵
  • 协方差用于衡量两个特征之间的相关性。
  • 对去中心化后的数据做运算,最后除以 N-1 而非 N。
  • 贝塞尔修正:如果只除以 N,会低估方差;除以 N-1 可以进行修正。
  • 计算结果是一个 D × D 的对称矩阵
  • 对角线元素:各个特征自身的方差。
  • 非对角线元素(对称):不同特征两两之间的协方差(相关性)。

举例(身高、坐高、体重三个特征):

  • 身高与坐高的协方差约为 37.3,呈非常正的相关。
  • 三个特征都呈正相关,表明存在冗余信息。
  • PCA 的作用是尽可能去掉冗余,只保留最大方向上的方差。
步骤三:计算特征值与特征向量
  • 特征向量 = 主成分的方向(即前面所找红线的方向)。
  • 特征值 = 找到主方向后,所有数据点向该方向投影所算出的方差大小,代表主成分的重要性。

计算示例

  • 通过求解特征方程得到三个特征值(如 300 等),以及对应的三个特征向量。
  • V1:基本全为正 → 代表综合体型大小(三个特征均正相关)。
  • V2:身高为负,坐高和体重为正 → 表达“相同身高下偏胖还是偏瘦”的维度。
  • Vi 第三个特征值接近零 → 数据几乎可以完全落在一个二维平面上,第三维存在较强冗余。
步骤四:选取主成分并构建投影矩阵
  • 选取前 K 个主成分的特征向量组成矩阵 W。
  • 判断 K 的依据是解释方差率

解释方差率的计算方法:每个特征值除以所有特征值之和,即该主成分解释全部方差的百分比。

  • 一般选定累计解释方差达到 95% 左右时的 K。
  • 示例中第一个特征值解释 89%,加上第二个的 10%,累计接近 100% → 选 K = 2,将三维数据降至二维。
  • 若第一主成分可解释 95% 以上,后续都可不要,降为一维即可。
步骤五:数据投影

使用公式:降维结果 = 中心化矩阵 × 投影矩阵 W

  • 原始矩阵为 5×3(5 个样本,3 个特征),乘以投影矩阵后得到新的矩阵。
  • 结果变为 5×2(5 个样本,2 个特征),完成降维。
  • 原始高相关物理量被压缩成独立主成分,消除冗余,便于二维可视化。

4.5 核心过程总结

PCA 核心流程:

  1. 数据中心化/标准化
  2. 计算协方差矩阵
  3. 找出最大方差方向 → 第一主成分;与其正交的方向中找方差最大 → 第二主成分,依次类推。
  4. 所有点向这些主成分方向投影,计算特征值(即方差)。
  5. 根据解释方差率(通常累积至 95%)决定保留多少个主成分。

五、实际案例:鸢尾花数据集(Iris)降维

5.1 案例过程

  • 使用鸢尾花数据集,含 150 个样本、4 个特征
  • 数据先标准化;查看标准化后的协方差矩阵以了解特征间的两两关系。
  • 初始化 PCA 对象并拟合数据。
  • 输出各主成分的特征值(特征值即方差含义)、方差解释比、累计方差解释比。

5.2 结果分析

协方差矩阵:各特征之间有一定相关性,部分相关性较高。

各主成分特征值与解释率

主成分特征值方差解释比累计解释比
PC12.972.9%72.9%
PC20.9222%≈95%
PC30.03很小
PC40.005几乎可忽略
  • PC1 与 PC2 合计超过 95%,后续成分几乎可以丢弃 → 只需保留前两个主成分。

主成分的构成解释

  • PC1:花萼宽度为负相关,花萼长度、花瓣长宽均为正相关 → 代表花的大小。
  • PC2:花萼宽度为主,代表形状上的差异。

二维可视化

  • 按 PC1 和 PC2 画散点图,能清楚看到三个类别的分布情况,大幅降低复杂度。

六、PCA 与随机森林特征筛选的对比

之前讲随机森林时提到它也能做特征筛选,与 PCA 存在显著差异:

对比维度随机森林PCA
学习类型监督学习,需要标签无监督,无需标签
特征关系可捕捉非线性特征关系有线性假设
可解释性高(使用原始特征,直接丢弃无关特征)较低(新特征是原始特征的线性组合,丧失原始业务含义)
适用场景有标注数据、业务强诉求可解释性时追求性能、特征高度相关(线性重合度高)时

实践建议:如果数据有标签,可先用随机森林筛掉明显无效的特征,再做一次 PCA 进行二次降维,往往达到 1+1>2 的效果。

七、PCA 的优势与局限性

7.1 优势

  • 无需人工干预:完全基于数据方差进行正交变换。
  • 消除共线性:有效消除特征之间的多重共线性。
  • 降噪与防过拟合:降低数据噪音,缓解过拟合。
  • 用途广泛:可做 EDA(探索性数据分析)等。

7.2 局限性与适用条件

  • 线性假设:PCA 假设数据的主成分是线性的,对非线性数据结构效果不佳,需要改用其他算法。
  • 可解释性丧失:降维后的新特征是原始特征的线性组合,没有原来业务含义。
  • 异常值敏感:对极端异常值非常敏感,异常值会影响方差计算。
  • 适用前提:特征高度相关、线性关系明显时效果最好。

八、总结

PCA 是一种经典的无监督降维工具,本质是通过线性变换寻找方差最大的投影方向,用更少的新特征(原始特征的线性组合)来替代大量冗余的原始特征。它不需要标签,能有效应对维度灾难、消除共线性、辅助可视化和预防过拟合,但受限于线性假设、可解释性下降和异常值敏感等局限。在实际工业实践中,PCA 常与随机森林等监督方法结合使用,先进行监督筛选再做 PCA 二次降维,可获得更优效果。