XGBoost 多分类解释预测概率

数据挖掘 xgboost 多类分类 阶级失衡
2021-09-24 16:05:46

让我们考虑一个例子。我有患者级别的数据,他们的症状,从各种医学测试中读取。基于此,我构建了一个给定患者数据的二元分类器,以分类他们是否可能患有疾病,如果是,我想手动对他们进行医学测试。对于这种情况,我们会查看疾病类别并对预测概率进行排序,然后选择患病风险最高的患者。

几个月后,说这种疾病演变成另一种菌株。因此,我们已经有一类不平衡的健康与感染患者。不是新的菌株仍将是一个较小的种群。除此之外,症状,各种测试读数也会有所不同。因此,将其转化为多分类问题是有意义的。当您构建一个多分类器并且您有三个概率时,您将如何对同一组患者进行排序?

如果您对可能被感染的患者的风险感兴趣,那么将其中一种疾病的最大值作为一个好方法来进行,或者是否有一种方法可以根据他们的个体概率来选择它们?

编辑:带来更多的清晰度。multi:softprob 给出了每个类的概率。如果你有 3 个类,它会给出每个类的三个概率,总和为 1。更多细节在这里

鉴于我们将从上面的示例中获得每行/患者的多个概率,您如何选择最终概率来对有风险的患者进行排序。

1个回答

使用 xgboost 进行多分类通常是 One vs All。这意味着首先您尝试预测它是否属于第一类。然后两个二等或不...

您可以将其理解为属于一个类别而不属于其他类别的概率。

让我们举个例子来更好地理解:假设您有大量患者患有 3 种疾病:冠状病毒、非典和艾滋病毒。

您使用 xgboost 或其他工具构建多分类模型,并为新患者进行预测并检查概率:

新冠 [0.8] 非典 [0.1] 艾滋病 [0.01] 没有生病 [0.09]

你从这里做的是选择最可能的原因(电晕),这是你的最后一课。

如果你做多标签,你也可以得到这样的东西 Corona [0.9] Sars [0.20] HIV [0.999]

这意味着即使它很有可能感染电晕,也有更高的感染艾滋病毒的可能性。在多分类中,与多标签不同,您可以让患者同时患有这两种疾病

从 sklearn文档

one-vs-the-rest 元分类器也实现了一个predict_proba方法,只要这种方法是由基分类器实现的。此方法在单标签和多标签情况下返回类成员资格的概率。请注意,在多标签情况下,概率是给定样本属于给定类别的边际概率。因此,在多标签情况下,给定样本的所有可能标签上的这些概率之和不会像在单标签情况下那样总和。

总之,如果疾病是独立的,它将预测患者患有一种疾病的概率,只要患者有可能没有生病,就必须有一类没有生病

注意:在NN中是不同的