当前位置: 首页 > news >正文

人工智能之数学基础 线性代数:第三章 特征值与特征向量

人工智能之数学基础 线性代数

第三章 特征值与特征向量


文章目录

  • 人工智能之数学基础 线性代数
  • 前言
  • 一、定义
  • 二、几何与物理意义
    • 1. 几何解释(线性变换视角)
    • 2. 物理意义举例
  • 三、数学推导:如何求特征值与特征向量?
      • 步骤总结:
    • 四、重要性质
  • 五、Python 代码实现
    • 1. 基础计算:`numpy.linalg.eig`
    • 2. 对称矩阵:使用 `eigh`(更高效稳定)
    • 3. 可视化:2D 线性变换与特征向量
    • 4. 应用示例:主成分分析(PCA)核心
  • 六、数值计算注意事项
    • 七、总结
  • 后续
  • 资料关注

前言

特征值(Eigenvalues)和特征向量(Eigenvectors)是线性代数中最具洞察力的概念之一,广泛应用于主成分分析(PCA)稳定性分析振动模态图神经网络PageRank算法等领域。本文将从定义、计算方法、几何/物理意义出发,并提供完整的Python 代码实现


一、定义

设 $ A \in \mathbb{R}^{n \times n} $是一个方阵。若存在一个非零向量$ \mathbf{v} \in \mathbb{R}^n $ 和一个标量 $ \lambda \in \mathbb{R} $(或 $ \mathbb{C} $),使得:

A v = λ v A \mathbf{v} = \lambda \mathbf{v}Av=λv

则称:

  • $\lambda $ 为矩阵 $ A $ 的一个特征值(eigenvalue)
  • $ \mathbf{v} $ 为对应于 $ \lambda $ 的特征向量(eigenvector)

注意:特征向量不能是零向量;但特征值可以为 0。


二、几何与物理意义

1. 几何解释(线性变换视角)

  • 矩阵 $A $ 表示一个线性变换(如旋转、拉伸、剪切等)。
  • 特征向量是那些在变换后方向不变(或反向)的向量;
  • 特征值表示该方向上的伸缩比例
    • $ |\lambda| > 1 $:拉伸
    • $ |\lambda| < 1 $:压缩
    • $\lambda < 0 $:反向
    • $\lambda = 1 $:不变

例如:对角矩阵

A = [ 3 0 0 2 ] A = \begin{bmatrix} 3 & 0 \\ 0 & 2 \end{bmatrix}A=[3002]

的特征向量是坐标轴方向,特征值分别是 3 和 2 —— 沿 x 轴拉伸 3 倍,y 轴拉伸 2 倍。

2. 物理意义举例

领域应用
力学振动系统的固有频率(特征值)与振型(特征向量)
量子力学哈密顿算符的本征态与能量
图论图的拉普拉斯矩阵的特征值反映连通性(谱聚类)
机器学习PCA 中协方差矩阵的特征向量 = 主成分方向

三、数学推导:如何求特征值与特征向量?

从定义出发:

A v = λ v ⇒ ( A − λ I ) v = 0 A \mathbf{v} = \lambda \mathbf{v} \Rightarrow (A - \lambda I) \mathbf{v} = \mathbf{0}Av=λv(AλI)v=0

要使非零解 $ \mathbf{v} \ne \mathbf{0} $存在,系数矩阵必须奇异(不可逆),即:

det ⁡ ( A − λ I ) = 0 \det(A - \lambda I) = 0det(AλI)=0

这个关于 $ \lambda $的多项式方程称为特征方程(Characteristic Equation),其根即为所有特征值。

步骤总结:

  1. 计算特征多项式:$ p(\lambda) = \det(A - \lambda I) $
  2. 解方程 $ p(\lambda) = 0 $ 得到特征值 $ \lambda_1, \dots, \lambda_n $
  3. 对每个 $\lambda_i $,解齐次线性方程组 $ (A - \lambda_i I)\mathbf{v} = \mathbf{0} $ 得到特征向量

注:$ n \times n $ 矩阵最多有 $ n $ 个线性无关的特征向量。


四、重要性质

性质说明
迹(Trace)$ \text{tr}(A) = \sum \lambda_i $
行列式$ \det(A) = \prod \lambda_i $
可对角化若 $ A $ 有 $ n $ 个线性无关的特征向量,则 $ A = PDP^{-1} $,其中 $ D $ 为对角矩阵(对角元为特征值)
对称矩阵实对称矩阵的特征值为实数,且存在标准正交特征向量基
正定矩阵所有特征值 > 0

五、Python 代码实现


1. 基础计算:numpy.linalg.eig

importnumpyasnp# 定义一个方阵A=np.array([[4,2],[1,3]],dtype=float)# 计算特征值和特征向量eigenvalues,eigenvectors=np.linalg.eig(A)print("矩阵 A:\n",A)print("\n特征值 λ:",eigenvalues)print("\n特征向量(每列为一个特征向量):\n",eigenvectors)# 验证 Av = λvforiinrange(len(eigenvalues)):v=eigenvectors[:,i]Av=A @ v lambda_v=eigenvalues[i]*vprint(f"\n验证第{i+1}个特征对:")print("A v =",Av)print("λ v =",lambda_v)print("误差范数:",np.linalg.norm(Av-lambda_v))

输出示例:

特征值 λ: [5. 2.] 特征向量: [[ 0.89442719 -0.70710678] [ 0.4472136 0.70710678]]

2. 对称矩阵:使用eigh(更高效稳定)

对于实对称矩阵(如协方差矩阵),推荐使用np.linalg.eigh,它保证返回实数特征值,并按升序排列。

# 协方差矩阵(对称正定)C=np.array([[2,1],[1,2]],dtype=float)eigvals,eigvecs=np.linalg.eigh(C)# 'h' 表示 Hermitian(对称)print("特征值(升序):",eigvals)print("标准正交特征向量:\n",eigvecs)print("验证正交性 Q^T Q = I:\n",np.round(eigvecs.T @ eigvecs,10))

3. 可视化:2D 线性变换与特征向量

importmatplotlib.pyplotaspltdefplot_eigenvectors(A):vals,vecs=np.linalg.eig(A)# 创建网格点x=np.linspace(-2,2,10)y=np.linspace(-2,2,10)X,Y=np.meshgrid(x,y)points=np.vstack([X.ravel(),Y.ravel()])# 应用变换transformed=A @ points plt.figure(figsize=(10,4))# 原始空间plt.subplot(1,2,1)plt.quiver(points[0],points[1],np.zeros_like(points[0]),np.zeros_like(points[1]),angles='xy',scale_units='xy',scale=1,color='lightgray')foriinrange(vecs.shape[1]):v=vecs[:,i]plt.arrow(0,0,v[0],v[1],head_width=0.1,color='red',linewidth=2,label=f'v{i+1}')plt.title('原始空间(特征向量 in red)')plt.axis('equal')plt.grid(True)# 变换后空间plt.subplot(1,2,2)plt.quiver(transformed[0],transformed[1],np.zeros_like(transformed[0]),np.zeros_like(transformed[1]),angles='xy',scale_units='xy',scale=1,color='lightgray')foriinrange(vecs.shape[1]):v=vecs[:,i]Av=A @ v plt.arrow(0,0,Av[0],Av[1],head_width=0.1,color='blue',linewidth=2,label=f'A v{i+1}')plt.title('变换后空间(Av in blue)')plt.axis('equal')plt.grid(True)plt.tight_layout()plt.show()# 示例矩阵A=np.array([[3,1],[0,2]])plot_eigenvectors(A)

红色特征向量在变换后(蓝色)仍在同一直线上,仅长度变化!


4. 应用示例:主成分分析(PCA)核心

PCA 的本质是:对数据协方差矩阵求特征向量,最大特征值对应的特征向量即第一主成分

# 生成模拟数据np.random.seed(0)X=np.random.randn(100,2)@ np.array([[3,1],[1,1]])# 椭圆分布# 中心化X_centered=X-X.mean(axis=0)# 计算协方差矩阵C=np.cov(X_centered,rowvar=False)# 求特征值/向量eigvals,eigvecs=np.linalg.eigh(C)# 按特征值降序排序idx=np.argsort(eigvals)[::-1]eigvals=eigvals[idx]eigvecs=eigvecs[:,idx]print("协方差矩阵特征值:",eigvals)print("第一主成分方向:",eigvecs[:,0])# 可视化plt.scatter(X_centered[:,0],X_centered[:,1],alpha=0.6)origin=[0,0]plt.quiver(*origin,*eigvecs[:,0]*np.sqrt(eigvals[0]),color='r',scale=3,label='PC1')plt.quiver(*origin,*eigvecs[:,1]*np.sqrt(eigvals[1]),color='g',scale=3,label='PC2')plt.legend()plt.title('PCA: 主成分(特征向量)')plt.axis('equal')plt.grid(True)plt.show()

六、数值计算注意事项

问题建议
非对称矩阵使用eig,但特征值可能是复数
病态矩阵特征值对扰动敏感,可用 SVD 替代
大型稀疏矩阵使用scipy.sparse.linalg.eigs(只求部分特征对)
重复特征值可能无法得到完整特征向量基(缺陷矩阵)
fromscipy.sparse.linalgimporteigs# 大型稀疏矩阵(示例)fromscipy.sparseimportrandom A_sparse=random(1000,1000,density=0.01)# 求最大的 5 个特征值/向量vals,vecs=eigs(A_sparse,k=5,which='LM')# LM = Largest Magnitudeprint("最大5个特征值:",vals)

七、总结

概念核心思想
特征值/向量线性变换中“不变方向”及其伸缩因子
计算解 $ \det(A - \lambda I) = 0 $,再解齐次方程
对称矩阵特征值为实数,特征向量正交 → 可用于 PCA、谱聚类
应用降维、稳定性分析、振动模态、PageRank、量子力学等

💡记住:特征分解揭示了矩阵的“内在结构”。当你看到一个线性系统,问自己:“它的特征方向是什么?”——答案往往指向最本质的行为。

后续

python过渡项目部分代码已经上传至gitee,后续会逐步更新。

资料关注

公众号:咚咚王
gitee:https://gitee.com/wy18585051844/ai_learning

《Python编程:从入门到实践》
《利用Python进行数据分析》
《算法导论中文第三版》
《概率论与数理统计(第四版) (盛骤) 》
《程序员的数学》
《线性代数应该这样学第3版》
《微积分和数学分析引论》
《(西瓜书)周志华-机器学习》
《TensorFlow机器学习实战指南》
《Sklearn与TensorFlow机器学习实用指南》
《模式识别(第四版)》
《深度学习 deep learning》伊恩·古德费洛著 花书
《Python深度学习第二版(中文版)【纯文本】 (登封大数据 (Francois Choliet)) (Z-Library)》
《深入浅出神经网络与深度学习+(迈克尔·尼尔森(Michael+Nielsen)》
《自然语言处理综论 第2版》
《Natural-Language-Processing-with-PyTorch》
《计算机视觉-算法与应用(中文版)》
《Learning OpenCV 4》
《AIGC:智能创作时代》杜雨+&+张孜铭
《AIGC原理与实践:零基础学大语言模型、扩散模型和多模态模型》
《从零构建大语言模型(中文版)》
《实战AI大模型》
《AI 3.0》

http://www.cnnetsun.cn/news/83378.html

相关文章:

  • 毕业即就业!网络安全专业大学生必备的5大核心技能与实战指南
  • 知名外资对冲基金新需求:- QD/QR:HK,同业,有机器学习特别是深度学习方向经验的人选- Production Reliability Engineer:即SRE Operation部门的P
  • 12、游戏开发:用户界面与人工智能实现
  • 申请专利带来的好处
  • BilibiliSponsorBlock智能配置:一键告别B站广告干扰
  • 单细胞T细胞分析新突破:高效追踪免疫应答全流程
  • PDF补丁丁终极使用指南:PDFPatcher快速精通手册
  • 35、GnomeVFS 文件传输、类型识别与 URI 操作全解析
  • mysql修改密码
  • Git commit规范与TensorFlow项目协作开发的最佳实践
  • CVE-2025-55182和CVE-2025-66478漏洞(Next.js)
  • CRMEB-PHP商品采集模块开发指南:API对接与批量上架实现
  • 基于django微信小程序的校园食堂点餐订餐系统
  • LangFlow工作流引擎在多模态大模型中的调度作用
  • 32、开源系统在不同领域的高效应用案例剖析
  • VeraCrypt终极指南:5分钟掌握磁盘加密完整流程
  • ENSP抓包分析GPT-SoVITS API通信数据格式
  • 37、Solaris 文件与文件 I/O 深入解析
  • 45、内核可调参数、开关和限制及虚拟地址映射详解
  • AI市场舆情分析与量化风险:超越预测的2025年AI决策之道
  • Ivy统一AI框架:5步实现多框架代码无缝转换
  • Socket.IO-Client-Swift完整开发指南:从零构建实时iOS应用
  • LangFlow工作流导出为API接口的完整流程
  • 25、Linux 系统通信指南:网络连接、传真与调制解调器使用
  • 22、Linux系统中的提醒工具使用指南
  • 加密已死?不,它正在重生:为什么加密仍然是数据安全的终极堡垒
  • 【SS拓扑】基于移相控制的磁耦合谐振无线电能传输系统仿真附Simulink仿真
  • 26、负载均衡与高可用集群搭建指南
  • 告别单一工具化思维:如何构建覆盖全生命周期的零工管理体系?
  • 27、高可用性集群中ldirectord的配置与使用指南