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 特征选择
输出 新特征(组合) 原始特征子集
可解释性 差 好
维度降低 可大幅降低 有限
信息保留 保留方差信息 可能丢失交互信息
相关推荐
奈落2417 小时前
AI辅助的另一面:从2026年国际AI安全报告的“故障”清单到国内专家的可靠性短板,自主行动的Agent为什么更难及时干预
人工智能·安全·agent·本地部署·ai 办公
火山引擎开发者社区19 小时前
eMudhra 证书失陷:容器用户最容易忽略的镜像信任链漏洞
人工智能
LabVIEW开发20 小时前
LabVIEW 机载 DIAL:每秒万次甲烷测量
人工智能·labview·labview知识·labview功能·labview程序
飞猫的边缘AI21 小时前
英特尔量子生意
人工智能·量子计算·边缘ai
深蓝AI21 小时前
桌面 Agent 缺的不是视觉:Vercel 开源 agent-desktop,用无障碍树 ref 替代截图坐标
人工智能·程序员
镜子AI21 小时前
镜子AI 技术复盘:三条自动化链路上的“停止条件“设计
运维·人工智能·自动化
向哆哆21 小时前
羊行为目标检测数据集:4类别、2,000张图像 | 目标检测
人工智能·yolo·目标检测·目标跟踪
如若12321 小时前
【论文复现】CoFailMed:从零复现医学图像分割的共享失败审计,含完整代码流程与科研绘图
人工智能·python
ZhengEnCi1 天前
GPT-6 Astra 爆改 Qwen 权重真有那么神吗:权重空间编程 0.016% 参数的真相
算法·架构
赛博守夜人1 天前
AI安全攻防与治理之十六:对抗样本、恶意文件与多模态攻击,AI 内容安全检测的真实盲区
人工智能·安全