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 案例二:房价预测的六个特征
场景:房价预测模型,原始数据包含六个特征:
- 地铁的距离
- 公交的路数
- 商场的数量
- 学校的评分
- 医院的等级
- 公园的面积
问题:六个特征之间高度相关,如地铁和公交线路高度相关,信息大量重复冗余,增加模型复杂度且难以解释。
背后隐藏因子:这六个特征表面各不相同,但背后都与地段的好坏密切相关。好地段的小区往往同时具备这些特征,信息高度重叠。
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 主成分的寻找过程(几何直观)
以三维数据为例:
- 在三维空间中找一条线,让所有数据都向这条线投影,使投影后方差最大 → 第一主成分。
- 在与第一主成分正交的方向上找第二主成分(正交保证信息差距最大);在三维中,与一条线垂直的是一个平面,在这个平面中找方差最大的线即为第二主成分。
- 不断找与前面都正交的新方向。若三维降成二维,只需两个主成分即可。
- 把所有点投影到选定的主成分方向上,即完成降维。
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 核心流程:
- 数据中心化/标准化。
- 计算协方差矩阵。
- 找出最大方差方向 → 第一主成分;与其正交的方向中找方差最大 → 第二主成分,依次类推。
- 所有点向这些主成分方向投影,计算特征值(即方差)。
- 根据解释方差率(通常累积至 95%)决定保留多少个主成分。
五、实际案例:鸢尾花数据集(Iris)降维
5.1 案例过程
- 使用鸢尾花数据集,含 150 个样本、4 个特征。
- 数据先标准化;查看标准化后的协方差矩阵以了解特征间的两两关系。
- 初始化 PCA 对象并拟合数据。
- 输出各主成分的特征值(特征值即方差含义)、方差解释比、累计方差解释比。
5.2 结果分析
协方差矩阵:各特征之间有一定相关性,部分相关性较高。
各主成分特征值与解释率:
| 主成分 | 特征值 | 方差解释比 | 累计解释比 |
|---|---|---|---|
| PC1 | 2.9 | 72.9% | 72.9% |
| PC2 | 0.92 | 22% | ≈95% |
| PC3 | 0.03 | 很小 | — |
| PC4 | 0.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 二次降维,可获得更优效果。