roc_curve из многопозиционной классификации имеет наклон

У меня есть многозначный классификатор, написанный на Keras, из которого я хочу вычислить AUC и построить кривую ROC для каждого элемента, классифицированного из моего тестового набора.

введите описание изображения здесь

Кажется, все в порядке, за исключением того, что некоторые элементы имеют наклонную кривую, которая имеет следующий наклон:

введите описание изображения здесь

Я не знаю, как интерпретировать наклон в таких случаях.

В основном мой рабочий процесс выглядит следующим образом: у меня есть предварительно обученный model, экземпляр Keras, и у меня есть функции X и бинаризованные метки y, каждый элемент в y представляет собой массив длиной 1000, так как это проблема классификации с несколькими метками. Элемент в y может содержать много единиц, что указывает на принадлежность элемента к множественным классам, поэтому я использовал встроенную потерю 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)

Метод прогнозирования возвращает вероятности, так как я использую функциональный api keras.

Кто-нибудь знает, почему кривые roc выглядят так?


person Ismael    schedule 07.01.2017    source источник
comment
Вы можете посмотреть roc_auc_score (здесь: scikit-learn.org/stable/modules/generated/) вместо roc_curve, поскольку последнее может не подходить для настройки с несколькими ярлыками; в первом прямо говорится, что поддерживается многозначность.   -  person StatsSorceress    schedule 20.02.2018


Ответы (1)


На вопрос в списке рассылки scikit-learn они ответили:

Наклон обычно означает, что ваши прогнозы связаны.

Что и есть в этой проблеме.

person Ismael    schedule 12.01.2017