今天对PCA有了另一种理解的感觉和方式
方阵可以进行特征值分解C = VLVT, 其中VT中的向量就代表了原矩阵中列向量(即特征)的方差分布的方向。将特征值由大到小进行排列所对应的特征矩阵VT,即方差由大到小所对应的特征向量,就代表了方差分布的方向。
显然对于非方阵的情况,不能够进行特征值分解。但类比而言,奇异值分解Xm×n= Um×mSm×nVn×nT ≈ Um×kSk×kVk×nT。Vn×nT相当于特征值分解中的VT;近似地取前k个特征值所对应的特征矩阵Vk×nT,也即取到了前k大的方差分布方向的特征矩阵。因而将原矩阵变换到Vk×nT所代表的线性空间中,即为PCA的过程。这样既能够最大程度近似地描述原矩阵,又能够起到降维的效果。
前面提到,PCA的过程,实际上是找到“前k大方差分布方向所对应的特征向量所构成的矩阵Vk×nT” ,利用Vk×nT * X,将原矩阵变换到Vk×nT所代表的线性空间中,即为PCA的过程:这样既能够最大程度近似地描述原矩阵,又能够起到降维的效果。这里的疑问是为什么要去找前k大方差分布方向所对应的特征向量??这里我用最简单的二维图像来说明。
- 如图是一堆二维空间中分布的一些散点;现在我要做的是将二维空间中的散点压缩到一维的直线上去(一维空间),同时还要能够最大程度地保留这堆散点的特征,其实这就是PCA要做的事--保留原有特征地降维。
- 而这条直线就是这些散点矩阵的特征向量,并且是使得方差最大化的那条,找到了特征向量,再将原来的点变换到这条特征向量所代表的直线空间上去即可--这就是上述提到的“PCA的过程”由二维向一维的过程;这里讲二维向一维的目的是便于可视化,易于理解;在低维上理解后,将知识推衍到高维。
- 不过即使明白到这里,仍然让我感到疑惑的是,究竟什么是散点的特征?或者问,用啥能最大程度地描述这堆散点的性质?只有回答了这个问题,才能告别,为什么我们会直觉地需要“使得方差最大化的那条”
-
一堆散点的核心特征是啥?答案是方差。因为方差的大小反应了散点的变化剧烈程度,是最能够刻画一堆散点内在本质的度量;因此,经过变换后的散点,要使得方差最大化,才能够最大程度地保有原有的性质。即得上述
image.png - 当然,这些都是从代数的角度来理解特征向量和方差。其实我们可以从矩阵和矩阵分解的内在含义和角度来理解。矩阵本质是什么?是运动;既然是运动,就包含了方向和大小;特征向量就是方向,特征值就是大小;矩阵的特征值分解或奇异值分解,其本质是将矩阵所代表的整体运动分解为了不同方向(特征向量)上不同程度(特征值)的运动:方阵可以进行特征值分解C = VLVT;非方阵可以进行奇异值分解Xm×n= Um×mSm×nVn×nT ≈ Um×kSk×kVk×nT。
- PCA的就是找到X矩阵运动程度(特征值)最大的前K个方向(特征向量),将原本的完整运动过程X ,描述为近似的运动过程:Vk×nT * X
- 在预测建模中,我们的数据框是一个X矩阵(M * N维),其本质就是一个M * N维的运动描述;预测建模的目的是要把X矩阵与Y向量(M维)之间建立起某种映射关系;为了在抓住M*N矩阵本征的同时简化后续运算或者提高建模成功率,将X变换为Vk×nT * X。前K个特征(主成分)中,依次代表X变化最为剧烈(方差最大)的前K个运动方向;每一个特征(主成分)都有其对应的特征值,即为所对应的方差大小(是方差大小的定性衡量,并不是准确的数值,因而通常按照占比Cumulative Percent of Variation来进行刻画)。
网友评论