Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 反向ROC-AUC值?_Python_Machine Learning_Classification_Roc_Auc - Fatal编程技术网

Python 反向ROC-AUC值?

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

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

 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
然后使用这些预测计算AUC
prob_invert
(可以说,这个过程应该会给出与您描述的简单方法相似的结果,即从1中减去AUC,但我不确定确切的结果-另请参见此)

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

ROC指的是图(接收器工作特征图/曲线),AUC指的是分类器曲线下的区域。您得到的AUC值(例如0.50或0.28)是正确的报告值。0.5是2类分类(如您的案例)的更改级别。