PCA为什么用协方差矩阵 而SVD不用

本文深入解析PCA(主成分分析)的数学原理,包括如何通过协方差矩阵和奇异值分解实现数据降维,解释为何PCA能确保投影后的数据在新坐标系中最大化方差,同时减少维度间相关性,达到降噪和去冗余的目的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PCA方法是数据降维的重要手段之一,方法比较简单,就是将样本数据求一个维度的协方差矩阵,然后求解这个协方差矩阵的特征值和对应的特征向量,将这些特征向量按照对应的特征值从大到小排列,组成新的矩阵,被称为特征向量矩阵,也可以称为投影矩阵,然后用改投影矩阵将样本数据转换。取前K维数据即可,实现对数据的降维。

       假设样本数据有r维(组成一个r维向量),共有n个样本。组成r*n矩阵A,矩阵每一列是一个样本,行是各个不同的特征维度。求解协方差矩阵S=AAT(最好先将A进行每个维度上的数据进行中心化A→C再求协方差矩阵S=CCT),S是r*r的方阵,用X(j)表示样本数据的第j维数据,则求解协方差矩阵

其中表示两个维度之间的协方差

很显然S是个对称矩阵,求解S的特征向量以及对应的特征值,按照特征值大小依次排列特征向量,将这些特征向量(列向量)组成一个矩阵,被称为转换矩阵或者投影矩阵。如果只取前K列特征向量组成的矩阵P,再把原样本数据用投影矩阵转换到新的坐标空间A’=PTA,可以实现数据的降维。

1.为什么要用协方差矩阵来做呢?

       PCA为什么要用协方差矩阵的特征向量矩阵来做投影矩阵呢?这样做出来的投影矩阵一定能保证样本数据投影到另一个坐标系后,前几个坐标的值保证是最大特征?

原因很简单,假设X是已经中心化过(PCA要求数据中心化)的数据矩阵,而SVD不需要这么做。

 

2.为什么PCA可以通过分解协方差矩阵计算,也可以通过分解内积矩阵计算?”

原因很简单,假设X是已经中心化过(PCA要求数据中心化)的数据矩阵,每列都是一个样本,那么协方差矩阵是\frac{1}{n} XX^T,而PCA的目标函数是

\max_W tr(W^TXX^TW) \\ s.t. W^TW = I

W 就是要求的投影矩阵,一般可以通过求XX^T的特征向量求解。

X = D \Sigma V^T(SVD分解),则有XX^T = D\Sigma^2 D^T(可以看出D就是特征向量),因此可以知道

W = D,用求得的这个投影矩阵对X做投影得到低维的矩阵 Y = W^TX,也就是常用的PCA降维过程

易知 Y = W^TX = D^TD \Sigma V^T = \Sigma V^T ,又有 X^TX = V\Sigma^2 V^T,所以,我们可以对X^TX这个内积矩阵求特征向量V和特征值\Sigma 就可以得到Y = \Sigma V^T

所以,分解协方差矩阵 或 内积矩阵X^TX 都可以求解PCA

降维的目的就是“降噪”和“去冗余”。“降噪”的目的就是使保留下来的维度间的相关性尽可能小,而“去冗余”的目的就是使保留下来的维度含有的“能量”即方差尽可能大。那首先的首先,我们得需要知道各维度间的相关性以及个维度上的方差啊!那有什么数据结构能同时表现不同维度间的相关性以及各个维度上的方差呢?自然是协方差矩阵! 
协方差矩阵度量的是维度与维度之间的关系,而非样本与样本之间。协方差矩阵的主对角线上的元素是各个维度上的方差(即能量),其他元素是两两维度间的协方差(即相关性)。我们要的东西协方差矩阵都有了。

 

(奇异值分解)

矩阵经过SVD分解后生成三个矩阵,这块就不细说了,下面主要来分析两者之间的异同点(严格的说是SVD和特征值分解之间的异同):同:1、SVD中的对焦矩阵中的值(奇异值)就是协方差矩阵特征分解的特征值的平方根(因此SVD运算速度更快),2、可以找到一个标准正交矩阵,将特征值分解写成SVD的形式,类似P-1P(AAT)PTP= P-1ΛP 即S=AAT= P-1ΛP, :异:1、SVD不用计算协方差这一步,直接对矩阵C进行奇异值分解,而PCA需要通过计算协方差矩阵,然后在进行特征值分解。2、特征值分解只能对方阵进行分解,而SVD都可以。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值