【学习笔记】主成分分析

主成分分析 principle component analysis(pca)

现在有 mn 维的数据,想把它们降到 k 维,得到一个 m×k 的矩阵,但是不能损失数据之间的差异性(不能说两个不同的数据投影到了同一个点上)。这里假设数据中 n 维里面每一维的平均值都是 0,否则减去再加回来,不受影响。

那么不难发现这肯定是让矩阵右乘一个大小为 n×k 的矩阵,进行一个线性空间的映射。

做法是构造一个 n 维数据的协方差矩阵(矩阵的行列表示的是数据的维度,手上的 m 个数据变成了观测点),求其特征值和特征向量,把前 k 大特征值对应的特征向量 concat 起来就得到了要被右乘的矩阵。

这么做的道理是什么?

我们希望点之间差异明显,也就是分得很散。“分得很散”这个状态可以使用方差来刻画。换言之,我们希望使用 k 维空间内的一组基来对这些点进行变换,原来“每个数据点对应的向量” 向 “k 个基向量”分别做映射 以得到在新空间里面的数据点。

那么先求出来一个 k 维向量使得数据点映射之后方差最大。如果再求一个方差次大的向量,可以对第一个向量旋转一个非常小的量,但是这样的向量没啥意义,或者说你得到的 m 个数据点中 k 维每维度大小几乎相等。那么对于在这一个维度上离得很近的两个数据点,就很难区分出来了。

于是我们要减小基向量的相关性,这个相关性我们使用协方差进行刻画,那么尝试找 k 个向量,满足原数据映射之后维度之间相关性最小,最小就是 0。也就是向量互相垂直。问题变成了找 k 个正交向量,满足映射后方差是可选范围内最大~第 k 大的。(先满足正交基,在选择方差大的)我个人觉得肯定是可以研究其他的最优化目标的,但是做法想必就没有直接求协方差矩阵特征向量这么简单了。

image

图片里面的 1m 至于是不是 1m1 其实是不影响的。

所以很显然,w 是特征向量,λ 是特征值。找前 k 大的特征值和其对应的特征向量即可。

最后应该证明一下这些协方差矩阵的特征向量是正交的,不过这好像是实对称矩阵的性质:

  • 实对称矩阵不同特征值对应的特征向量必然正交。

    证明

    假设 a1,a2A 的两个不同的特征值,对应特征向量为 v1,v2 那么已知信息有 AT=A,Avi=aivi

    对于 Av1=a1v1 同时转置得到 v1TAT=a1v1T,同时乘 v2 得到 v1TAv2=a1v1Tv2

    同理得到 v2TAv1=a2v2Tv1

    显然两个等号左边都是数字,而 ((v2TA)v1)T=v1TAv2 所以我们将两式相减得到 (a1a2)v1Tv2=0 进而 v1Tv2=0,向量正交。

  • 设特征向量 λ 重数为 r,则必然存在 r 个线性无关的特征向量对应于 λ ,因此可以将这 r个特征向量单位正交化。

    这个证明好像比较简单,我的理解是去皮。

【Appendix】

什么是协方差/协方差矩阵

协方差 co-variance: 对于两个有 n 个观测点 {(Xi,Yi)}i=1n 的随机变量 X,Y,cov(X,Y)=1n1i=1n(XiX¯)(YiY¯) 不难发现,协方差绝对值越大,表示两个向量相关性越强(对彼此的影响越大)。

为什么是 1n1?请自行百度 bessel 修正,我也不会,感性理解不了。

在 主成分分析 中,n 个维度两两协方差构成了协方差矩阵。求 cov matrix 其实蛮简单,以 m×n 的数据矩阵为例,所有元素减去当列平均值之后得到 A(更高大上的名字叫“零均值化”),那么 1m1ATA 就是协方差矩阵

怎么求特征值和特征向量

对于一个 matrix A of size n×n,我们希望它对一个向量 x 空间映射之后向量 x 还能保持在原方向。形式化的讲:Ax=λx(AλIn)x=0

方程有非 0 解需要 |AλIn|=0 那么可以写成关于 λ 的一元 n 次方程,得到的 λ1λn 就是矩阵特征值。既然 |AλIn|=0 那么 x 必然不唯一,对于任一 λi 想得到一个合法的 x 是容易的。

【番外】

能不能读一遍,哪里没看懂水个评论行不行。

posted @   没学完四大礼包不改名  阅读(53)  评论(2编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示