梯度提升与随机森林

Posted

技术标签:

【中文标题】梯度提升与随机森林【英文标题】:Gradient Boosting vs Random forest 【发布时间】:2018-02-21 17:20:42 【问题描述】:

据我了解,RF 随机选择特征,因此很难过拟合。但是,在 sklearn 中,梯度提升还提供了 max_features 选项,这有助于防止过度拟合。那么,为什么有人会使用随机森林呢? 谁能根据给定的数据解释何时使用?

非常感谢任何帮助。

【问题讨论】:

你的问题有点像说“汽车在路上行驶,但船在水中行驶得很快。为什么有人会用船在路上行驶?”当然,随机森林有某些类型的数据问题,它非常适合。这是一种监督学习方法,当您拥有许多特征并希望每个特征都在模型中发挥潜在作用而不必担心偏差时,这种方法非常有用。 @TimBiegeleisen 不同之处在于很容易识别何时使用船和何时使用汽车。何时使用随机森林与何时使用梯度提升并不总是那么清楚。有几个复杂的梯度提升库(lightgbm、xgboost 和 catboost)对于大多数类型的问题可能会优于随机森林。识别表明随机森林何时可能表现更好的问题特征是一个很好的问题。我当然没有答案。 我投票决定将此问题作为题外话结束,因为它与machine learning, rather than software development 有关。您可以在Cross Validated 或DataScience.SE 上提出这些问题。 【参考方案1】:

根据我的个人经验,随机森林可能是一个更好的选择......

    您在小型数据集上训练模型。 您的数据集几乎没有要学习的特征。 您的数据集的 Y 标志计数较低,或者您尝试预测发生概率低或很少发生的情况。

在这些情况下,像 XGBoost 和 Light GBM 这样的梯度提升算法可能会过拟合(尽管它们的参数是经过调整的),而像随机森林甚至逻辑回归这样的简单算法可能会表现得更好。为了说明,对于 XGboost 和 Ligh GBM,与随机森林相比,测试集的 ROC AUC 可能更高,但与训练集的 ROC AUC 差异太大。

尽管 Gradient Boosting 算法具有敏锐的预测能力,但在某些情况下,随机森林利用了乞求方法(随机选择)的模型稳定性,并优于 XGBoost 和 Light GBM。但是,Gradient Boosting 算法在一般情况下表现更好。

【讨论】:

【参考方案2】:

Quora 上的类似问题: https://www.quora.com/How-do-random-forests-and-boosted-decision-trees-compare

我同意链接中作者的观点,即随机森林更健壮——它们不需要太多针对特定问题的调整即可获得良好的结果。除此之外,根据我自己的经验,还有一些其他项目:

随机森林在小数据集上表现更好;梯度提升树需要大量数据 随机森林更容易解释和理解。这可能看起来很愚蠢,但如果需要由技术较少的人使用,可以更好地采用模型

【讨论】:

我不认为随机森林更容易解释或理解,至少对于最终模型而言。训练过程稍微容易一些,但两者的最终模型是相同的,都是决策树的(加权)总和。【参考方案3】:

我认为这也是正确的。我也读过这个页面How Random Forest Works 那里解释了随机森林的优点。像这样:

    对于分类问题的应用,随机森林算法 将避免过拟合问题 对于分类和 回归任务,可以使用同样的随机森林算法 随机森林算法可用于识别最 训练数据集中的重要特征,换句话说, 特征工程。

【讨论】:

以上是关于梯度提升与随机森林的主要内容,如果未能解决你的问题,请参考以下文章

随机森林(Random Forest)和梯度提升树(GBDT)有什么区别?

来自 sklearn 的 SelectFromModel 在随机森林和梯度提升分类器上提供了显着不同的特征

Spark2.0机器学习系列之6:GBDT(梯度提升决策树)GBDT与随机森林差异参数调试及Scikit代码分析

数据结构-集成算法-随机森林

数据结构-集成算法-随机森林

机器学习之路:python 综合分类器 随机森林分类 梯度提升决策树分类 泰坦尼克号幸存者