为什么XGBoost只支持二元分类



我注意到 Python 和 R 中的 XGBoost 实现仅支持分类目标变量的二元分类。

  • 我已经为我的分类问题实现了随机森林和极端随机树

为什么我不能使用此方法对来自多个类别的目标进行分类?

是否可以对我的多类数据集进行调整以使用 XGBoost?

它确实支持多类分类。下面是代码:

param = {
'max_depth': 3,  # the maximum depth of each tree
'eta': 0.3,  # the training step for each iteration
'silent': 1,  # logging mode - quiet
'objective': 'multi:softprob',  # error evaluation for multiclass training
'num_class': 3}  # the number of classes that exist in this dataset

您可以在 Python 中使用num_class作为参数进行多类分类。

从 XGboost 文档页面:

指定学习任务和相应的学习目标。
目标选项如下:

  • 目标 [默认=注册:平方错误]

    • [...]

    • multi:softmax:设置 XGBoost 以使用 softmax 目标进行多类分类,还需要设置 num_class(类数(

    • multi:softprob:与softmax相同,但输出一个ndata * nclass向量,可以进一步重塑为ndata * nclass矩阵。结果包含属于每个类的每个数据点的预测概率。
    • [...]
  • eval_metric [根据目标默认]
    • [...]
    • merror:多类分类错误率。它的计算方式为 #(错误大小写(/#(所有情况(。
    • mlogloss:多类logloss。

看起来多类分类有很多选择,只需选择您的武器:)

相关内容

  • 没有找到相关文章

最新更新