ROC-AUC值反吗?

时间:2019-01-15 08:51:28

标签: python machine-learning classification roc auc

我有一个分类问题,在给定数据的情况下,我需要预测(0,1)的类别。基本上,我的数据集包含300多个要素(包括用于预测的目标值)和2000多个行(样本)。我应用了以下不同的分类器:

 1. DecisionTreeClassifier()
 2. RandomForestClassifier()
 3. GradientBoostingClassifier()
 4. KNeighborsClassifier()

几乎所有的分类器在0.50 AUC值附近都给了我类似的结果,除了随机森林在0.28附近。我想知道,如果我对RandomForest结果进行反演,是否正确:

 1-0.28= 0.72

并将其报告为AUC?正确吗?

1 个答案:

答案 0 :(得分:1)

您的直觉是没有错的:如果二元分类器的性能确实比随机性差(即AUC <0.5),则有效的策略是简单地反转其预测,即,只要分类器预测到,报告为0 1,反之亦然);来自相关的Wikipedia entry(强调):

  

对角线分隔ROC空间。对角线上方的点表示良好的分类结果(优于随机);线下的点表示不良结果(差于随机)。请注意,一贯糟糕的预测变量的输出可以简单地反转以获得一个好的预测变量

     

enter image description here

尽管如此,此倒置分类器的形式正确的AUC首先是倒置模型的各个概率预测prob

prob_invert = 1 - prob

,然后使用这些预测prob_invert计算AUC(可以说,该过程应该使用您所描述的简单方法(从1中减去AUC得出的简单方法)得出相似的结果,但是我不确定确切的结果-另请参见此Quora answer)。

不用说,所有这些都是基于这样一个假设,即您的整个过程都是正确的,即您没有任何建模或编码错误(构造一个比随机分类器差的分类器并非完全不重要)。