杭州的互联网企业,网站seo评测,试用网站空间,做网站在手机端预览乱码了人工智能之数学基础 线性代数
第四章 矩阵分解 文章目录人工智能之数学基础 线性代数前言一、为什么需要矩阵分解#xff1f;二、1. 奇异值分解#xff08;Singular Value Decomposition, SVD#xff09;✅ 定义#x1f310; 几何意义#x1f527; 应用场景#x1f4bb;…人工智能之数学基础 线性代数第四章 矩阵分解文章目录人工智能之数学基础 线性代数前言一、为什么需要矩阵分解二、1. 奇异值分解Singular Value Decomposition, SVD✅ 定义 几何意义 应用场景 Python 实现️ 应用图像压缩SVD 截断三、2. LU 分解LU Decomposition✅ 定义 应用场景 Python 实现使用 SciPy四、3. QR 分解QR Decomposition✅ 定义 应用场景 Python 实现五、4. 特征分解Eigendecomposition✅ 定义 Python 实现六、分解方法对比总结七、进阶使用分解求伪逆Moore-Penrose 逆八、结语后续资料关注前言矩阵分解Matrix Factorization是将一个矩阵表示为若干个结构更简单或具有特定性质的矩阵乘积的过程。它是数值线性代数、机器学习、信号处理、优化等领域的核心工具。本文将系统介绍奇异值分解SVD、LU 分解、QR 分解和特征分解Eigendecomposition并提供完整的PythonNumPy/SciPy代码实现。一、为什么需要矩阵分解简化计算如求解线性方程组A x b Ax bAxb揭示结构如 SVD 揭示数据的主方向降维与压缩如 PCA 基于 SVD数值稳定性避免直接求逆算法加速利用稀疏性或正交性二、1. 奇异值分解Singular Value Decomposition, SVD✅ 定义对任意矩阵 $ A \in \mathbb{R}^{m \times n} $不要求方阵存在分解A U Σ V T A U \Sigma V^TAUΣVT其中$U \in \mathbb{R}^{m \times m} ∗ ∗ 左奇异向量矩阵 ∗ ∗ 列向量正交 **左奇异向量矩阵**列向量正交∗∗左奇异向量矩阵∗∗列向量正交(U^T U I$$ V \in \mathbb{R}^{n \times n} ∗ ∗ 右奇异向量矩阵 ∗ ∗ 列向量正交 **右奇异向量矩阵**列向量正交∗∗右奇异向量矩阵∗∗列向量正交(V^T V I$$\Sigma \in \mathbb{R}^{m \times n} $奇异值矩阵对角线上为非负实数σ 1 ≥ σ 2 ≥ ⋯ ≥ σ r 0 \sigma_1 \geq \sigma_2 \geq \cdots \geq \sigma_r 0σ1≥σ2≥⋯≥σr0( r rank ( A ) (r \text{rank}(A)(rrank(A)其余为 0奇异值σ i λ i \sigma_i \sqrt{\lambda_i}σiλi其中λ i \lambda_iλi是A T A A^T AATA或A A T AA^TAAT的特征值。 几何意义SVD 将任意线性变换分解为三步旋转/反射V T V^TVT沿坐标轴缩放Σ \SigmaΣ再次旋转/反射U UU 应用场景主成分分析PCA图像压缩推荐系统如 Netflix 算法伪逆计算最小二乘解降噪 Python 实现importnumpyasnpimportmatplotlib.pyplotasplt# 示例矩阵非方阵Anp.array([[3,1,1],[-1,3,1]],dtypefloat)# 完整 SVDU,s,VTnp.linalg.svd(A)Sigmanp.zeros_like(A,dtypefloat)np.fill_diagonal(Sigma,s)print(A \n,A)print(\nU \n,U)print(\n奇异值 s ,s)print(\nΣ \n,Sigma)print(\nV^T \n,VT)# 验证 A ≈ U Σ V^TA_reconstructedU Sigma VTprint(\n重建误差 ||A - UΣV^T||_F ,np.linalg.norm(A-A_reconstructed,fro))# 经济型 SVD更高效U_econ,s_econ,VT_econnp.linalg.svd(A,full_matricesFalse)print(\n经济型 SVD 形状:,U_econ.shape,s_econ.shape,VT_econ.shape)️ 应用图像压缩SVD 截断fromPILimportImage# 读取灰度图像imgImage.open(lena.png).convert(L)# 替换为你的图片路径Anp.array(img,dtypefloat)# SVDU,s,VTnp.linalg.svd(A)# 保留前 k 个奇异值k50A_kU[:,:k] np.diag(s[:k]) VT[:k,:]# 显示plt.figure(figsize(12,4))plt.subplot(1,3,1);plt.imshow(A,cmapgray);plt.title(原始图像)plt.subplot(1,3,2);plt.imshow(A_k,cmapgray);plt.title(fk{k}的近似)plt.subplot(1,3,3);plt.plot(s);plt.title(奇异值衰减);plt.xlabel(索引);plt.ylabel(σ)plt.tight_layout()plt.show()print(f压缩率: 原始{A.size}元素 → 存储{k*(A.shape[0]A.shape[1]1)}元素)三、2. LU 分解LU Decomposition✅ 定义对方阵$ A \in \mathbb{R}^{n \times n} $若其所有顺序主子式非零则可分解为A L U A L UALU其中$ L $下三角矩阵Lower triangular对角线通常为 1Doolittle 分解$ U $上三角矩阵Upper triangular实际中常使用带行交换的 LU 分解PA LU其中P PP是置换矩阵提高数值稳定性。 应用场景高效求解多个右端项的线性方程组A x b 1 , b 2 , … Ax b_1, b_2, \dotsAxb1,b2,…计算行列式det ( A ) ∏ i U i i \det(A) \prod_i U_{ii}det(A)∏iUii求矩阵逆 Python 实现使用 SciPyimportnumpyasnpfromscipy.linalgimportlu Anp.array([[2,1,1],[4,3,3],[8,7,9]],dtypefloat)# PA LUP,L,Ulu(A)print(A \n,A)print(\nP \n,P)print(\nL \n,L)print(\nU \n,U)print(\n验证 PA LU:\n,np.allclose(P A,L U))# 求解 Ax bbnp.array([1,2,3],dtypefloat)# 步骤PAx Pb → LUx Pb# 先解 Ly Pb前向代入再解 Ux y后向代入fromscipy.linalgimportsolve_triangular PbP b ysolve_triangular(L,Pb,lowerTrue)xsolve_triangular(U,y,lowerFalse)print(\n解 x ,x)print(验证 Ax b:,np.allclose(A x,b))四、3. QR 分解QR Decomposition✅ 定义对任意矩阵 $ A \in \mathbb{R}^{m \times n} $( m ≥ n (m \geq n(m≥n存在分解A Q R A Q RAQR其中$Q \in \mathbb{R}^{m \times m} ∗ ∗ 正交矩阵 ∗ ∗ **正交矩阵**∗∗正交矩阵∗∗Q^T Q I$$R \in \mathbb{R}^{m \times n} $上三角矩阵经济型 QR$Q \in \mathbb{R}^{m \times n}, R \in \mathbb{R}^{n \times n} $ 应用场景求解最小二乘问题特征值计算QR 算法Gram-Schmidt 正交化的稳定实现 Python 实现importnumpyasnpfromscipy.linalgimportqr Anp.array([[1,1],[1,0],[0,1]],dtypefloat)# 完整 QRQ_full,R_fullqr(A,modefull)# 经济型 QRQ,Rqr(A,modeeconomic)print(A \n,A)print(\nQ (经济型) \n,Q)print(\nR \n,R)print(\n验证 A QR:,np.allclose(A,Q R))print(Q 正交性 Q^T Q I:\n,np.round(Q.T Q,10))# 用 QR 解最小二乘min ||Ax - b||bnp.array([2,1,3],dtypefloat)# Ax b → QRx b → Rx Q^T bxsolve_triangular(R,Q.T b)print(\n最小二乘解 x ,x)print(残差范数:,np.linalg.norm(A x-b))五、4. 特征分解Eigendecomposition✅ 定义对可对角化方阵$ A \in \mathbb{R}^{n \times n} $若存在n nn个线性无关特征向量则A Q Λ Q − 1 A Q \Lambda Q^{-1}AQΛQ−1其中$Q $特征向量矩阵每列为一个特征向量$ \Lambda $对角矩阵对角元为特征值若A AA是实对称矩阵则Q QQ可选为正交矩阵即A Q Λ Q T A Q \Lambda Q^TAQΛQT Python 实现importnumpyasnp# 对称矩阵保证可正交对角化Anp.array([[4,2],[2,3]],dtypefloat)# 使用 eigh对称矩阵专用eigvals,Qnp.linalg.eigh(A)Lambdanp.diag(eigvals)print(A \n,A)print(\nΛ \n,Lambda)print(\nQ \n,Q)print(\n验证 A Q Λ Q^T:,np.allclose(A,Q Lambda Q.T))六、分解方法对比总结分解类型适用矩阵形式关键性质主要用途SVD任意m × n m \times nm×nA U Σ V T A U \Sigma V^TAUΣVTU , V U, VU,V正交Σ \SigmaΣ对角非负降维、压缩、伪逆、PCALU方阵通常非奇异P A L U PA LUPALUL LL下三角U UU上三角解线性方程组、行列式QR任意m × n m \times nm×nm ≥ n m \ge nm≥nA Q R A QRAQRQ QQ正交R RR上三角最小二乘、特征值算法特征分解可对角化方阵A Q Λ Q − 1 A Q \Lambda Q^{-1}AQΛQ−1Λ \LambdaΛ对角动力系统、PCA协方差矩阵七、进阶使用分解求伪逆Moore-Penrose 逆对于任意矩阵A AA其伪逆为A V Σ U T A^ V \Sigma^ U^TAVΣUT其中Σ \Sigma^Σ是将Σ \SigmaΣ中非零奇异值取倒数并转置。# 用 SVD 计算伪逆U,s,VTnp.linalg.svd(A,full_matricesFalse)# 构造 Σ⁺s_invnp.array([1/siifsi1e-10else0forsiins])A_pinvVT.T np.diag(s_inv) U.T# 对比 NumPy 内置函数A_pinv_npnp.linalg.pinv(A)print(伪逆一致,np.allclose(A_pinv,A_pinv_np))八、结语矩阵分解是连接理论与应用的桥梁SVD是最通用、最强大的工具适用于任何矩阵LU/QR是数值线性代数的基石用于高效求解方程特征分解揭示了方阵的内在动力学。后续python过渡项目部分代码已经上传至gitee后续会逐步更新。资料关注公众号咚咚王giteehttps://gitee.com/wy18585051844/ai_learning《Python编程从入门到实践》《利用Python进行数据分析》《算法导论中文第三版》《概率论与数理统计第四版 (盛骤) 》《程序员的数学》《线性代数应该这样学第3版》《微积分和数学分析引论》《西瓜书周志华-机器学习》《TensorFlow机器学习实战指南》《Sklearn与TensorFlow机器学习实用指南》《模式识别第四版》《深度学习 deep learning》伊恩·古德费洛著 花书《Python深度学习第二版(中文版)【纯文本】 (登封大数据 (Francois Choliet)) (Z-Library)》《深入浅出神经网络与深度学习(迈克尔·尼尔森MichaelNielsen》《自然语言处理综论 第2版》《Natural-Language-Processing-with-PyTorch》《计算机视觉-算法与应用(中文版)》《Learning OpenCV 4》《AIGC智能创作时代》杜雨张孜铭《AIGC原理与实践零基础学大语言模型、扩散模型和多模态模型》《从零构建大语言模型中文版》《实战AI大模型》《AI 3.0》