校准是否能提高ROC分数?

我在研究执行校准分类器的影响,我读到校准的目的是使分类器的预测更加“可靠”。考虑到这一点,我认为校准后的分类器应该会有更高的分数(roc_auc)

然而,当我在Python中使用sklearn测试这一假设时,我发现了完全相反的结果

你能解释一下吗:

校准是否能提高ROC分数?(或者任何其他指标)

如果不是这样,那么执行校准的优势是什么?

clf=SVC(probability=True).fit(X_train,y_train)calibrated=CalibratedClassifierCV(clf,cv=5,method='sigmoid').fit(X_train,y_train)probs=clf.predict_proba(X_test)[:,1]cal_probs=calibrated.predict_proba(X_test)[:,1]plt.figure(figsize=(12,7))names=['non-calibrated SVM','calibrated SVM']for i,p in enumerate([probs,cal_probs]):    plt.subplot(1,2,i+1)    fpr,tpr,threshold=roc_curve(y_test,p)    plt.plot(fpr,tpr,label=nombre[i],marker='o')    plt.title(names[i]+ '\n' + 'ROC: '+ str(round(roc_auc_score(y_test,p),4)))    plt.plot([0,1],[0,1],color='red',linestyle='--')    plt.grid()    plt.tight_layout()    plt.xlim([0,1])    plt.ylim([0,1])

enter image description here


回答:

简而言之:校准不应影响ROCAUC。

详细回答:

ROCAUC是一个排序的度量(“我们是否将这些观察结果按最佳顺序排列?”)。然而,它并不能保证好的概率。

例子:如果我在分类某人可能患癌症的可能性,我可能总是说一个95%到99%之间的数字,并且只要我按照正确的顺序做出预测(99%的人患有癌症,95%的人没有),我仍然可以有完美的ROCAUC。

在这里我们可以说这个分类器(在不太可能患癌时说95%)具有很好的排序能力,但校准得不好。

那么我们能做什么呢?我们可以应用一个单调变换,这可以修复它而不改变排序能力(因此不改变ROCAUC)。

例子:在我们的癌症例子中,我们可以说如果预测低于97.5%,它们应该减少90%,当它们高于97.5%时,它们将被保留。这种非常粗糙的方法不会影响ROC,但会将“最低”的预测发送到接近0,从而改善我们的校准,如Brier Score所测量的那样。

太好了,现在我们可以变得聪明一点!改善我们的Brier Score的最佳单调曲线是什么?嗯,我们可以让Python来处理这个,通过使用scikit的校准,它基本上为我们找到了那条曲线。同样,它将改善校准,但不会改变ROCAUC,因为排序顺序被保持了。

太好了,所以ROCAUC不会移动。

然而…
引用伽利略在承认地球不绕太阳转之后的话… “E pur si muove” (然而它确实移动了)

好吧。现在事情变得有点奇怪。为了进行单调变换,一些原本接近的观察(例如25%和25.5%)可能会被“压缩”在一起(例如0.7%和0.700000001%)。这可能会被四舍五入,导致预测变得相同。然后,当我们计算ROCAUC时…它就会移动。

然而,就所有实际目的而言,你可以期望“真实”的ROCAUC不会受到校准的影响,它应该只影响你测量概率的能力,如Brier Score所测量的那样

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注