2017-01-07 13 views
1

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

enter image description here

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

enter image description here

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

В основном мой рабочий процесс идет следующим образом, у меня есть предварительно обученный model, экземпляр Keras, и у меня есть признаки X и двоичные этикетки y, каждый элемент y представляет собой массив длины 1000, как это многоуровневая проблема классификации, каждый элемент в y может содержать много 1s, что указывает на принадлежность элемента к кратным классам, поэтому я использовал встроенную потерю binary_crossentropy, и мои результаты прогнозирования модели - это проблемы с запасом. Затем я рисую кривую кривой следующим образом.

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.

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

+0

Возможно, вы захотите посмотреть на roc_auc_score (здесь: http://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html#sklearn.metrics.roc_auc_score) вместо roc_curve, поскольку последний может не соответствовать многоуровневой настройке; первый говорит, что поддерживается многолучевая связь. – StatsSorceress

ответ

0

Запрашиваемая в списке рассылки scikit учиться, они отвечали:

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

В этом случае проблема.