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

pytorch学习之矩阵分解

系列文章目录


文章目录

  • 系列文章目录
  • 一、矩阵分解理论知识
    • 1 EVD 分解与 PCA
    • SVA 分解与LDA


一、矩阵分解理论知识

  深度学习的矩阵分解常用的如下分解方式:

  • LU 分解:将矩阵分成上三角矩阵 L 和下三角矩阵 U,然后乘积。
  • QR分解:将原始矩阵分解成一个正交矩阵 Q 和一个上三角矩阵 R,然后乘积。
  • EVD 分解:特征值分解
  • SVD 分解:奇异值分解

   LU分解更多的使用在计算行列式和方程组的解的问题,他的本质和高斯消元法差不多。QR分解在论文中可能会见到,EVD 分解对应 PCA 降维,SVD 对应 LDA 算法。这里主要介绍一下 EVD 特征值分解和 SVD 奇异值分解。

1 EVD 分解与 PCA

   矩阵必须是方阵并且满秩(非奇异值矩阵),特征值分解,把矩阵分解成特征值和特征向量之积 A ξ ⃗ = λ ξ ⃗ A\vec{\xi} = \lambda\vec{\xi} Aξ =λξ ,一半而言,我们采用的是正交分解: A = Q B Q − 1 A = QBQ^{-1} A=QBQ1,其中Q是特征值对应的特征向量,B就是特征值构成的矩阵。这里,我们不得不说 PCA 算法了:

  • 将 n 维特征值映射到 k 维上,而这 k 维向量就是我们的正交向量其中的一部分,俗称主成分。
  • PCA 算法的优化目标:
    – 降维后,同一纬度的方差最大。
    – 不同纬度之间的相关性为零。这两点就可以采用协方差矩阵来衡量。
      这样做的理由用线性代数来解释,我们通过正交矩阵来分解,得到的特征向量可以作为空间坐标的基,以此来重构向量,任何一个向量都可以用这组基来表示。为什么会降维,根据特征值,有些小的特征值或许是噪点,我们应该抛弃对应的特征向量,所以 n 个特征向量可能降维到 k 个特征向量。

SVA 分解与LDA

 &emsp奇异值分解的形式如下: A = P B V − 1 A = PBV^{-1} A=PBV1,A的规模是 m x m,B的规模是 m x n,B由特征值构成,V 的规模是 n x n. LDA算法在判别或者鉴别中常用,如岭回归。 y = w T b y = w^Tb y=wTb ,把所有的样本映射到这条直线上面,类的中心点要求:

  • 同一类的样本距离尽可能小
  • 不同类别的样本距离尽可能大
    J ( w ) = w T S B w w T S W w (1) J(w) = \frac{w^TS_Bw}{w^TS_Ww\tag{1}} J(w)=wTSWwwTSBw(1)

这个就是优化函数, S B S_B SB 是类间的协方差, S W S_W SW类内协方差。协方差有两个作用:

  1. 表示两个变量之间的线性相关性,协方差越大,相关性越强。
  2. 表示样本之间的离散程度,协方差越小说明样本聚合程度越高。

很显然我们在这里使用第二种作用。J 就是优化函数,求最大值。
S W − 1 S B W = λ W (2) S_{W}^{-1}S_BW = \lambda W \tag{2} SW1SBW=λW(2)
   S W − 1 S B S_{W}^{-1}S_B SW1SB 这个可以看作 A,而 W 矩阵可以看作特征向量,λ 可以看作特征值,此时 W 也可以认为是主要成分。注意:矩阵分解并不是特征降维,我们特征降维,根据矩阵分解,删除一些特征值和对应的特征向量从而到达降维的目的。

torch.svd() 这个就是 python 代码

http://www.xdnf.cn/news/10624.html

相关文章:

  • 在Linux中配置内网可访问的YUM光盘源
  • Python实例题:自联想器的Python实现
  • 【存储基础】存储设备和服务器的关系和区别
  • UE特效Niagara性能分析
  • 【保姆级教程】PDF批量转图文笔记
  • SystemVerilog—Interface语法(二)
  • 谷粒商城-分布式微服务项目-高级篇[三]
  • 华为云Flexus+DeepSeek征文|华为云 Dify 打造智慧水果分析助手,实现“知识库 + 大模型”精准赋能
  • MybatisPlus(含自定义SQL、@RequiredArgsConstructor、静态工具类Db)
  • mac电脑安装 nvm 报错如何解决
  • 【华为云Astro Zero】组装设备管理页面开发(图形拖拽 + 脚本绑定)
  • 【更正补全】edu教育申请通过方案
  • vLLM实战部署embedding、reranker、senseVoice、qwen2.5、qwen3模型
  • STM32G4 电机外设篇(四)DAC输出电流波形 + CAN通讯
  • mybatis03
  • neo4j 5.19.0两种基于向量进行相似度查询的方式
  • new语法
  • TDengine 高级功能——读缓存
  • R语言基础| 创建数据集
  • 常见 Web 安全问题
  • MySQL数据库从0到1
  • Java设计模式之备忘录模式详解
  • 第九章:LLMOps自动化流水线:释放CI/CD/CT的真正力量
  • OpenRouter使用指南
  • Git-flow流
  • react实现markdown文件预览
  • 关于海洋数据上云的一些机遇与挑战
  • python中if __name__ == ‘__main__‘ 的作用再谈
  • ffmpeg 的视频格式转换 c# win10
  • 【C语言】C语言经典小游戏:贪吃蛇(下)