转:机器学习中降维的十个技巧

前言

由于“维度灾难”(curse of dimensionality)的存在,很多统计方法难以应用到高维数据上。虽然收集到的数据点很多,但是它们会散布在一个庞大的、几乎不可能进行彻底探索的高维空间中。

在分析高维数据时,降维(Dimensionality reduction,DR)方法是我们不可或缺的好帮手。

通过降低数据的维度,你可以把这个复杂棘手的问题变得简单轻松。除去噪音但保存了所关注信息的低维度数据,对理解其隐含的结构和模式很有帮助。原始的高维度数据通常包含了许多无关或冗余变量的观测值。降维可以被看作是一种潜在特征提取的方法。它也经常用于数据压缩、数据探索以及数据可视化。

十个技巧

  • 技巧1:选择一个合适的方法

    降维方法的选择取决于输入数据的性质。

    线性方法如主成分分析(Principal Component Analysis, PCA)、对应分析(Correspondence Analysis, CA)、多重对应分析(Multiple Correspondence Analysis, MCA)、经典多维尺度分析(classical multidimensional scaling, cMDS)也被称为主坐标分析(Principal Coordinate Analysis, PCoA) 等方法,常用于保留数据的整体结构;

    非线性方法,如核主成分分析(Kernel Principal Component Analysis, Kernel PCA)、非度量多维尺度分析(Nonmetric Multidimensional Scaling, NMDS)、等度量映射(Isomap)、扩散映射(Diffusion Maps)、以及一些包括t分布随机嵌入(t-Distributed Stochastic Neighbor Embedding, t-SNE)在内的邻近嵌入技术,更适合于表达数据局部的相互作用关系。

    有关线性和非线性降维方法的综述可分别参考如下两篇文章。

    相关链接:

    https://scholar.google.com/scholar?q=Linear+Dimensionality+Reduction%3A+Survey%2C+Insights%2C+and+Generalizations+Cunningham+2015

    https://arxiv.org/abs/1803.02432

    观测值带有类别标签,并且你的目标是将观测值分类到已知的与其最匹配的类别中去时,则可以考虑使用监督降维技术。监督降维技术包括偏最小二乘法(Partial Least Squares, PLS)、线性判别分析(Linear Discriminant Analysis, LDA)、近邻成分分析(Neighborhood Component Analysis)和Bottleneck神经网络分类器。

    对于收集多领域数据的情况,例如基因表达、蛋白质组学以及甲基化的数据,你可能需要先将降维技术分别应用到每张数据表中,然后再使用普鲁克变换(Procrustes transformation,相关链接:https://onlinelibrary.wiley.com/doi/abs/10.1002/bs.3830070216)或是其他可以将多个数据集整合的方法,如用于多个表的联合分析方法(称为STATIS);和用于多个距离矩阵的联合分析(称为DisTATIS,相关链接:)(详细信息请参考技巧9)。表1给出了降维技术的基本属性的分类和总结。为了帮助从业者,我们也把本文讨论过的降维技术的实现方法总结到表2中。

    1
    2

  • 技巧2:对连续型和计数型输入数据进行预处理

    在应用降维技术之前,先对数据进行适当的预处理通常十分必要。例如,数据中心化,变量的观测值减去该变量观测值的平均值,就是主成分分析处理连续数据的必要步骤,并且在大多数标准实现中是默认应用的。另一种常用的数据转换方法则是缩放,将变量的每一个测量值乘以一个缩放因子,使得缩放后的变量的方差为1。缩放处理保证了每一个变量都产生等价的贡献,这对于那些包含具有高度可变范围或不同单位异构的数据集尤其重要,如患者临床数据,环境因素数据等。

  • 技巧3:正确处理含有分类变量的输入数据

    对应的数据变量表示类别,而不是数值数量,例如表型、队列成员、样本测序运行、调查应答评级等。当关注点是两个分类变量的水平(不同的值)之间的关系时,对应分析(CA)会用于分析列联表中类别的共现频率。如果有两个以上的分类变量时,多重对应分析(MCA)可以用来分析观测点之间的关系以及变量类别之间的联系。多重对应分析是对应分析的泛化,其本质就是将对应分析应用到一个将分类变量独热编码(one-hot encoding)的指示矩阵中。当输入数据既包括数值变量又包括分类变量时,则有两种策略可用。如果只有少数几个分类变量,那么可以对数值变量进行主成分分析处理,分类变量每个水平的平均值则可以通过投影为补充点(不加权)。另一方面,如果这个混合数据集包含大量的分类变量,则可以使用多因子分析法(MFA)。这个方法是对数值变量使用主成分分析,对分类变量使用多因子分析,然后加权并合并变量组的结果。

    处理分类或混合数据的另一种方法是采用“最佳量化”的思想,利用PCA(即主成分分析法,下文直接采用PCA)对变量进行转换。由于目标是最大化方差,故传统PCA只能对数值型变量实行降维,不能作用在分类变量上。要想对定类(无序)或定序(有序)分类变量实行PCA降维,一种方式是将方差替换成由基于各类别的频数计算出的卡方距离(如在对应分析中),或者可以在执行PCA之前进行适当的变量变换。这里提供两种变量变换的方式:一种是将分类变量虚拟化编码为二分类特征;另一种是使用最佳缩放分类主成分分析法(CATPCA)。最佳缩放法的原理是将原有的分类变量进行类别量化,从而转换成新变量的方差最大化。通过最佳缩放可以将分类主成分分析转化成最优化问题,通过成分得分、成分加载和成分量化的交替变换,经过不断迭代使得量化后的数据和主成分之间的平方差最小。

  • 技巧4:使用嵌入方法降低输入数据的相关性和相异性

    在既没有可用的定量特征也没有可用的定性特征时,用相异性(或相关性)度量的数据点之间的关系可以采用低维嵌入的方法进行降维。即使可以进行可变测量,计算相异性和使用基于距离的方式也是一种有效的方法。但要,你要确保你选择了一个能够最好地概括数据特征的相异度量标准。例如,如果源数据是二进制的,那就不能使用欧几里德距离,这时选择曼哈顿距离更好。但是,如果特征是稀疏,则应该优选Jaccard距离。

    经典多尺度分析(cMDS)、主坐标分析(PCoA)和非度量多尺度分析(NMDS)使用成对数据之间的差异性来找到欧几里德空间中的嵌入,从而实现对所提供距离的最佳近似。尽管经典多尺度分析(cMDS)是一种类似于主成分分析(PCA)的矩阵分解方法,但非度量多尺度分析(NMDS)是一种力求仅保留相异性排序的优化技术。当对输入距离值的置信度较低时,后一种方法更适用。当相异性数据是非标准的、定性数据时,可以使用更专业的序数嵌入方法,可以参考Kleindessner和von Luxburg的详细讨论。当使用基于优化的多维缩放(MDS)时,可以选择仅通过局部交互将最小化问题限制在从数据点到其邻居(例如,k-最近邻)的距离。该方法称为“局部”MDS。

    相异性也可以用作t分布随机嵌入(t-SNE)的输入。与局部MDS类似,t分布随机嵌入(t-SNE)专门用于于表示短程交互。然而,该方法通过使用小尾的高斯核函数将所提供的距离转换为邻近度量,从而以不同的方式实现了局部性。目前,已经开发了一种基于神经网络的词向量(word2vec) 方法,该方法使用相似性数据(共现数据)来生成连续欧几里德空间中的对象的向量嵌入。 事实证明,这项技术在从由文本语料库衍生的数据中生成单词嵌入方面非常有效。 但是,这些高级计算方法的鲁棒性尚未在很多生物数据集上进行广泛测试。

  • 技巧5:有意识地决定要保留的维数

    在对数据进行降维时,关键问题是选择一个合适的新维度的数量。这一步决定了能否在在降维后的数据中捕获到感兴趣的信号,降维时维度数量的选择在统计分析或机器学习任务如聚类之前的数据预处理步骤中尤为重要。即使你的主要目标是进行数据可视化,但是由于可视化时一次只能显示两个或三个轴,你仍要选择降维后要保留的合适的新维度数量。例如,如果前两个或三个主成分对方差的解释不足时,就应该保留更多的成分,在这种时候就需要对成分的多种组合进行可视化(例如,成分1与成分2,成分2与成分4,成分3与成分5之间的对比等)。在某些情况下,最强信息是一个复杂的因子,并且有用的信息被高阶成分捕获。在这种情况,就必须使用高阶成分来显示其模式。

    要保留的最佳维度数很大程度上取决于数据本身。在了解数据之前,您无法确定正确的输出维度数。请记住,最大的维度数量是数据集中记录数(行数)和变量数(列数)的最小值。

  • 技巧6:在可视化时使用正确的宽高比

    可视化是数据探索过程的重要组成部分。因此,你生成的DR图能否准确反映降维方法的输出至关重要。关于可视化,一个重要但经常被忽视的属性是其宽高比。2D(和3D)图的高度和宽度(以及深度)之间的比例关系可以强烈影响你对数据的感知; 因此,DR图应遵循与显示的输出轴所解释的相对信息量相一致的宽高比。

  • 技巧7:理解新维度的含义

    许多线性DR方法,包括PCA和CA,都为观测值和变量提供了约化表示。特征映射(Feature maps)或相关性圆图(correlation circles)可用于确定哪些原始变量彼此相互关联,或与新生成的输出维度相关联。特征向量之间的夹角或与PC轴之间的夹角包含如下信息:两个夹角大约在0°(180°)的向量,其相应的变量间的关系也是是密切正(或负)相关的,而具有90°夹角的两个向量可以看作相对独立的。

  • 技巧8:找到隐藏的信号

    降维的主要目标是压缩数据,同时保留大部分有意义的信息。数据压缩简化了理解数据的过程,因为简化的数据表达可以更有效地获知数据变化的主要来源。其目的是找到能够成功揭示数据底层结构的“隐藏变量”。最常见的潜在模式是离散集群或连续梯度。

    在前一种情况下,相似的观察结果远离其他群体。图5A显示了一个模拟集群数据集的例子。当执行聚类分析时,目的是分析样本的组别,通常的做法是首先应用主成分分析。更具体地说,实践者经常使用一组顶部的PC(例如,50个)作为集群算法的输入。主成分分析所带来的维度的减少是一个数据降噪步骤,因为顶部特征向量应该包含所有感兴趣的信号。遗憾的是,该属性并未扩展到所有降维方法。邻域嵌入技术(如t-SNE)产生的输出不应用于聚类,因为它们既不能保持距离也不能保持密度——这两个量在解释聚类输出时都非常重要。

在这里插入图片描述主成分分析图中的观测值可分为组(a)或遵循连续梯度(b)。Dim1,维度1;Dim2,维度2;PCA即主成分分析法

  • 技巧9:利用多域数据

    有时,我们对于对于同一组样本,会获取一组以上的测量值;例如,高通量基因组研究就经常涉及到多个领域的数据。对于相同的生物样品,我们可以获取到它的微阵列基因表达、微核糖核酸表达、蛋白质组学和脱氧核糖核酸甲基化等一系列数据。通过集成多个数据集,你可以获得更精确的高阶交互表示,并评估与之相关的可变性。由于不同区域的数据受到不同的变动率或波动率的影响,样本往往表现出不同程度的不确定性。

    处理“多域”数据(也可称作为“多模态”、“多向”、“多视角”或“多组学”数据)的一种方法是分别对每个数据集执行数据降维,然后使用普鲁克变换将它们对齐在一起—平移、缩放和旋转的组合,以尽可能紧密地将不同数据结构对齐。许多更先进的方法也被开发出来,例如STATIS和DiSTATIS分别是PCA和经典MDS的推广。这两种方法都用于分析在同一组观测数据上获取的多个数据集,并且都基于将数据集组合成一个称为“折中”的共同共识结构的思想。

    所以的数据集都可以投影到这个共识空间。单个数据集的投影可以帮助观察来自不同领域的数据所描述的观察中的不同模式。

  • 技巧10:检查结果的鲁棒性并量化不确定性

    如图8所示,对于某些数据集而言,PCA的 PC定义是不明确的,即连续两个或多个PC可能具有非常相似的方差,并且相应的特征值也几乎完全相同,如图8所示。尽管由这些分量共同组成的子空间是有意义的,但特征向量(即PC)并不能单独提供信息,而且它们的载荷也不能单独解释,因为即使是一个观察点中的微小变化也会导致完全不同的特征向量集。在这种情况下,我们说这些pc是不稳定的。相似特征值对应的维度应该一起理解而不能单独解释。

    在这里插入图片描述
    当多个特征值近乎相等时,PCA表示是不稳定的。PCA,principal component analysis,即主成分分析。

    使用需要指定参数的技术时,还应根据不同的参数设置检查结果的稳定性。例如,在运行t-SNE时,你需要为困惑度选择一个值,不同的值甚至可能定性地改变结果。当困惑度被设置为非常小的值时,常会形成“人工聚类”。不应该使用t-SNE目标函数的值即KL散度作为选择“最佳困惑度”的标准,因为随着困惑度值的增加,KL散度总是单调减小。对于t-SNE,Cao和Wang在提出了用于选择困惑度的贝叶斯信息准则(BIC)类型规则。然而由于t-SNE的稳定性理论还没有开发出来,在实践中,应该针对一系列输入参数重复降维计算,并直观地评估所发现的模式在不同规格中是否一致。尤其是当困惑度值的微小增加导致聚类模式消失时,你得到的分类可能只是参数选择不合适带来的错误结果。

    另一个需要关注的问题是方法面对异常值时的稳定性。一般来说,远离中心的观察点对PC的影响要大于靠近中心的观察点;有时数据中的一小部分样本几乎决定了PC。

    你应该注意这样的情况,并验证降维方法捕获的结构是否能代表大部分数据,而不仅仅是少数异常值。在降维图中,异常值是远离大多数观测值的点。在PCA和其他线性方法中,如果样本投影图中的所有点都位于原点即图的中心附近,只有一两个点位于很远的地方,降维结果将被异常值控制。应该使用特定数据质量控制指标对这些点进行检验,并考虑将其删除。

    如果删除了样本,则需要重新进行降维计算,并且应注意输出表示中的更改。通过比较去除异常值前后的降维可视化,观察观察点的变化。你不仅应该考虑删除异常值,还应该考虑删除异常组,即与多数数据有很大不同的异常类。除去异常组并重新进行降维计算,得到适合大部分数据的模式。另一方面,如果数据集中包含许多异常观测,则应使用稳定的方法,比如健壮的核主成分分析。

    此外,可以通过构建“引导”数据集来估计与观察点相关的不确定性,即用替换方法重采样观察点以生成数据的随机子集。“引导”集可以看作是多路数据,使用技巧8中描述的STATIS或Procrustes对齐方法匹配随机子集。当数据的真实噪声模型可用时,可以生成数据点的副本,而不需要使用自举子样本。通过扰动样本的测量值,并应用技巧9中提到的STATIS或DiSTATIS方法生成“折中方案”和每个受干扰的数据副本的坐标。获取每个数据点的多个估计值后就可以估计它的不确定性。你可以使用密度等值线或通过将每个引导程序投影中的所有数据点绘制到折中方案上来显示DR嵌入图上每个样本的不确定性。图9表示两个模拟数据集的PCA投影的Procrustes比对。彩色线表示自举子集输出坐标的密度等值线,菱形标记对应于全部数据的投影坐标。图中绘制了20个合成数据点,这些数据点分别来自2维高斯分布和5维高斯分布,均正交投影到10维。我们可以观察到低秩数据点的不确定性要小得多,即前2个PC能更好地代表第一个数据集。

    在这里插入图片描述
    每个数据点的降维输出坐标的稳定性。 使用Procrustes变换将两个10维模拟数据集的bootstrap样本投影到前两个PC对齐,其中(a)中数据秩为2、(b)中数据秩为5。 较小的圆形标记对应于每个bootstrap试验,较大的菱形标记是整个数据集的坐标。DR,dimensionality reduction,即降维;PC,principal component,即主成分。

原文

十个技巧,让你成为“降维”专家

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值