XGBoost 评估指标不平衡数据 - 自定义评估指标

数据挖掘 机器学习 分类 xgboost
2021-09-26 13:20:48

我已经使用 xgboost 包(在 R 中)构建了一个模型,我的数据是不平衡的(5000 正对 95000 负),具有二进制分类输出 (0,1)。

我已经使用 ROC 曲线下的评估指标 Area 进行了交叉验证AUC,我现在认为这是错误的,因为这更适合用于平衡数据集。

我使用 Precision Recal 曲线下面积 (AUPRC) 和 Matthews 相关系数 (MCC) 分析模型的最终结果,但是我现在认为我应该也完全使用 AUPRC 和 MCC 评估交叉验证模型忘记AUROC。

我在使用 CV 和 AUPRC 和 MCC 评估指标的文献中找不到太多。

我只是想确保我的想法是正确的,并且我之前的评估方法是错误的,而 AUPRC / MCC 将是一个更好的方法。

1个回答

我觉得你混合了一些东西:

  1. 1:20 不完全是一类不平衡数据。分类算法也适用于这种比率。如果您仍然如此,您可以对正类进行过度采样或对负类进行欠采样。
  2. AUROC一般会比较不同的型号。就像来自logistic和其他来自Xgboost的一样。(它还确保模型的稳健性),通常AUROC不用于模型精度/获取截止值。
  3. 对数损失/误分类率/F1 分数/MCC 中的任何一个都可以根据您的分类要求使用。如果您被预测为癌症,那么您可能不想错过任何患者并且可能会误报,那么重点应该放在召回上。f1 平衡了精度和召回率。当您不想出现误报时,使用对数损失(对数损失会严重惩罚对错误分类有信心的分类器)。这些链接可能会有所帮助。

https://machinelearningmastery.com/classification-accuracy-is-not-enough-more-performance-measures-you-can-use/

https://www.r-bloggers.com/making-sense-of-logarithmic-loss/

https://towardsdatascience.com/evaluation-metrics-for-classification-409568938a7d