在进行随机森林分类之前进行PCA是否有意义?
我正在处理高维文本数据,并且我想进行特征缩减以帮助避免维数的诅咒,但是Random Forests是否已经在某种程度上降低了维度?
在进行随机森林分类之前进行PCA是否有意义?
我正在处理高维文本数据,并且我想进行特征缩减以帮助避免维数的诅咒,但是Random Forests是否已经在某种程度上降低了维度?
Answers:
里奥·布里曼(Leo Brieman)写道:“维可以是一种祝福”。通常,随机森林可以在大型数据集上运行而不会出现问题。您的数据有多大?不同的领域根据主题知识以不同的方式处理事物。例如,在基因表达研究中,通常会基于低方差(不偷看结果)将基因丢弃,有时将其称为非特异性过滤。这有助于随机森林上的运行时间。但这不是必需的。
坚持基因表达的例子,有时分析人员使用PCA评分来代表基因表达的测量结果。这个想法是用一个可能不太混乱的分数代替类似的配置文件。可以对原始变量或PCA分数(变量的替代)运行随机森林。有些人用这种方法报告了更好的结果,但是据我所知没有很好的比较。
总之,在运行RF之前无需进行PCA。但是你可以。解释可能会根据您的目标而改变。如果您只想预测,则解释可能不太重要。
我想在此加两分钱,因为我认为现有答案不完整。
由于我在下图中说明的一个特殊原因,在训练随机森林(或LightGBM或任何其他基于决策树的方法)之前,执行PCA可能特别有用。
基本上,通过使训练集沿方差最大的方向对齐,可以使查找完美决策边界的过程变得更加容易。
决策树对数据的旋转很敏感,因为它们创建的决策边界始终是垂直/水平的(即垂直于其中一个轴)。因此,如果您的数据看起来像左图,则将需要更大的树来分隔这两个群集(在本例中为8层树)。但是,如果将数据沿其主要组成部分对齐(如右图所示),则只需一层即可实现完美的分离!
当然,并不是所有的数据集都是这样分布的,因此PCA可能并不总是有帮助,但是尝试一下是否有用仍然很有用。提醒一下,在执行PCA之前不要忘记将数据集标准化为单位方差!
PS:关于降维,我会与其他人一样,因为对于随机森林而言,它通常不会像其他算法那样成为一个大问题。但是,这仍然可以帮助您加快培训速度。决策树训练时间为O(n m log(m)),其中n是训练实例的数量,m-维数。而且,尽管随机森林为要训练的每棵树随机选择一个维度子集,但是,在您选择的维度总数中,分数越低,获得良好性能所需训练的树越多。
随机森林之前的PCA不能用于降低维数,但可以为您提供一个数据,使随机森林可以更好地发挥作用。
我很安静地确定,一般而言,如果使用PCA转换数据并保持原始数据的维数不变,则随机森林将具有更好的分类
mtry
参数)来构建每棵树。还有一种基于RF算法的递归特征消除技术(请参见varSelRF R软件包及其中的参考文献)。但是,当然可以添加初始数据缩减方案,尽管它应该是交叉验证过程的一部分。所以问题是:您是否要向RF输入特征的线性组合?