量化交易之数学与统计学基础2.2——线性代数与矩阵运算 | 特征值与特征向量

量化交易之数学与统计学基础2.2------线性代数与矩阵运算 | 特征值与特征向量


第二部分:线性代数与矩阵运算

第2节:特征值与特征向量:PCA 降维原理、因子分析中的应用


一、特征值与特征向量:矩阵变换的"核心密码"

在矩阵运算中,特征值(Eigenvalue)和特征向量(Eigenvector)具有极其重要的地位,它们描述了矩阵对向量的变换特性。

1. 数学定义

对于一个 n × n n\times n n×n 的方阵 A \mathbf{A} A,如果存在一个非零向量 v \mathbf{v} v 和一个标量 λ \lambda λ,使得:
A v = λ v \mathbf{A}\mathbf{v}=\lambda\mathbf{v} Av=λv

则称 λ \lambda λ 是矩阵 A \mathbf{A} A 的特征值, v \mathbf{v} v 是对应于特征值 λ \lambda λ 的特征向量。

求解特征值和特征向量的过程,就是求解特征方程 det ⁡ ( A − λ I ) = 0 \det(\mathbf{A}-\lambda\mathbf{I}) = 0 det(A−λI)=0 的根( λ \lambda λ),然后将每个特征值代入 ( A − λ I ) v = 0 (\mathbf{A}-\lambda\mathbf{I})\mathbf{v}=\mathbf{0} (A−λI)v=0 求解对应的特征向量 v \mathbf{v} v。

2. 几何意义

从几何角度看,特征向量的方向在矩阵变换下保持不变(可能会有长度的缩放),缩放比例就是对应的特征值。例如,在二维平面上,一个线性变换矩阵 A \mathbf{A} A 对某些向量的作用可能只是将其拉长或缩短,而不改变其方向,这些向量就是特征向量。

图 1:特征向量在矩阵变换下方向不变,仅长度按特征值缩放

二、主成分分析(PCA):数据降维的"魔法工具"

在量化交易中,我们常常面临高维数据(如包含大量因子的数据集),这不仅增加了计算复杂度,还可能导致过拟合问题。PCA 是一种常用的数据降维方法,其核心思想是通过线性变换将原始数据投影到一组新的正交坐标轴上,使得数据的方差最大化。

1. PCA 步骤
  • 数据标准化:将原始数据的每个特征进行标准化处理,使其均值为 0,标准差为 1。这一步是为了消除不同特征尺度的影响。
  • 计算协方差矩阵 :对于标准化后的数据矩阵 X \mathbf{X} X,其协方差矩阵 C = 1 n − 1 X T X \mathbf{C}=\frac{1}{n - 1}\mathbf{X}^T\mathbf{X} C=n−11XTX。
  • 特征值分解 :对协方差矩阵 C \mathbf{C} C 进行特征值分解,得到特征值 λ 1 ≥ λ 2 ≥ ⋯ ≥ λ n \lambda_1\geq\lambda_2\geq\cdots\geq\lambda_n λ1≥λ2≥⋯≥λn 和对应的特征向量 v 1 , v 2 , ⋯   , v n \mathbf{v}_1,\mathbf{v}_2,\cdots,\mathbf{v}_n v1,v2,⋯,vn。
  • 选择主成分 :按照特征值的大小排序,选择前 k k k 个最大特征值对应的特征向量作为主成分,其中 k k k 是降维后的维度。
  • 数据投影:将原始数据投影到选定的主成分上,得到降维后的数据。
2. 量化应用
  • 因子筛选:在多因子模型中,通过 PCA 可以将大量的因子压缩为少数几个主成分,这些主成分代表了数据的主要信息,同时去除了因子之间的相关性。
  • 风险模型:PCA 可以用于构建风险模型,将资产的风险暴露分解为几个主要的风险因子,从而简化风险评估和管理。
三、因子分析:挖掘数据背后的"潜在驱动因素"

因子分析(Factor Analysis)与 PCA 类似,但更侧重于挖掘数据背后的潜在因子结构。它假设观测变量是由少数几个不可观测的潜在因子和特定因子线性组合而成。

1. 因子分析模型

观测变量 x = ( x 1 , x 2 , ⋯   , x p ) T \mathbf{x}=(x_1,x_2,\cdots,x_p)^T x=(x1,x2,⋯,xp)T 可以表示为:
x = Λ f + ϵ \mathbf{x}=\mathbf{\Lambda}\mathbf{f}+\mathbf{\epsilon} x=Λf+ϵ

其中, Λ \mathbf{\Lambda} Λ 是因子载荷矩阵, f = ( f 1 , f 2 , ⋯   , f m ) T \mathbf{f}=(f_1,f_2,\cdots,f_m)^T f=(f1,f2,⋯,fm)T 是潜在因子向量, ϵ = ( ϵ 1 , ϵ 2 , ⋯   , ϵ p ) T \mathbf{\epsilon}=(\epsilon_1,\epsilon_2,\cdots,\epsilon_p)^T ϵ=(ϵ1,ϵ2,⋯,ϵp)T 是特定因子向量。

2. 与 PCA 的区别
  • 目标不同:PCA 主要是为了数据降维,找到数据的最大方差方向;而因子分析更关注挖掘数据背后的潜在因子结构。
  • 假设不同:PCA 没有对数据的生成机制做任何假设;而因子分析假设观测变量是由潜在因子和特定因子线性组合而成。
四、Python 实践:PCA 降维与因子分析
python 复制代码
import numpy as np
from sklearn.decomposition import PCA, FactorAnalysis
import matplotlib.pyplot as plt

# 生成模拟数据(100 个样本,5 个特征)
np.random.seed(42)
X = np.random.randn(100, 5)

# 1. PCA 降维
pca = PCA(n_components=2)  # 降维到 2 维
X_pca = pca.fit_transform(X)

# 2. 因子分析
fa = FactorAnalysis(n_components=2)  # 提取 2 个潜在因子
X_fa = fa.fit_transform(X)

# 3. 可视化结果
plt.figure(figsize=(12, 5))
plt.subplot(1, 2, 1)
plt.scatter(X_pca[:, 0], X_pca[:, 1])
plt.title('PCA 降维结果')
plt.xlabel('主成分 1')
plt.ylabel('主成分 2')

plt.subplot(1, 2, 2)
plt.scatter(X_fa[:, 0], X_fa[:, 1])
plt.title('因子分析结果')
plt.xlabel('潜在因子 1')
plt.ylabel('潜在因子 2')

plt.tight_layout()
plt.show()
本节总结
  • 特征值和特征向量是理解矩阵变换的关键,它们描述了矩阵对向量的作用方式。
  • PCA 是一种有效的数据降维方法,通过特征值分解找到数据的主成分,减少数据维度,同时保留主要信息。
  • 因子分析更侧重于挖掘数据背后的潜在因子结构,假设观测变量是由潜在因子和特定因子线性组合而成。
相关推荐
eve杭21 小时前
AI、大数据与智能时代:从理论基石到实战路径
人工智能·python·5g·网络安全·ai
TL滕21 小时前
从0开始学算法——第十八天(分治算法)
笔记·学习·算法
Honmaple21 小时前
中国四级城市联动数据,包含港澳台,内含json , sql , python 脚本
python·sql·json
算法与双吉汉堡21 小时前
【短链接项目笔记】Day2 用户注册
java·redis·笔记·后端·spring
BoBoZz1921 小时前
Curvatures 曲率的计算、边缘曲率的调整以及曲率、颜色的映射
python·vtk·图形渲染·图形处理
思成不止于此1 天前
【MySQL 零基础入门】MySQL 约束精讲(一):基础约束篇
数据库·笔记·sql·学习·mysql
少吃零食多运动1 天前
【Jupyter notebook修改工作目录】
python·jupyter
Swizard1 天前
别买树莓派了!3步教你在安卓手机上跑通 CPython + PaddleOCR,打造随身 AI 识别终端
python·ai·移动开发
小黄人软件1 天前
【过度滥用眼】真正的理解,从闭眼开始:如何把“眼睛视觉依赖”降到最低,把大脑效率提到最高。【最少用眼的工作与学习体系】
学习
老华带你飞1 天前
建筑材料管理|基于springboot 建筑材料管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·学习·spring