Python 反向ROC-AUC值?
我有一个分类问题,需要在给定数据的情况下预测一类(0,1)。基本上,我有一个包含300多个特征(包括预测的目标值)和2000多行(样本)的数据集。我应用了不同的分类器,如下所示:Python 反向ROC-AUC值?,python,machine-learning,classification,roc,auc,Python,Machine Learning,Classification,Roc,Auc,我有一个分类问题,需要在给定数据的情况下预测一类(0,1)。基本上,我有一个包含300多个特征(包括预测的目标值)和2000多行(样本)的数据集。我应用了不同的分类器,如下所示: 1. DecisionTreeClassifier() 2. RandomForestClassifier() 3. GradientBoostingClassifier() 4. KNeighborsClassifier() 除了0.28左右的随机森林外,几乎所有的分类器都给了我类似的结果,AUC值在0.5
1. DecisionTreeClassifier()
2. RandomForestClassifier()
3. GradientBoostingClassifier()
4. KNeighborsClassifier()
除了0.28左右的随机森林外,几乎所有的分类器都给了我类似的结果,AUC值在0.50左右。我想知道,如果我反转随机森林结果,是否正确,如:
1-0.28= 0.72
并将其报告为AUC?它是否正确?你的直觉没有错:如果二元分类器的性能确实比随机分类器差(即AUC<0.5),有效的策略是简单地反转其预测,即每当分类器预测1时报告0,反之亦然);从相关信息中(增加强调): 对角线分割ROC空间。对角线上方的点表示良好的分类结果(优于随机);线下的点表示不良结果(比随机结果更糟)。请注意,可以简单地反转一贯不好的预测值的输出,以获得好的预测值 尽管如此,该反向分类器的形式上正确的AUC是首先反向模型的单个概率预测
prob
:
prob_invert = 1 - prob
然后使用这些预测计算AUCprob_invert
(可以说,这个过程应该会给出与您描述的简单方法相似的结果,即从1中减去AUC,但我不确定确切的结果-另请参见此)
不用说,所有这些都是基于这样的假设,即您的整个过程是正确的,即您没有任何建模或编码错误(构建比随机更差的分类器并不简单)。ROC指的是图(接收器工作特征图/曲线),AUC指的是分类器曲线下的区域。您得到的AUC值(例如0.50或0.28)是正确的报告值。0.5是2类分类(如您的案例)的更改级别。