我正在对不平衡数据集进行二进制分类任务..现在正在使用以下方法计算ROC AUC:
sklearn.metrics.roc_auc_score(y_true, y_score, average='macro')
source
我有两个问题:
macro
是否会受到此类不平衡的影响,在这种情况下(对不平衡类进行分类时)最佳平均值是什么?答案 0 :(得分:0)
average='weighted'
是您选择不平衡课程的选择
正如
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)