python - XGBoost的多类别分类是如何工作的?

标签 python r machine-learning xgboost

我试图了解 XGBoost 中的多类分类是如何工作的。我已经阅读了 Chen 和 Guestrin 的论文(2016, https://arxiv.org/abs/1603.02754 ),但细节我仍然不清楚:

假设我想为 3 类别分类任务生成一个概率分类器。如果我理解正确的话,XGBoost 将回归树拟合为“弱学习器”或增强模型的组件。因此,如果将新的预测向量传递给 XGB 模型,回归树会生成一个真实值作为“预测”,其(加权)组合就是增强模型预测。

来自this question以及论文中的文档,我发现将 softmax 激活函数应用于增强模型预测(真实值?),并且树结构(例如 split 点)是通过优化交叉熵损失函数来确定的softmax 应用于模型输出。

我不清楚的是三类概率到底是如何获得的。如果模型输出只是一个实值(各个回归树输出的加权组合),那么 softmax 函数的应用如何返回 3 个概率?

我在 Python 和 R 中使用 XGBoost 库,但这可能没有什么区别。

最佳答案

XGBoost 模型内可以有多个子 GBDT 模型。具体来说,在多类分类的情况下,每一类都有一个子 GBDT 模型。

在预测过程中,XGBoost 模型会评估所有子 GBDT 模型并获得原始 boosting 分数的 n 元素数组。将 softmax 归一化应用于该数组,生成概率值的 n 元素数组。

您可以将 XGBoost 模型导出为 JSON 或 PMML 数据格式,以更详细地检查该机器。

关于python - XGBoost的多类别分类是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59758808/

相关文章:

python - 有没有办法将 h2oframe 转换为 Pandas 数据帧

r - 将一个数字更改为 R 中另一个数字的整数倍?

r - 是否可以缓存 `lm()` 矩阵以适应新数据?

python - scipy 中的 kmeans 和 kmeans2 有什么区别?

tensorflow - 可变长度序列上的 RNN 注意力权重是否应该重新归一化为 "mask"零填充的影响?

python - 如何找到第一次出现的 Pandas 数据框值的显着差异?

python mock.mock_reset() 返回模拟而不是重置模拟

python - 使用 DataFrame 合并(连接)4 个具有不同 ID 和多个值的不同 CSV 文件

r - 创建指向 Shiny 应用程序其他部分的链接

machine-learning - CartPole 任务的最佳目标函数是什么?