【学习笔记】主成分分析
主成分分析 principle component analysis(pca)
现在有 个 维的数据,想把它们降到 维,得到一个 的矩阵,但是不能损失数据之间的差异性(不能说两个不同的数据投影到了同一个点上)。这里假设数据中 维里面每一维的平均值都是 ,否则减去再加回来,不受影响。
那么不难发现这肯定是让矩阵右乘一个大小为 的矩阵,进行一个线性空间的映射。
做法是构造一个 维数据的协方差矩阵(矩阵的行列表示的是数据的维度,手上的 个数据变成了观测点),求其特征值和特征向量,把前 大特征值对应的特征向量 concat 起来就得到了要被右乘的矩阵。
这么做的道理是什么?
我们希望点之间差异明显,也就是分得很散。“分得很散”这个状态可以使用方差来刻画。换言之,我们希望使用 维空间内的一组基来对这些点进行变换,原来“每个数据点对应的向量” 向 “ 个基向量”分别做映射 以得到在新空间里面的数据点。
那么先求出来一个 维向量使得数据点映射之后方差最大。如果再求一个方差次大的向量,可以对第一个向量旋转一个非常小的量,但是这样的向量没啥意义,或者说你得到的 个数据点中 维每维度大小几乎相等。那么对于在这一个维度上离得很近的两个数据点,就很难区分出来了。
于是我们要减小基向量的相关性,这个相关性我们使用协方差进行刻画,那么尝试找 个向量,满足原数据映射之后维度之间相关性最小,最小就是 。也就是向量互相垂直。问题变成了找 个正交向量,满足映射后方差是可选范围内最大~第 大的。(先满足正交基,在选择方差大的)我个人觉得肯定是可以研究其他的最优化目标的,但是做法想必就没有直接求协方差矩阵特征向量这么简单了。
图片里面的 至于是不是 其实是不影响的。
所以很显然, 是特征向量, 是特征值。找前 大的特征值和其对应的特征向量即可。
最后应该证明一下这些协方差矩阵的特征向量是正交的,不过这好像是实对称矩阵的性质:
-
实对称矩阵不同特征值对应的特征向量必然正交。
证明
假设 为 的两个不同的特征值,对应特征向量为 那么已知信息有
对于 同时转置得到 ,同时乘 得到
同理得到
显然两个等号左边都是数字,而 所以我们将两式相减得到 进而 ,向量正交。
-
设特征向量 重数为 ,则必然存在 个线性无关的特征向量对应于 ,因此可以将这 个特征向量单位正交化。
这个证明好像比较简单,我的理解是去皮。
【Appendix】
什么是协方差/协方差矩阵
协方差 co-variance: 对于两个有 个观测点 的随机变量 , 不难发现,协方差绝对值越大,表示两个向量相关性越强(对彼此的影响越大)。
为什么是 ?请自行百度 bessel 修正,我也不会,感性理解不了。
在 主成分分析 中, 个维度两两协方差构成了协方差矩阵。求 cov matrix 其实蛮简单,以 的数据矩阵为例,所有元素减去当列平均值之后得到 (更高大上的名字叫“零均值化”),那么 就是协方差矩阵
怎么求特征值和特征向量
对于一个 matrix A of size nn,我们希望它对一个向量 空间映射之后向量 还能保持在原方向。形式化的讲:
方程有非 解需要 那么可以写成关于 的一元 次方程,得到的 就是矩阵特征值。既然 那么 必然不唯一,对于任一 想得到一个合法的 是容易的。
【番外】
能不能读一遍,哪里没看懂水个评论行不行。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!