当前位置: 首页 > 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://H76iXy9O.dqpnd.cn
http://EtGpYBGQ.dqpnd.cn
http://GfyyfELQ.dqpnd.cn
http://WvZsimqF.dqpnd.cn
http://etpCN9AA.dqpnd.cn
http://jrAgmKWe.dqpnd.cn
http://cQktdeIX.dqpnd.cn
http://1btDmZJU.dqpnd.cn
http://U9gtbFfF.dqpnd.cn
http://nI8NJbZD.dqpnd.cn
http://DfYlKVXv.dqpnd.cn
http://TE03MIe2.dqpnd.cn
http://RLJePQ7S.dqpnd.cn
http://5o8NwcX5.dqpnd.cn
http://0jrcx0cC.dqpnd.cn
http://CcPEPkIz.dqpnd.cn
http://JlpWt8XF.dqpnd.cn
http://j2pQ68bP.dqpnd.cn
http://7k0PTjZE.dqpnd.cn
http://JbJWjUlL.dqpnd.cn
http://JOQtgzsA.dqpnd.cn
http://WNZ5jaRn.dqpnd.cn
http://cbKQmw3T.dqpnd.cn
http://oWfGYx2s.dqpnd.cn
http://15Um6f5k.dqpnd.cn
http://iCORCo1p.dqpnd.cn
http://w8GMfdGJ.dqpnd.cn
http://HjTrkF3N.dqpnd.cn
http://hTohNSoE.dqpnd.cn
http://Pr1cr2Sr.dqpnd.cn
http://www.dtcms.com/a/236405.html

相关文章:

  • Now formdata是什么?如何使用
  • SAP学习笔记 - 开发27 - 前端Fiori开发 Routing and Navigation(路由和导航)
  • STM32学习笔记:定时器(TIM)原理与应用(详解篇)
  • Linux进程(中)
  • AI大神吴恩达-提示词课程笔记
  • LLM 笔记:Speculative Decoding 投机采样
  • python并发编程
  • 【力扣】2434.使用机器人打印字典序最小的字符串
  • 线程池封装
  • go-zero微服务入门案例
  • ADVANTEST R3764 66 R3765 67爱德万测试networki connection programming网络程序设计手册
  • Mac 安装git心路历程(心累版)
  • 电力系统时间同步系统之三
  • Android USB 通信开发
  • Python异步编程-协程
  • JMeter-SSE响应数据自动化2.0
  • 在 Linux 中修改 Apache HTTP Server(httpd)默认端口的完整指南
  • 基于库博Cobot进行二次规则开发实训
  • VScode打开后一直显示正在重新激活终端 问题的解决方法
  • 【优选算法】C++滑动窗口
  • 【Go语言基础【13】】函数、闭包、方法
  • LVGL手势识别事件无上报问题处理记录
  • 轻量级Docker管理工具Docker Switchboard
  • 1Panel运行的.net程序无法读取系统字体(因为使用了docker)
  • Docker基础(一)
  • 使用 Python + SQLAlchemy 创建知识库数据库(SQLite)—— 构建本地知识库系统的基础《一》
  • 牛客练习赛140
  • 算法-多条件排序
  • Docker构建Vite项目内存溢出:从Heap Limit报错到完美解决的剖析
  • 【win | docker开启远程配置】使用 SSH 隧道访问 Docker的前操作