📑 查看全课大纲(第 10 / 20 节)
- 1.多元统计分析概述与多元正态分布
- 2.多元数据矩阵与向量化运算
- 3.统计数据探索与高维数据清洗
- 4.样品与变量相似性度量(距离与相似系数)
- 5.系统聚类与K均值聚类算法原理
- 6.聚类分析代码实战与谱系图绘制
- 7.距离判别法理论推导与应用
- 8.贝叶斯判别与Fisher线性判别
- 9.判别分析代码实战与误判率评估
- 10.主成分分析推导、几何意义与统计性质
- 11.主成分回归与共线性消除
- 12.主成分分析代码实战与降维可视化
- 13.因子分析正交模型与因子载荷求解
- 14.因子正交旋转(方差最大化)与因子得分计算
- 15.因子分析代码实战与行业综合评价
- 16.列联表分析与卡方独立性检验
- 17.对应分析理论推导与过渡图原理
- 18.对应分析代码实战与双标图解读
- 19.典型相关变量数学推导与显著性检验
- 20.典型相关系数阵计算与代码实战
主成分分析推导、几何意义与统计性质
约 62 分钟
主成分分析:几何意义、数学推导与统计性质
小象实战讲义 · 多元统计分析
面对高维数据变量相关性强、信息重叠的挑战,主成分分析(PCA)通过线性组合生成互不相关的新变量(主成分),在保留核心信息的同时简化数据结构。本节将从几何直观出发,讲解其数学逻辑与核心统计性质。
💡 核心导读
- 降维动机:应对高维灾难,用少数综合变量替代相关变量,消除冗余。
- 几何直观:本质是坐标轴旋转,寻找方差最大的新方向。
- 数学本质:主成分是协方差矩阵的特征向量,方差为对应特征值。
- 统计性质:方差贡献率、累计贡献率与因子载荷是核心评估指标。
- 实践标准:结合累计贡献率与信息提取率确定保留的主成分个数。
一、几何意义与问题背景
1.1 为何需要降维?
实际分析中常遇到变量维度 远大于样本量 的“高维灾难”,导致传统方法失效;且变量间存在相关性,信息大量重叠。
经典案例:制衣的十几项指标可综合为“长度”“胖瘦”“体型”3个主成分,互不相关且保留核心信息。
设 维随机向量 ,均值 、协方差矩阵 存在。目标是找到 个新综合变量 ,满足:
- 每个 是 的线性组合;
- 各 互不相关;
- 方差依次递减;
- 前 个保留尽可能多的原始信息。
1.2 几何直观:坐标轴的旋转
PCA可理解为对原始坐标系的正交旋转。以二维数据为例,若 相关性强,样本分布呈扁椭圆状。
将坐标轴旋转 ,使新轴 沿椭圆长轴(方差最大), 沿短轴(方差最小),旋转公式为: 矩阵形式为 ,其中 为正交矩阵()。
此时仅用 即可近似描述原始二维数据,实现降维。 为第一主成分, 为第二主成分。若变量不相关(分布为圆形),降维损失大;若完全相关(分布为直线),降维效果极佳。
二、主成分的数学推导
2.1 问题形式化
设 维随机向量 的协方差矩阵为 ,第 个主成分是 ,其中 为系数向量。
主成分需满足两个约束:
- 系数标准化:(避免系数任意放大);
- 主成分间正交: 时 ,即 。
目标是在约束下依次最大化每个主成分的方差:。
2.2 第一主成分的求解
第一主成分仅需满足 ,用拉格朗日乘子法求解: 对 求导并令其为0,得 ,即 是 的特征向量,对应特征值 ,且 。 为最大化方差, 取 的最大特征值, 为对应的单位特征向量。
2.3 第二及第k主成分的求解
第二主成分需满足 且与第一主成分正交。同理可证, 是 第二大特征值 对应的单位特征向量,。 依此类推,第 个主成分的系数向量是 第 大特征值对应的单位特征向量,方差为该特征值。
2.4 基本结论
设 的特征值降序排列为 ,对应单位正交特征向量为 ,令 ,则主成分向量 ,其协方差矩阵为对角阵: 验证了主成分间互不相关。
三、主成分的统计性质
3.1 性质1:协方差矩阵为对角阵
如上所述,主成分的协方差矩阵是由特征值构成的对角阵,各主成分互不相关。
3.2 性质2:总方差不变性
原始变量总方差为协方差矩阵的迹 ,所有主成分总方差为 。由迹的性质可证: PCA仅重新分配总方差,总变异程度不变。
3.3 性质3:因子载荷量
第 个主成分 与第 个原始变量 的相关系数称为因子载荷量,衡量二者关联强度: 其中 是特征向量 的第 个分量, 是 的方差。
3.4 方差贡献率与累计贡献率
这是选择主成分个数的核心指标:
- 方差贡献率:第 个主成分方差占总方差的比重 ,反映其提取信息的能力。
- 累计贡献率:前 个主成分方差和占总方差的比重 ,反映总信息保留比例。实践中常选 使 达80%以上。
3.5 信息提取率
累计贡献率衡量整体信息保留情况,信息提取率 衡量前 个主成分从第 个原始变量中提取的信息比例: 好的PCA结果需兼顾累计贡献率与各变量的信息提取率。
四、Python实战:主成分性质验证
下面通过Python代码模拟多元数据集,验证PCA的核心统计性质:
import numpy as np
np.random.seed(42)
n, p = 100, 4
Sigma_true = np.array([
[4.0, 2.5, 1.2, 0.5],
[2.5, 3.0, 1.0, 0.8],
[1.2, 1.0, 2.0, 0.3],
[0.5, 0.8, 0.3, 1.0]
])
X = np.random.multivariate_normal(np.zeros(p), Sigma_true, size=n)
S = np.cov(X, rowvar=False)
eigenvals, eigenvecs = np.linalg.eigh(S)
idx = np.argsort(eigenvals)[::-1]
eigenvals = eigenvals[idx]
eigenvecs = eigenvecs[:, idx]
total_var = np.sum(eigenvals)
var_ratio = eigenvals / total_var
cum_var_ratio = np.cumsum(var_ratio)
std_vars = np.sqrt(np.diag(S))
loadings = eigenvecs * np.sqrt(eigenvals) / std_vars[:, np.newaxis]
print("特征值序列 (降序):", np.round(eigenvals, 4).tolist())
print("各主成分方差贡献率:", np.round(var_ratio, 4).tolist())
print("累计方差贡献率:", np.round(cum_var_ratio, 4).tolist())
print("第一主成分因子载荷 (各变量相关系数):", np.round(loadings[:, 0], 4).tolist())
print("前 2 主成分累计贡献率是否超过 75%:", bool(cum_var_ratio[1] > 0.75))结果解读: 运行代码可得(因随机性略有浮动):第一主成分解释约61%的总方差,前两个累计贡献率约78%,满足常用阈值;第一主成分与前两个原始变量相关性最强,可解释为“整体规模”综合指标。
📝 动手练一练
- 特征值计算:给定协方差矩阵 ,请求解其特征多项式,并估算最大特征值。
- 主成分个数选择:某数据集PCA得到8个特征值:4.2, 2.1, 0.8, 0.5, 0.3, 0.2, 0.1, 0.05。若要求累计贡献率超过80%,应保留前几个主成分?
参考答案:
- 特征多项式为 (首一形式:),最大特征值约为 。
- 总方差为8.25,前3个主成分累计贡献率约86.1% > 80%,应保留3个主成分。
本章小结
本节系统讲解了主成分分析的核心方法:
- 核心思想:通过线性变换降维,解决高维数据冗余与相关性问题。
- 几何视角:对原始坐标系正交旋转,寻找方差最大的新方向。
- 数学原理:主成分是协方差矩阵的特征向量,方差为对应特征值,是正交约束下最大化方差的优化问题。
- 核心性质:总方差不变性、因子载荷、方差/累计贡献率是应用PCA的基石。
- 评估标准:结合累计贡献率(通常>80%)与信息提取率确定主成分个数。
行动清单:
- 对手头多元数据计算样本协方差与相关系数矩阵;
- 进行特征值分解,计算各主成分的方差/累计贡献率;
- 根据阈值确定保留主成分个数,尝试解释第一主成分的业务含义。
— 小象教研组
领取《小象 11GB VIP 课件资料包与大厂真题手册》
包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。
- ✔完整 Python / 数据分析 Jupyter 实战源码
- ✔大厂真实业务数据集与练习题
- ✔微信扫码添加顾问免费领取;想学什么,直接告诉顾问
微信扫码添加顾问