常见机器学习降维方法

一般在维度数量很多,严重影响到训练速度的情况下再考虑降维,降维必不可少的会减少原数据的信息量(减小方差)。

维数诅咒:越高维的数据,样本分布于边界的成分越大,样本之间的距离越远,样本越稀疏,因此越高维的数据的预测越不可靠,它们基于的推测越大,过拟合的风险也越大。

投影类:

PCA(主成分分析法)

在进行PCA前应进行中心化。

PCA的思想是找到最能代表数据特征的超平面(投影后方差减少最小,原数据与该平面对应投影的l2 距离最近,没错就是最小二乘线性回归要找的那个超平面),并将数据投影上去。首先使用矩阵奇异值分解(随后把公式说明补充完整)原样本:

中的 即主成分方向向量,且是按顺序排列的, 最重要的(它对训练样本方差解释率最高,简单来说就是将训练样本投影到该方向向量上后,它的方差最大),其次是 ,依次类推。一般我们只选择前面的重要的成分,抛弃后面的,比如选择保留对训练样本方差有95%解释力的维度数量,并将原训练样本投影到由该维度数量的维度组成的超平面中:

在投影完后,原训练样本 就不要了,由' 代替(没错,和核变换如出一辙), 由你自定义的主成分方向向量组成,比如你选择前十个,也就是 就是 。主成分的好处在于,它的维度都是垂直的,所以绝对保证了维度与维度间不相关,完美符合线性回归的假设,同时因为决策树系列分叉都是与某一维度垂直的(因为是选择一个阈值),所以PCA对决策树系列有很大帮助。

PCA也是一种很棒的压缩方式,但如你所想,它是有损压缩,因为损失了部分信息。另外,经过PCA投影后的样本还可以投影回原样本空间,该过程就相当于解压:

增量PCA:

因为PCA需要将整个训练样本集放进内存里才能进行,在内存不够时显然不合适,增量PCA与PCA的区别形似小批量梯度下降和梯度下降的区别,将数据分成小批量进行。

随机PCA:

可以快速找到前d个主成分的近似值,速度比PCA快得多。

kPCA(核主成分分析):

该方法思路清奇,首先是用核变换将原训练集增维,再对增维后的结果进行PCA分析,因为涉及到增维的方法比如多项式核、RBF核,可以使用网格搜索捕捉最合适的核函数及其超参数。有两种方法确认最合适超参数,第一种是建立流水线工作,比如降至特定的维度,后进行逻辑回归,找到最准确分类的超参数;除此方法,还有一种方法是选择反投影误差最低的核和超参数,因为加入了核变换,反投影变得很困难(这个知识可以后面补充)。

流形学习类:

LLE(LocallyLinearEmbedding,局部线性嵌入):

这个方法不适合大数据集且速度慢(对公式有一些疑问,日后补充)。

 

其他日后可以尝试补充的降维方法:

  1. MDS(多维缩放):
  2. Isomap(等度量映射):
  3. t-SNE(t-分布随机近邻嵌入):
  4. LDA(Linear Discriminate Analysis,线性判别):

猜你喜欢

转载自blog.csdn.net/weixin_42095259/article/details/94563042