使用 xgboost 进行分类 - 预测

数据挖掘 分类 预测建模 xgboost
2022-02-12 19:35:59

我试图使用 xgboost R 包构建一个 0-1 分类器。我的问题是如何进行预测?例如,在随机森林中,树木对每个选项“投票”,最终预测基于多数。关于 xgboost,回归案例很简单,因为对整个模型的预测等于弱学习器(增强树)的预测之和,但是分类呢?

xgboost 分类器的工作方式是否与随机森林中的相同(我不这么认为,因为它可以返回预测概率,而不是类成员资格)。

1个回答

梯度提升算法创建一组决策树。

此处使用的预测过程使用以下步骤:

  • 对于每棵树,创建一个临时的“预测变量”,将树应用于新数据集。
  • 使用公式聚合所有这些树。根据型号:
    • 伯努利:1/(1 + exp(-(intercept + SUM(temporary pred))))
    • 泊松,伽玛:exp(截距 + SUM(临时预测))
    • adaboost: 1 /(1 + exp(-2*(intercept + SUM(temporary pred))))

临时的“预测变量”是一个概率,它本身没有任何意义。

您拥有的树越多,您的预测就越平滑。(对于每棵树,只有一组有限的值分布在您的观察中)

R过程可能是优化的,但理解这个概念就足够了。

在梯度提升的 h2o 实现中,输出是标志 0/1。我认为默认情况下使用F1 分数将概率转换为标志。我会做一些搜索/测试来确认这一点。

在同一实现中,二元结果的默认输出之一是混淆矩阵,这是评估模型的好方法(并打开一堆全新的询问)。

截距是“树木对其进行调整的初始预测值”。基本上,只是初步调整。

另外:h2o.gbm 文档