什么时候应该使用降维?

机器算法验证 降维
2022-03-22 05:30:44

昨天我问了这个问题,其中我有 180 个主题,每个主题有 500 个特征。虽然我确信在这种情况下降维是必须的(500 个特征),但我得到的大多数答案都说 500 个并不算多。

所以,我的问题是:当一个人应该在分类器之前使用降维时,是否有任何经验法则?多少功能太多了?(我想这取决于主题和特征数量之间的比例。不是吗?)

4个回答

与其问“何时使用”,不如来看看“为什么使用”——我相信这很好地引导我们找到“何时”的答案。

我的理解是降维主要是为了

  • 加速学习(许多特征会导致更长的计算)和压缩数据(许多特征占用大量磁盘/内存空间)。在这个视图中,只有在运行时间或数据大小“不可接受”时才应该减少维度,并且减少特征空间直到事情变得“可接受”。

显然,“不可接受”仅由手头的任务定义。现代计算机可以处理大量计算并存储大量数据——我认为这就是为什么有人告诉你 500 个特征并不算多的原因。我能想到的降维的其他原因很少:

  • 矩阵反转问题 - 算法可以从样本集中构建矩阵,如果某些特征是相互依赖的,这会使矩阵不可逆。但在实践中,这并不是什么大问题,并且可以通过Moore-Penrose 伪逆来规避,所以在我看来,这不应该是降维的原因。

  • 数据可视化——这里的经验法则是提取特征,直到你最多只剩下两个,因为人类认知不足:)

据我所知,我们没有关于何时使用降维的经验法则。我也在想,这取决于主题和特征数量之间的比率。此外,可能还需要考虑其他因素,例如您要部署学习算法的系统的处理能力。

此外,稀疏自动编码器等降维技术能够在数据中找到有趣的模式,从而提高算法的准确性。因此,人们可能会认为使用降维方法总是更好。

特征的数量并不是减少的唯一原因。检查这些功能是什么也很重要。

虽然这是一个面向计算机科学的网站,但内存和运行时间问题是相关的,但它们不应该是许多学习任务的唯一焦点。

在选择特征时,您应该对与手头任务相关的内容有某种假设。如果您以随机方式或以与您希望学习的任务无关的方式选择功能,则可以继续使用“随机”方法来减少此数量。但是,如果您对这些特征有一些假设,我会尽量在学习过程中保留尽可能多的特征。

一般来说,您对学习的最佳功能有更好的理解和对任务的更好规划,您的结果就会越好。

如果在这 n 个特征上训练的模型或分类器的复杂性严重扩展(例如,参数的数量增长为 O(n^3)),那么即使是 500 个特征也可能成为问题。不仅因为优化需要更长的时间,还因为您可能没有足够的数据来约束参数,这会导致过度拟合。

通过降低模型复杂度,降维也可以作为正则化的一种手段。