概述
降维
降维是解决维度灾难和过拟合的重要⽅法,除了直接的特征选择外,我们还可以采⽤算法的途径对特征进⾏筛选,线性的降维⽅法以 PCA 为代表,在 PCA 中,我们只要直接对数据矩阵进⾏中⼼化然后求奇异值分解或者对数据的协⽅差矩阵进⾏分解就可以得到其主要维度。⾮线性学习的⽅法如流形学习将投影⾯从平⾯改为超曲⾯。
解决过拟合的问题除了正则化和添加数据之外,降维是最好的方法。降维的思路来源于维度灾难的问题,我们知道n维球的体积为:
那么在球体积与边长为2R的超立方体比值为:
这就是上面所说的降维灾难,在高维数据中,主要样本都分布在立方体的边缘,所以数据集更加稀疏。降维的算法分为:
1、直接降维 特征选择
2、线性降维 PCA、MDS等
3、分线性 流形包括lsomap,LLE等
为了方便,首先将协方差矩阵(数据集)写成中心化的形式:
这个式子利用了中心矩阵H的对称性,这也是一个投影矩阵。
线性降维–主成分分析PCA
损失函数
主成分分析中,我们的基本想法是将所有数据投影到一个子空间中,从而达到降维的目标,为了寻找这个子空间,我们的基本想法是:
1、所有数据在子空间中更为分散
2、损失的信息最小,即补空间的分量少
原来的数据很有可能各个维度之间是相关的,于是我们希望找到一组p个新的线性无关的单位基ui,降维就是取其中的q个基。于是对于一个样本xi,经过这个坐标变换后:
对于数据集来讲,首先将其中心化然后再去上面式子的第一项,并使用其系数的平方平均作为损失函数并最大化:
由于每个基都是线性无关的,于是每一个 uj的求解可以分别进行,使用拉格朗日乘法:
故:
可以看到,我们需要的基就是协方差矩阵的本征矢。损失函数最大取在本征值前1
个最大值。下面看其损失的信息最少这个条件,同样适用系数的平方平均作为损失函数,并最小化:
同样的:
损失函数最小取在本征值剩下的最小的几个值。数据集的协方差矩阵可以写成
直接对这个表达式可以得到本征矢。
SVD与PCoA
下面使用实际训练时经常使用的SVD直接求得这个q个本征矢。
对中心化后的数据集进行奇异值分解:
于是:
因此,直接对中心化后的数据集进行SVD,可以得到特征值和特征向量V,在新坐标系中的坐标就是:
根据上面的推导,也可以得到另一种方法PCoA主坐标分析,定义并进行特征值分解:
因为:
于是可以直接得到坐标。这两种方法都可以得到主成分,但是由于方差矩阵是pp的,而T是NN的,所以对样本较少的情况可以采用PCoA的方法。
p-PCA
下面从概率的角度对PCA进行分析,概率方法也叫p-PCA。使用线性模型,类似之前LDA,我们选择一个方向对原始数据
降维后的数据为
降维通过一个矩阵变换(投影)进行:
对于这个模型,我们可以使用期望-最大(EM)的算法进行学习,在进行推断的时候需要求得p(z|x),推断的求解过程和线性高斯模型类似。
最后
以上就是长情啤酒为你收集整理的降维详解的全部内容,希望文章能够帮你解决降维详解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复