在计算不平衡数据集上的ROC AUC时应该使用哪个平均值?

时间:2016-09-19 16:02:15

标签: python machine-learning scikit-learn

我正在对不平衡数据集进行二进制分类任务..现在正在使用以下方法计算ROC AUC: sklearn.metrics.roc_auc_score(y_true, y_score, average='macro') source 我有两个问题:

  • 我不确定平均值macro是否会受到此类不平衡的影响,在这种情况下(对不平衡类进行分类时)最佳平均值是什么?
  • 是否有参考显示scikit-learn如何使用不同的平均参数计算ROC AUC?

3 个答案:

答案 0 :(得分:0)

average='weighted'是您选择不平衡课程的选择 正如

中的3.3.2.1所示
  

http://scikit-learn.org/stable/modules/model_evaluation.html

答案 1 :(得分:0)

使用average='macro'是合理的方法。希望您已经考虑到数据的不平衡性来训练您的模型。所以现在,在评估性能时,您希望为两个类赋予相同的权重。

例如,如果您的集合包含90%的正面示例,并且假设正面标签的roc auc为0.8,则负面标签的roc auc为0.4。使用average='weighted'将产生0.8 * 0.9 + 0.4 * 0.1 = 0.76的平均roc auc。显然,它主要受正面标签得分的影响。使用average='macro'将得到一个得分,使得少数民族标签(0)的权重相等。在这种情况下,0.6。

总而言之,如果您不太关心与否定标签相关的精确度和召回,请使用average='weighted'。否则,请使用average='macro'

答案 2 :(得分:0)