为什么XGBoost比Random Forest更好?
0 4632
0
该提问暂无详细描述
收藏
2021-03-02 12:28 更新 小眼的铁板烧 •  3524
共 1 个回答
高赞 时间
0

从数据科学家的经验的角度来讲,没有具体的证据表明,XGBoost的效果要比随机森林好得多,但是多次的经验表明,就预测能力而言,增强算法比随机森林具有轻微优势。

XGBoost

XGBoostXGBoost的过程恰好是迭代学习,这意味着该模型将首先预测某些事物,然后将其错误作为预测经验进行自我分析,并对在下一次迭代中做出错误预测的数据点赋予更多权重。在第二次迭代之后,它会再次自我分析其错误的预测,并为在下一次迭代中预测为错误的数据点赋予更大的权重。该过程作为一个循环继续进行。因此,从技术上讲,如果进行了预测,则可以肯定的是,它并不是随机发生的,而是具有透彻的理解和数据模式的。在大多数情况下,这种防止发生预测的模型是值得信赖的。

随机森林

随机森林只是一个决策树的集合,其中每个决策树都提供预测,最后,我们收集所有决策树的输出,并根据该随机森林的性质,将该集合的均值,中位数或众数视为该随机森林的预测。从较高的层次看,这似乎很好,但是由于每棵决策树都有自己的情况,例如类不平衡,样本重复,过度拟合,不适当的节点拆分,等等,会造成整体的预测效果下降。

比较

  1. 在进入实际建模之前,XGBoost会立即以称为“相似性分数”的分数对决策树进行修剪。它将节点的“收益”视为节点的相似度分数与子项的相似度分数之差。如果发现从节点获得的增益很小,那么它将停止将树构建到更大的深度,这可以克服过度拟合的挑战。同时,如果森林中的大多数决策树都提供了相似的样本,则随机森林可能会过度拟合数据。如果决策树完全生长,那么一旦引入测试数据,模型就会崩溃。因此,应主要考虑将样本的所有基本单元分配给所有决策树,且其参与程度大致相等。
  2. 对于不平衡的数据集,XGBoost是一个不错的选择,在这种情况下,我们不能相信随机森林。在诸如伪造或欺诈检测之类的应用程序中,几乎可以肯定这些类是不平衡的,与非真实交易相比,真实交易的数量将是巨大的。在XGBoost中,当模型首次无法预测异常时,它将在即将到来的迭代中为其提供更多的偏好和权重,从而提高了其以低参与度预测类的能力,但是我们不能保证随机森林会用适当的程序处理这种类别不平衡的异常。
  3. XGBoost与随机森林之间最重要的区别之一是,当降低模型成本时,XGBoost总是更加重视功能空间,而随机森林则试图为超参数提供更多偏好来优化模型。超参数的微小变化将影响森林中几乎所有决策树,这可能会更改预测。另外,我们会尽可能让测试数据具有很多的的实时变化和针对整个森林的预定义超参数思维方式,虽然随机森林会在迭代进行时以一种有效的方式进行自我调整,但是这不是一个好方法,而XGBoost的超参数在开始时仅应用于一棵树。不仅如此,相比于随机森林,XGBoost仅需要非常少量的初始超参数(收缩参数,树的深度,树的数量)。
  4. 当模型遇到类别数量不同的类别变量时,随机林可能会在参与性更大的情况下为类别提供更多偏好。可以将此点与点3相关联。
  5. 在Poisson回归,秩回归等情况下,XGBoost可能更可取。这是因为树是通过优化目标函数得出的。

虽然这些例子表明XGBoost可能有更好的性能,但是这完全取决于案例和数据的使用。在某些一般情况下,随机森林的性能优于XG Boost,例如:

  1. 随机森林比Boosting算法更容易调整。
  2. 随机森林很容易适应分布式计算
  3. 如果对数据进行规范的预处理和清理,随机森林几乎不会过拟合,除非对大多数决策树重复进行类似的采样。

转载自:https://www.quora.com/Why-is-XGBoost-better-than-Random-Forest

收藏
2021-03-02 12:57 更新 空心人 •  3374