Day 16:PCA主成分分析与降维

Day 16:PCA主成分分析与降维

📋 目录

  1. 降维概述
  2. PCA数学原理
  3. 主成分的可解释性
  4. 主成分数量的选择
  5. PCA在量化中的应用

第一部分:降维概述(1.5小时理论)

1.1 为什么需要降维?

维度灾难

  • 随着特征维度增加,数据点变得稀疏
  • 距离度量失效
  • 需要指数级增长的样本量

降维的好处

好处 说明
减少过拟合 降低模型复杂度
提高速度 减少计算量
去除噪声 过滤冗余信息
可视化 高维数据投影到2D/3D
内存节省 存储更少特征

1.2 降维方法分类

类型 方法 特点
线性 PCA、LDA 假设线性结构,速度快
非线性 t-SNE、UMAP 捕捉非线性,计算慢
流形学习 Isomap、LLE 保持局部结构
特征选择 方差阈值、互信息 选择子集,可解释

1.3 PCA的核心思想

PCA(主成分分析) :通过线性变换,将原始特征投影到方差最大的新坐标系上。

目标:找到一组新的正交基(主成分),使得:

  • 第一主成分:数据方差最大方向
  • 第二主成分:与第一正交且方差次大
  • 依此类推...

第二部分:PCA数学原理

2.1 最大方差解释

直觉:方差大的方向包含更多信息,方差小的方向可能是噪声。

数学推导 :寻找单位向量 w w w,使投影 X w Xw Xw 的方差最大:
max ⁡ w Var ⁡ ( X w ) = max ⁡ w w T Σ w s.t. ∥ w ∥ = 1 \max_{w} \operatorname{Var}(Xw) = \max_{w} w^T \Sigma w \quad \text{s.t.} \quad \|w\| = 1 wmaxVar(Xw)=wmaxwTΣws.t.∥w∥=1

其中 Σ = 1 n X T X \Sigma = \frac{1}{n}X^TX Σ=n1XTX 是协方差矩阵。

: w w w 是 Σ \Sigma Σ 的最大特征值对应的特征向量。

2.2 协方差矩阵与特征分解

协方差矩阵 :表示特征之间的相关性。
Σ = 1 n − 1 ( X − X ˉ ) T ( X − X ˉ ) \Sigma = \frac{1}{n-1}(X - \bar{X})^T(X - \bar{X}) Σ=n−11(X−Xˉ)T(X−Xˉ)

特征分解
Σ v i = λ i v i \Sigma v_i = \lambda_i v_i Σvi=λivi

其中:

  • λ i \lambda_i λi:特征值,表示该主成分的方差大小
  • v i v_i vi:特征向量,表示主成分方向

2.3 PCA计算步骤

输入 :数据矩阵 X X X ( n × p ) (n×p) (n×p),目标维度 k k k
输出 :降维后的数据 Y Y Y ( n × k ) (n×k) (n×k)

  1. 数据中心化: X c = X − μ X_c = X - μ Xc=X−μ (每个特征减去均值)

  2. 计算协方差矩阵: Σ = ( 1 / ( n − 1 ) ) X c T X c \Sigma = (1/(n-1)) X_c^T X_c Σ=(1/(n−1))XcTXc

  3. 特征分解 Σ \Sigma Σ 得到特征值 λ 1 ≥ λ 2 ≥ ⋯ ≥ λ p λ_1 ≥ λ_2 ≥ \cdots ≥ λ_p λ1≥λ2≥⋯≥λp 和特征向量 v 1 , v 2 , ⋯   , v p v_1, v_2, \cdots , v_p v1,v2,⋯,vp

  4. 选择前 k k k 个特征向量组成投影矩阵 W = v 1 , v 2 , . . . , v k W = v_1, v_2, ..., v_k W=v1,v2,...,vk

  5. 投影: Y = X c ⋅ W Y = X_c \cdot W Y=Xc⋅W

2.4 方差解释比例

单个主成分方差解释率
解释 率 i = λ i ∑ j = 1 p λ j 解释率_i = \cfrac {λ_i} {∑_{j=1}^p λ_j} 解释率i=∑j=1pλjλi

累积方差解释率
累积解释 率 k = ∑ i = 1 k λ i ∑ j = 1 p λ j 累积解释率_k = \cfrac {\sum_{i=1}^k λ_i} {\sum_{j=1}^pλ_j} 累积解释率k=∑j=1pλj∑i=1kλi


第三部分:主成分的可解释性

3.1 载荷(Loadings)

载荷:原始特征与主成分之间的相关系数。

python 复制代码
# 载荷矩阵
loadings = pca.components_.T  # shape: (n_features, n_components)

# 每个主成分最重要的原始特征
for i in range(n_components):
    top_features = np.argsort(np.abs(loadings[:, i]))[-5:][::-1]
    print(f"PC{i+1} 最重要的特征: {feature_names[top_features]}")

3.2 载荷的正负含义

载荷符号 含义
正载荷 原始特征与主成分正相关
负载荷 原始特征与主成分负相关

示例

  • PC1 载荷:PE(0.6), PB(0.5), ROE(-0.4)
  • 解释:PC1 代表"估值维度"

3.3 主成分命名

根据载荷较大的原始特征,可以为主成分赋予业务含义:

主成分 高载荷特征 可解释为
PC1 PE↑, PB↑, ROE↓ 估值因子
PC2 换手率↑, 波动率↑ 流动性因子
PC3 动量指标↑ 动量因子

第四部分:主成分数量的选择

4.1 累积方差解释率

常见标准

  • 保留足够解释全部方差的95%
  • 保留足够解释全部方差的90%
  • 保留特征值 > 1 的主成分
python 复制代码
# 找到达到95%方差的成分数
cumsum = np.cumsum(pca.explained_variance_ratio_)
n_components_95 = np.argmax(cumsum >= 0.95) + 1

4.2 肘部法则(Scree Plot)

绘制特征值从小到大的曲线,找到"肘点":

python 复制代码
plt.plot(range(1, len(eigenvalues)+1), eigenvalues, 'bo-')
plt.xlabel('主成分编号')
plt.ylabel('特征值')
plt.title('Scree Plot(肘部法则)')

4.3 交叉验证

使用模型性能作为选择依据:

python 复制代码
from sklearn.model_selection import cross_val_score

for k in range(1, 21):
    pca = PCA(n_components=k)
    X_pca = pca.fit_transform(X_scaled)
    score = cross_val_score(model, X_pca, y, cv=5).mean()
    scores.append(score)

4.4 选择方法对比

方法 优点 缺点
累积方差 简单快速 阈值主观
Scree Plot 可视化直观 肘点可能不明显
交叉验证 面向任务 计算量大

第五部分:PCA在量化中的应用

5.1 典型应用场景

应用 说明
因子降维 将多个相关因子合并为少数主成分
风险模型 识别主要风险来源
数据预处理 减少模型输入维度
可视化 高维数据投影到2D/3D
异常检测 重构误差大的点是异常

5.2 PCA的局限性

局限性 说明 解决方案
线性假设 只能捕捉线性关系 使用核PCA
可解释性差 主成分是原始特征的线性组合 分析载荷矩阵
受量纲影响 需标准化 使用StandardScaler
对异常值敏感 异常值影响方差 使用RobustPCA

5.3 PCA vs 特征选择

方法 PCA 特征选择
输出 新特征(组合) 原始特征子集
可解释性
维度降低 可大幅降低 有限
信息保留 保留方差信息 可能丢失交互信息
相关推荐
实战派K8S&DB7 分钟前
如何在内网配置 TiDB 数据库 Agent
数据库·人工智能·分布式·tidb
天远数科10 分钟前
零信任架构实战:基于天远身份证OCR构建自动化高并发移动支付网关
人工智能·架构·自动化·ocr
我爱写代码i12 分钟前
AI对话绘画数字人源码 - uniapp前端
前端·人工智能·uni-app
这就是佬们吗23 分钟前
不写Prompt,写Loop:AI编程的下一场范式迁移
人工智能·prompt·ai编程
用户9385156350737 分钟前
大模型记忆指南:从短时缓存到永久记忆,手把手带你吃透 LangChain Memory 管理
javascript·人工智能
武子康40 分钟前
机器人策略 90% 与 92%:为什么两个百分点通常不足以证明更
人工智能·llm·agent
阿里云大数据AI技术43 分钟前
PAI支持一键部署Qwen3.8-Flash-Next、GLM-5.3等最新开源模型
人工智能·开源·llm
SleepNW_POV44 分钟前
家居科普|床垫溜边塌陷成因解析与边缘加固床垫选购指南
人工智能·科技·智能家居·睡眠
FII工业富联科技服务44 分钟前
从 Vera Rubin NVL72 拆解高密度 AI 液冷:GPU 的热到底怎么被带走?
大数据·人工智能
磐时信息技术1 小时前
SASETalk | 当智能驾驶驶入未知场景:谈谈关于SOTIF、AI安全与工程落地的思考
人工智能·安全·预期功能安全·sotif