为什么要PCA,不直接SVD?

为什么?

一句话,转成协方差矩阵,是对称矩阵,特征值分解比SVD奇异值分解的计算量小的多

PCA可以通过分解协方差矩阵计算,也可以通过分解内积矩阵计算

那么关键就是【特征明显的,重要的信息】如何选择? 选择标准有两个:

1: 同一个维度内的数据,方差大的比较明显,因为方差大表示自己和平均水平差异大,有个性,降维后也最可能分的开~
2: 两个不同维度间关联度越小越好,因为关联度小表示这两个维度表征共同信息的量比较少,最理想就是两个维度不相关,相关度为0(相关度可以用协方差cov(a,b)表示),在线性空间内表现为两个维度正交~

方差和协方差的关系

既然,说到了协方差矩阵,那么这里就简单说一下方差和协方差之间的关系,首先看一下均值,方差和协方差的计算公式:

为什么要PCA,不直接SVD?_第1张图片
image

由上面的公式,我们可以得到一下两点区别:

(1)方差的计算公式,我们知道方差的计算是针对一维特征,即针对同一特征不同样本的取值来进行计算得到;而协方差则必须要求至少满足二维特征。可以说方差就是协方差的特殊情况。

(2)方差和协方差的除数是n-1,这样是为了得到方差和协方差的无偏估计。

协方差矩阵的主对角线和其余元素正好可以分别表示方差和协方差,而根据两条标准又很容易想到求特征值和特征向量,推导过程

具体解释PCA和SVD差别

PCA这个概念太大,按照你的描述应该指的是求协方差矩阵的方法,也就是到手的矩阵先求协方差矩阵,然后对求出来的协方差阵进行特征分解得到特征值特征向量,然后根据特征值的大小取最大的N个所对应的特征向量做为主元代替原矩阵。
特征分解(eigenvalue decomposition):
[图片上传失败...(image-829440-1524410239335)]

,Q是特征向量组成的矩阵,lambda是特征值组成的对角阵。
这对矩阵的要求很高,必须要能相似对角化的矩阵才行,而要相似对角化必须要是方阵,这在实际数据中很难遇到,所以我们人为的先求个协方差矩阵,这个协方差矩阵是个对称阵,正好满足要求。计算成本上,使用幂方法或者EM法不用计算所有的特征向量,只计算矩阵的前几个主要的特征向量,从而大大提高效率。

SVD是一种矩阵分解的方法,可以直接拿来降维,物理意义很明显,唯一缺点是计算cost太高,据说谷歌实现了SVD的并行运算,但是其他好方法太多,不是很有必要一定要用SVD来降维。
奇异值分解(singular value decomposition):
[图片上传失败...(image-5c804f-1524410239335)]

,U和V是酉矩阵,sigma的主轴是奇异值。
这可以分解行数不等于列数的矩阵,无需多余步骤一步出结果,但是要分清楚谁是样本谁是特征。

补充一个最近流行的基于矩阵分解的降维方法:非负矩阵分解NMF(non-negative matrix factorization)。就是寻找一个近似的分解,使得原矩阵V约等于基矩阵W乘以系数矩阵H,其中W和H都是非负的。实现的方法有很多,可以百度找一下相关的介绍,这里不展开说了。

PCA流程

https://applenob.github.io/pca.html

你可能感兴趣的:(为什么要PCA,不直接SVD?)