随机森林分类前高维文本数据的 PCA?

机器算法验证 分类 主成分分析 随机森林 降维 高维
2022-02-02 09:17:58

在进行随机森林分类之前进行 PCA 是否有意义?

我正在处理高维文本数据,我想进行特征缩减以帮助避免维度灾难,但随机森林不是已经进行了某种维度缩减吗?

4个回答

Leo Breiman 写道,“维度可以是一种祝福”。一般来说,随机森林可以毫无问题地在大型数据集上运行。你的数据有多大?不同的领域根据主题知识以不同的方式处理事情。例如,在基因表达研究中,基因通常在有时称为非特异性过滤的过程中基于低方差(不查看结果)被丢弃。这可以帮助随机森林的运行时间。但这不是必需的。

以基因表达为例,有时分析师使用 PCA 分数来表示基因表达测量。这个想法是用一个可能不那么混乱的分数来替换相似的配置文件。随机森林可以在原始变量或 PCA 分数(变量的替代)上运行。有些人用这种方法报告了更好的结果,但据我所知没有很好的比较。

总之,在运行 RF 之前无需进行 PCA。但是你可以。解释可能会根据您的目标而改变。如果你想做的只是预测,那么解释可能就不那么重要了。

由于我认为现有的答案不完整,因此我想为此添加两分钱。

由于我在下图中说明的一个特殊原因,在训练随机森林(或 LightGBM,或任何其他基于决策树的方法)之前执行 PCA 可能特别有用。

基本上,通过将训练集沿方差最大的方向对齐,它可以使找到完美决策边界的过程变得更加容易。

决策树对数据的旋转很敏感,因为它们创建的决策边界总是垂直/水平的(即垂直于轴之一)。因此,如果您的数据看起来像左图,则需要一棵更大的树来分隔这两个集群(在本例中,它是一个 8 层树)。但是,如果您将数据沿其主要组件对齐(如右图所示),您只需一层即可实现完美分离!

当然,并不是所有的数据集都是这样分布的,所以 PCA 可能并不总是有帮助,但尝试一下看看是否有用仍然很有用。提醒一下,在执行 PCA 之前,不要忘记将数据集标准化为单位方差!

PS:至于降维,我同意其他人的观点,因为随机森林的问题通常不像其他算法那么大。但是,它可能有助于加快你的训练速度。决策树训练时间为 O(n m log(m)),其中 n 是训练实例数,m - 维数。尽管随机森林会为每棵要训练的树随机选择一个维度子集,但您选择的维度总数中的比例越低,您需要训练的树就越多以达到良好的性能。

在此处输入图像描述

随机森林之前的 PCA 可能对降维有用,但可以为您的数据提供随机森林可以更好地执行的形状。

我很确定,一般来说,如果您使用 PCA 转换数据,保持原始数据的相同维度,您将使用随机森林进行更好的分类

我认为这里的另一个重要观察是参数 m_try 的作用,它表示尝试拆分每棵树的方向数。在那里,RF 模型本质上是在进行自动特征工程,如果仔细选择,应该不需要降维。当然,如果不相关的特征数量巨大,则 m_try 应该优化到一个较高的值,从而增加计算成本。

我不清楚的是,如果优化 RF 的参数,例如使用 mtry 方向,我们可以消除 100% 降维的需要。