【学习笔记】主成分分析

主成分分析 principle component analysis(pca)

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

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

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

这么做的道理是什么?

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

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

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

image

图片里面的 \(\frac 1m\) 至于是不是 \(\frac{1}{m-1}\) 其实是不影响的。

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

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

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

    证明

    假设 \(a_1,a_2\)\(A\) 的两个不同的特征值,对应特征向量为 \(v_1,v_2\) 那么已知信息有 \(A^T=A,Av_i=a_iv_i\)

    对于 \(A v_1=a_1v_1\) 同时转置得到 \(v_1^TA^T=a_1v_1^T\),同时乘 \(v_2\) 得到 \(v_1^T A v_2 = a_1 v_1^T v_2\)

    同理得到 \(v_2^T A v_1 = a_2 v_2^T v_1\)

    显然两个等号左边都是数字,而 \(((v_2^T A) v_1)^T = v_1^T A v_2\) 所以我们将两式相减得到 $(a_1-a_2) v_1^T v_2 = 0 $ 进而 \(v_1^T v_2 =0\),向量正交。

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

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

【Appendix】

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

协方差 co-variance: 对于两个有 \(n\) 个观测点 \(\{(X_i,Y_i)\}_{i=1}^n\) 的随机变量 \(X,Y\),\(cov(X,Y)=\frac 1{n-1}\sum_{i=1}^n (X_i-\bar X)(Y_i-\bar Y)\) 不难发现,协方差绝对值越大,表示两个向量相关性越强(对彼此的影响越大)。

为什么是 \(\frac{1}{n-1}\)?请自行百度 bessel 修正,我也不会,感性理解不了。

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

怎么求特征值和特征向量

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

方程有非 \(0\) 解需要 \(|A-\lambda I_n|=0\) 那么可以写成关于 \(\lambda\) 的一元 \(n\) 次方程,得到的 \(\lambda_1\dots \lambda_n\) 就是矩阵特征值。既然 \(|A-\lambda I_n|=0\) 那么 \(x\) 必然不唯一,对于任一 \(\lambda_i\) 想得到一个合法的 \(x\) 是容易的。

【番外】

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

posted @ 2024-01-20 09:50  没学完四大礼包不改名  阅读(96)  评论(2)    收藏  举报