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

PCA笔记


✅ 问题本质:为什么让矩阵 TT 的行列式为 1?

这个问题通常出现在我们对数据做**线性变换(旋转/缩放)**的时候,比如在 PCA 中把数据从原始坐标系变换到主成分方向时。


📌 回顾一下背景

在 PCA 中,我们把数据从原始空间变换为新的坐标系(主成分空间):

Y=TTXY = T^T X

其中:

  • XX 是数据(每行一个样本)

  • TT 是变换矩阵,它由一组正交单位向量(主成分方向)组成

  • TTT^T 是它的转置

  • YY 是新坐标下的数据


🔍 那为什么希望 det⁡(T)=1\det(T) = 1 呢?

这不是“必须”的要求,但我们通常希望它满足这个条件,原因如下:


✅ 1. 维持体积不变(保持几何意义)

  • 如果你对空间进行线性变换,行列式告诉你体积改变了多少倍。

  • det⁡(T)=1\det(T) = 1 意味着体积保持不变。

举个例子:

  • 如果你对二维平面的一组点进行线性变换

  • ∣det⁡(T)∣=2|\det(T)| = 2:面积变成 2 倍了

  • ∣det⁡(T)∣=1|\det(T)| = 1:面积保持不变 ✅

所以我们倾向于找不改变体积/能量的变换矩阵


✅ 2. 在正交矩阵中,det⁡(T)=±1\det(T) = \pm 1

  • PCA 中的变换矩阵 TT 是由正交向量组成的,所以 TT 是一个正交矩阵

  • 正交矩阵的行列式一定是 ±1\pm 1

  • 为了不引入“镜像”翻转(比如坐标轴翻了个面),我们通常取 正的那个解

所以:

我们会约定选择行列式为 +1+1 的正交矩阵,避免反转坐标方向。


✅ 3. 保持方差解释的纯粹性

PCA 的目标是:

  • 把数据投影到新坐标轴

  • 保证数据投影后的方差最大

如果 TT 的行列式不是 1(比如是 2),那变换后的数据整体就会被“拉伸”,导致:

  • 所有方向的方差都膨胀了,不利于比较

所以我们更倾向于:

  • 使用单位长度的正交向量

  • 保证变换保持原始方差比例


✅ 总结一句话

我们令 det(T) = 1,是为了让变换矩阵 TT 在几何上保持体积不变、在统计上保持数据方差解释的一致性,并避免出现镜像翻转的变换。

这既是数学上的约定,也是应用中的合理选择。


http://www.lqws.cn/news/206407.html

相关文章:

  • phosphobot开源程序是控制您的 SO-100 和 SO-101 机器人并训练 VLA AI 机器人开源模型
  • ​线路板快速打样服务中的交期管理策略:猎板PCB的极速交付实践​​
  • Redis:Hash数据类型
  • Redis线程安全深度解析:单线程模型的并发智慧
  • 黑马点评【基于redis实现共享session登录】
  • GPU集群故障分析:大型AI训练中的硬件问题与影响
  • Redis高可用架构
  • 【Go核心编程】第十三章:接口与多态——灵活性的艺术
  • 安卓基础(Java 和 Gradle 版本)
  • Android USB 通信开发
  • LeetCode 118 杨辉三角 (Java)
  • Python项目中添加环境配置文件
  • python如何统计图片的颜色分布
  • Spark 之 AQE
  • CentOS 7.9安装Nginx1.24.0时报 checking for LuaJIT 2.x ... not found
  • [Go]context上下文--使用要点--源码分析--Go核心--并发编程
  • Ubuntu挂载本地镜像源(像CentOS 一样挂载本地镜像源)
  • SAP学习笔记 - 开发27 - 前端Fiori开发 Routing and Navigation(路由和导航)
  • 基于Python学习《Head First设计模式》第六章 命令模式
  • Redis :String类型
  • 1Panel运行的.net程序无法读取系统字体(因为使用了docker)
  • 深入剖析Nginx:从入门到高并发架构实战
  • Oracle业务用户的存储过程个数及行数统计
  • ClusterRole 和 ClusterRoleBinding 的关系及使用
  • python调用其它程序 os.system os.subprocess
  • SpringBoot-16-MyBatis动态SQL标签之if和where
  • 第1讲、包管理和环境管理工具Conda 全面介绍
  • 使用Python和Flask构建简单的机器学习API
  • 【Java学习笔记】StringBuilder类(重点)
  • C#使用MindFusion.Diagramming框架绘制流程图(2):流程图示例