roc_curve 来自多标签分类的斜率

roc_curve from multilabel classification has slope

我有一个用 Keras 编写的多标签分类器,我想从中计算 AUC 并为从我的测试集中分类的每个元素绘制 ROC 曲线。

一切似乎都很好,除了一些元素有一个斜率如下的 roc 曲线:

我不知道在这种情况下如何解释斜率。

基本上我的工作流程如下,我有一个预训练的 model,Keras 实例,我有特征 X 和二值化标签 y,每个元素in y 是一个长度为1000的数组,因为是多标签分类问题 y 中的每个元素可能包含很多个1,说明该元素属于多个类,所以我使用了binary_crossentropy 的内置损失和我的模型预测输出是得分概率。然后我绘制 roc 曲线如下。

from sklearn.metrics import roc_curve, auc
#...
for xi, yi in (X_test, y_test):
    y_pred = model.predict([xi])[0]
    fpr, tpr, _ = roc_curve(yi, y_pred)

    plt.plot(fpr, tpr, color='darkorange', lw=0.5)

预测方法 returns 概率,因为我使用的是 keras 的函数 api。

有谁知道为什么 roc 曲线看起来像这样?

在 scikit-learn 的邮件列表中询问,他们回答:

Slope usually means there are ties in your predictions.

这个问题是这样的