kNN的维数灾难与PCA降维

主成分分析 PCA

协方差矩阵

假设我们有

\[X = \begin{pmatrix}X_1\\X_2\\\vdots\\X_m\end{pmatrix}\in\mathbb{R}^{m\times n} \]

那么协方差矩阵

\[C_x= \dfrac{1}{n-1}XX^T = \dfrac{1}{n-1}\begin{pmatrix}X_1X_1^T & X_1X_2^T & \cdots & X_1X_m^T\\X_2X_1^T & X_2X_2^T&\cdots & X_2X_m^T\\\vdots&\vdots&\ddots&\vdots\\X_mX_1^T&X_mX_2^T&\cdots&X_mX_m^T\end{pmatrix}\in\mathbb{R}^{m\times m} \]

可以发现主对角线上全部是方差,其余位置是协方差。其实可以把方差看成特别的协方差。方差衡量了一组数据时离散程度,而协方差则度量了两个变量之间的关联性。协方差表示的是两个变量的总体的误差,这与只表示一个变量误差的方差不同。 如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。 如果两个变量的变化趋势相反,即其中一个大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。

主成分分析

主成分分析主要用于降维,降维需要减少信息冗余,但是也要保证重要的信息不丢失。主成分分析采用线性变换来达到获取各成分的目的。可想而知,我们需要各成分之间独立不相关,而内部尽可能的分散。这分别对应的协方差和方差。更加形式化的表达为,需要找到一个矩阵\(P\),使得

\[C_x= \dfrac{1}{n-1}(PX)(PX)^T = \dfrac{1}{n-1}P(XX^T)P^T \]

的主对角线上的元素尽可能的大,而其余的元素为0。现在问题来了,怎么找到这样的P。好在我们的\(C_x\)是一个对称矩阵,其有着很好的性质,可以进行分解:

\[S = EDE^T \]

其中S是一个对称矩阵,D是由S的特征值构成的对角阵,E是由S的特征向量构成的矩阵。说了这么多,我们怎么去找到P?

我们令

\[S = XX^T \]

那么有

\[C_x= \dfrac{1}{n-1}PSP^T=\dfrac{1}{n-1}P(EDE^T)P^T \]

\(P = E^T\)时,\(C_x\)不就恰好为我们想要的对角阵么。我们可以选择\(D\)最大的前K个特征向量,组成\(P\),即可达到降维的目的了。

posted @ 2018-10-24 10:39  狂徒归来  阅读(1384)  评论(0编辑  收藏  举报