机器学习算法拾遗:(九)降维(SVD, PCA)

PCA

  降维方法有很多,而且分为线性降维和非线性降维,本篇文章主要讲解线性降维。

1、奇异值分解(SVD)

 

2、主成分分析(PCA)  

 首先假设在低维空间存在这样一个超平面,将数据从高维映射到该超平面上会使得样本之间的方差最大(样本之间方差最大,也就意味着样本在映射到低维之后仍能较好的保留各样本之间的差异性。若映射后存在大量的样本重合,则映射后的样本中会存在大量无用的样本)假定对样本做中心化处理,也就是使得样本的均值为0,则所有样本的方差和可以表示为

  

  因此我们只要找到一组基,使得样本投影到每个基上的方差最大,但是这样存在一个问题,因为在寻找每个基时都是满足方差最大,这可能会导致后面的基和前面的基重合,这样就没有意义。因此单纯的选择方差最大的方向显然是不合适的,我们引入一个约束条件。在寻找这样一组正交基时,我们不仅要使得映射后的方差最大,还要使得各特征之间的协方差为0(协方差表示特征之间的相关性,使得特征都线性无关)协方差表示如下

  

  那么对于方差和协方差有没有一个可以同时表达这两个值的东西呢?协方差矩阵就可以,协方差矩阵是对称矩阵,矩阵的对角线上是方差,其余的值都是协方差,其具体表示如下

  

  那么问题就好求解了,我们只要将协方差矩阵进行对角化,对角化后的矩阵除了对角线上的值,其余的值都为0

  因此现在我们只需要对协方差矩阵C做对角化就好了,而且由于C是实对称矩阵,因此满足不同特征值下的特征向量两两正交。对协方差矩阵C做对角化

  

  然后我们要找的PP就是

  

  得到P之后就可以直接求得我们降维后的矩阵Y=PX(注意:这里对于矩阵X做左乘是会压缩行的,也就是矩阵Y的行数要少于矩阵X,因此原始矩阵X是n∗m,其中n是特征数,m是样本数)。这就是整个PCA的简单理解流程

 

 事实上在数据量很大时,求协方差矩阵,然后在进行特征分解是一个很慢的过程,因此在PCA背后的实现也是借助奇异值分解来做的,在这里我们只要求得奇异值分解中的左奇异向量或右奇异向量中的一个(具体求哪个是要根据你的X向量的书写方式的,即行数是样本数还是特征数,总之左奇异向量是用来压缩行数,右奇异向量是用来压缩列数,而我们的目的是要压缩特征数)

  在我们的PCA转换中是一个线性转换,因此也被称为线性降维。但有时数据不是线性的,无法用线性降维获得好的结果,那么这里就引入了我们的核PCA方法来处理这些问题,具体表达式如下

  

  只需要在求协方差矩阵时,将数据先映射到高维(根据低维不可分的数据在高维必定可分的原理),然后再对这高维的数据进行PCA降维处理,为了减少计算量,像支持向量机中那样用核函数来处理求内积的问题。这类方法就是核主成分分析方法(KPCA),KPCA由于要做核运算,因此计算量比PCA大很多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值