在随机森林分类之前对高维文本数据进行PCA?


14

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

我正在处理高维文本数据,并且我想进行特征缩减以帮助避免维数的诅咒,但是Random Forests是否已经在某种程度上降低了维度?


7
RF算法实际上并没有遭受大量预测变量的困扰,因为它只需要使用它们的随机子集(所谓的mtry参数)来构建每棵树。还有一种基于RF算法的递归特征消除技术(请参见varSelRF R软件包及其中的参考文献)。但是,当然可以添加初始数据缩减方案,尽管它应该是交叉验证过程的一部分。所以问题是:您是否要向RF输入特征的线性组合?
chl

多少个特征/尺寸,F?> 1K?> 10K?特征是离散的还是连续的,例如术语频率,tfidf,相似性度量,词向量还是什么?PCA运行时是二次到F
SMCI


Answers:


12

里奥·布里曼(Leo Brieman)写道:“维可以是一种祝福”。通常,随机森林可以在大型数据集上运行而不会出现问题。您的数据有多大?不同的领域根据主题知识以不同的方式处理事物。例如,在基因表达研究中,通常会基于低方差(不偷看结果)将基因丢弃,有时将其称为非特异性过滤。这有助于随机森林上的运行时间。但这不是必需的。

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

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


感谢您的答复。速度是一个问题,更多是因为在多标签问题中有数千个可能的标签。该应用程序对从Twitter和分析师对某些事件的描述中提取的文本数据进行分类。我正在使用tf-idf加权和单词袋模型。
Maus 2013年

9

我想在此加两分钱,因为我认为现有答案不完整。

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

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

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

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

PS:关于降维,我会与其他人一样,因为对于随机森林而言,它通常不会像其他算法那样成为一个大问题。但是,这仍然可以帮助您加快培训速度。决策树训练时间为O(n m log(m)),其中n是训练实例的数量,m-维数。而且,尽管随机森林为要训练的每棵树随机选择一个维度子集,但是,在您选择的维度总数中,分数越低,获得良好性能所需训练的树越多。

在此处输入图片说明


1

随机森林之前的PCA不能用于降低维数,但可以为您提供一个数据,使随机森林可以更好地发挥作用。

我很安静地确定,一般而言,如果使用PCA转换数据并保持原始数据的维数不变,则随机森林将具有更好的分类


PCA运行时是功能F的平方,因此并不总是便宜。
smci 2015年

性能是指预测性能。我指的不是计算时间
-Donbeo

2
您能为您的主张添加一些理由吗?看来PCA不会总是改善结果。例如,当决策边界对于旋转不变(例如,一个圆)时,执行PCA只会重新缩放和旋转数据(并因此旋转圆),但是RF仍必须近似具有许多矩形裂缝的椭圆边界。
Sycorax说要恢复莫妮卡的时间
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.