降维方法的优缺点

原文地址:https://elitedatascience.com/dimensionality-reduction-algorithms

欢迎阅读我们的现代机器学习算法的第2部分。 在这一部分中,我们将介绍降维的方法,进一步分为特征选择和特征提取。 通常,这些任务很少单独执行。 相反,他们通常都是数据预处理中的步骤。

 

如果你错过了第1部分,你可以在这里查看。 它解释了我们的对机器学习算法的分类方式,它涵盖了“三大”机器学习任务:

  1. 回归任务
  2. 分类任务
  3. 聚类任务

 

在这篇文章,我们将介绍:

  1. 特征选择
  2. 特征提取

 

我们还将在未来的专用指南中介绍其他任务,如密度估算和异常检测。

 

维度灾难

在机器学习中,“维度”仅指数据集中的特征(即输入变量)的数量。

 

当特征数量相对于数据集中的观测样本非常大时,某些算法很难训练有效的模型。 这被称为“维度灾难”,它尤其适用于依赖于距离计算的聚类算法。

 

 

一个Quora用户为维度诅咒提供了一个很好的类比,我们将在这里借用:

“假设你有一条100码长的直线,你在它的某处丢了一分钱。 找到它并不难。 沿着这条线走,需要两分钟。

如果每边都有一个100码的方形,你在它的某处丢了一分钱。 这将是相当困难的,就像搜索两个足球场粘在一起。 这可能需要数天时间。

现在一个100码宽的立方体。 这就像搜索一个足球场大小的30层建筑。 啊。

当你有更多的维度时,搜索空间的难度会变得更加困难。”

 

在本指南中,我们将介绍降低维度的两种主要方法:特征选择和特征提取。

 

4 特征选择

特征选择用于过滤数据集中的不相关或冗余特征。 特征选择和提取之间的关键区别在于特征选择是保留了原始特征的子集,而特征提取则创建了全新更小的特征。

 

需要明确的是,一些监督算法已经具有内置特征选择,例如正则化回归和随机森林。 译者添加:使用L1正则化的损失函数,导致一些特征的权重变成0。通常,我们建议从这些算法开始,如果它们适合您的任务。 它们在第1篇文章中有所涉及。

 

作为独立任务,特征选择可以是无监督的(例如,方差阈值)或监督的(例如遗传算法)。 如果需要,您还可以组合多种方法。

 

4.1 方差阈值

方差阈值方法移除其值在观测样本没有太大变化的特征(即,它们的方差低于阈值)。 这些特征几乎没有价值。

 

例如,如果您有一个公共健康数据集,其中96%的观测样本是针对35岁男性的,那么可以消除“年龄”和“性别”特征,而不会造成重大信息损失。

 

由于方差取决于缩放比例,因此您应始终首先规一化特征列。

 

优势:应用方差阈值基于可靠的直觉:不会发生太大变化的功能也不会添加太多信息。 这是在建模过程开始时降低维度的简单且相对安全的方法。

缺点:如果您的问题确实需要减少维数,那么应用方差阈值很少就足够了。 此外,您必须手动设置或调整方差阈值,这可能很棘手。 我们建议从保守(即较低)阈值开始。

 

4.2相关性阈值

相关性阈值方法删除与其他特征高度相关的特征(即,其值与另一个特征的变化非常相似)。 这些特征提供了冗余信息。

 

例如,如果您将具有“Floor Area(平方英尺)”和“Floor Area(平方米)”的房地产数据集作为单独的两个特征,则可以安全地删除其中一个。

 

优势:应用相关性阈值也基于可靠的直觉:类似的特征提供冗余信息。 某些算法对相关特征并不健壮,因此删除它们可以提高性能。

缺点:同样地,您必须手动设置或调整相关阈值,这可能很棘手。 另外,如果将阈值设置得太低,则可能会丢失有用信息。 只要有可能,我们更喜欢内置特征选择而不是相关性阈值的学习算法。 即使对于没有内置特征选择的机器学习算法,主成分分析(PCA)通常也是更好的选择。

 

4.3 遗传算法

遗传算法(GA)是一类可以适应不同目的的算法。 它们是受进化生物学和自然选择启发的搜索算法,结合了突变和交叉以有效地穿越大型解空间。 这是GA背后的直觉的一个很好的介绍。

 

在机器学习中,GA有两个主要用途。 第一个是优化,例如为神经网络寻找最佳权重。

 

第二个是监督地特征选择。 在该用例中,“基因”代表个体特征,“有机体”代表候选特征集。 “群体”中的每个生物体在健康分数上进行分级,例如在保持集上的模型表现。 最适合的生物存活并繁殖,重复直到种群在几代后收敛于解决方案。

 

优势:遗传算法可以从非常高维的数据集中有效地选择特征,其中穷举搜索是不可行的。 当您需要预处理没有内置特征选择的算法(例如最近邻居)的数据时,以及当您必须保留原始特征(即不允许PCA)时,GA可能是您最好的选择。 这些情况可能出现在需要透明且可解释的解决方案中。

缺点:GA为您的实施增加了更高级别的复杂性,并且在大多数情况下它们不值得使用。 如果可能,使用PCA或直接使用具有内置特征选择的算法更快更简单。

 

4.4 荣誉奖:逐步选择法

逐步选择法是一种基于顺序搜索的监督特征选择方法,它有两种风格:前向和后向。 对于前向逐步选择法,您可以从没有任何特征开始。 然后,您将使用每个候选特征训练一个1特征模型,并保持版本具有最佳性能。 您将继续一次只添加一项特征,直到您的性能改进停滞不前。

 

后向逐步选择是相同的过程,只是颠倒过来:从模型中的所有特征开始,然后一次删除一个,直到性能开始大幅下降。

 

我们完全出于历史原因注意到这个算法。 尽管许多教科书将逐步搜索列为有效选项,但它的效率几乎总是低于其他监督方法,例如和正则化比。 逐步搜索有许多已发现的缺陷,其中最致命的一个是它是一种贪心算法,不能解释每个变化的未来影响。 我们不推荐这种方法。

 

5特征提取

特征提取用于创建一组新的,较小的特征,仍然可以捕获大部分有用信息。 同样,特征选择保留原始特征的子集,而特征提取创建新特征。

 

与特征选择一样,一些算法已经具有内置特征提取。 最好的例子是深度学习,它通过每个隐藏的神经层提取原始输入数据的越来越有用的表示出来。 我们在第1部分中介绍了这一点。

 

作为独立的任务,特征提取可以是无监督的(即PCA)或监督的(即LDA)。

 

5.1主成分分析(PCA)

主成分分析(PCA)是一种无监督算法,可创建原始特征的线性组合。 新特征是空间正交的,这意味着它们是不相关的。 此外,它们按照“可解释的方差”值的大小排列。 第一个主成分(PC1)解释了数据集中的最大方差,PC2解释了第二大方差,依此类推。

 

因此,您可以通过根据累积解释的方差限制要保留的主要成分的数量来减少维度。 例如,您可能决定只保留所需的主要成分,以达到90%的累积可解释性方差。

 

在执行PCA之前,应始终规一化数据集,因为转换取决于缩放比例。 如果不这样做,那么最大尺寸的特征列将主导您的新主要成分。

 

优势:PCA是一种多功能技术,在实践中运作良好。 它实现起来快速而简单,这意味着您可以使用和不使用PCA算法来轻松测试比较性能。 此外,PCA提供了多种变体和扩展(即核PCA,稀疏PCA等)来解决特定的障碍。

缺点:新的主要组成部分不可解释,在某些情况下可能是一个交易破坏者。 此外,您仍必须手动设置或调整累积可解释性方差的阈值。

 

5.2线性判别分析(LDA)

线性判别分析(LDA) - 不要与潜在的Dirichlet分配混淆 - 也会创建原始特征的线性组合。 然而,与PCA不同,LDA不会最大化累计可解释的方差。 相反,它最大化了类之间的可分离性。

 

因此,LDA是一种监督方法,只能用于标记数据。 那么哪个更好:LDA和PCA? 结果将因问题而异,并且适用第1部分中的“没有免费午餐”定理。

 

LDA转换还取决于缩放比例,因此您应首先规一化数据集。

 

优势:LDA受到监督,可以(但不总是)提高提取特征的预测性能。 此外,LDA提供变化(即二次LDA)来解决特定的障碍。

缺点:与PCA一样,新特征列不易解释,您仍必须手动设置或调整要保留的组件数量。 LDA还需要标记数据,这使其更具情境性。

 

5.3   自动编码机(Autoencoder)

自动编码器是经过训练以重建其原始输入的神经网络。 例如,训练图像自动编码器以再现原始图像,而不是将图像分类为狗或猫。

 

所以这有什么用呢? 关键是要构建隐藏层,使其具有比输入/输出层更少的神经元。 因此,该隐藏层将学习产生原始图像的较小表示。

 

由于您使用输入图像作为目标输出,因此自动编码器被视为无监督学习。 它们可以被直接使用(例如图像压缩)或按顺序堆叠(例如深度学习)。

优势:自动编码器是神经网络,这意味着它们可以很好地处理某些类型的数据,例如图像和音频数据。

缺点:自动编码器是神经网络,这意味着他们需要更多的数据来训练。 它们不能用作通用的降维算法。

 

译者添加:

另一种特征提取方法-因子分解机系列算法(Factorization Machines):在巨大稀疏矩阵的情况下,满足xi,xj都不为0的情况非常少,这样将导致交叉特征ωij无法通过训练得出。

其中基于神经网络地DeepFM模型就算稀疏向量在训练样本中没有出现的组合在预测时也可以进行计算,针对隐藏在数据中的二阶特征组合进行自动学习。且它不需要任何的人工特征工程。

 

离别的话

我们刚刚通过现代的降维方法进行旋风式探索,分为特征选择和特征提取。

 

我们将提供与第一部分相同的建议:

  1. 实践,实践,实践。 抓住数据集并成热打铁。
  2. 掌握基础知识。 例如,首先理解PCA和LDA之间的差异比深入研究LDA与二次LDA的细微差别更有成效。
  3. 请记住,更好的数据优于更高级的算法。 我们重复了很多,但这是真相!

译者添加:特征工程,也就是你对原始数据的表达,它会决定效果的上限;而模型的选择和参数调优只是决定你能多大程度地去逼近这个上限。

 

posted @ 2018-10-16 14:59  ted_castle  阅读(7505)  评论(0编辑  收藏  举报