【问题标题】:which averaging should be used when computing the ROC AUC on imbalanced data set?在不平衡数据集上计算 ROC AUC 时应该使用哪个平均值?
【发布时间】:2017-01-27 09:26:29
【问题描述】:

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

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

【问题讨论】:

  • 这是题外话,在 stats.stackexchange.com 中是题外话

标签: python machine-learning scikit-learn


【解决方案1】:
【解决方案2】:

average='weighted' 是您解决不平衡类问题的选择 从 3.3.2.1 开始

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

【讨论】:

  • 我尝试改变平均值但总是给我相同的值知道为什么吗?我将如何计算它放在主要问题中,它是针对二进制分类问题的。
【解决方案3】:

使用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'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-23
    • 2017-03-20
    • 2020-06-07
    • 1970-01-01
    • 2017-02-06
    • 1970-01-01
    • 2013-01-14
    • 2020-10-09
    相关资源
    最近更新 更多