1 votos

¿Cómo interpretar la curva ROC con la matriz de confusión y la puntuación F1?

He implementado un clasificador de bosque aleatorio para realizar una clasificación binaria en clases altamente desequilibradas. Como medidas de rendimiento, se consideraron el ROC y la puntuación f1. Sin embargo, la curva ROC da un AUC de 1 que corresponde al valor perfecto y estoy un poco preocupado por ello ya que es la solución perfecta. He adjuntado la matriz de confusión de la curva ROC a continuación y la puntuación F1 es de 0,99942. ¿Puede alguien interpretar estos resultados para comprobar si el modelo es bueno o malo?

dfinput =pd.read_csv(os.path.join(os.path.abspath(os.path.dirname(__file__)), "../data.csv"))
dfoutput = dfinput["target"]
dfinput = dfinput[selecting feature columns]
X = np.array(dfinput)
y = np.array(dfoutput)

scaler = StandardScaler()
X = scaler.transform(X)
randomforestclassifier = RandomForestClassifier(n_estimators=50)

print("Feature Importance Started")
model = ExtraTreesClassifier()
model.fit(X, y)
print(model.feature_importances_)
print("Feature Importance Ended")

X_train, X_test, y_train,y_test = train_test_split(X,y,random_state=3)
X_resampled, y_resampled = SMOTE(ratio='minority').fit_sample(X_train, y_train)
randomforestclassifier.fit(X_resampled, y_resampled)
list1 = randomforestclassifier.predict(X_test)
list2 = randomforestclassifier.predict(X_train)

prob_test = randomforestclassifier.predict_proba(X_test)
predictions = pd.DataFrame(prob_test)
predictions = predictions.iloc[:, 1]

false_positive_rate, true_positive_rate, thresholds = roc_curve(y_test, predictions)
roc_auc = auc(false_positive_rate, true_positive_rate)

plt.title('Receiver Operating Characteristic of Test set')
plt.plot(false_positive_rate, true_positive_rate, 'b',
label='AUC = %0.2f'% roc_auc)
plt.legend(loc='lower right')
plt.plot([0,1],[0,1],'r--')
plt.xlim([-0.1,1.2])
plt.ylim([-0.1,1.2])
plt.ylabel('True Positive Rate')
plt.xlabel('False Positive Rate')
plt.show()

print("F Score for test data %s "%(f1_score(y_test, list1, average='micro')  ))

Matriz de confusión Confusion matrix

Curva ROC ROC curve

0voto

ccy Puntos 21

Quiero comentar pero sin la suficiente reputación, así que voy a publicar aquí como "respuesta".

Como señaló Fabian, parece muy sospechoso con un AUC perfecto en el conjunto de pruebas, uno no puede evitar buscar la fuga de datos. Una cosa que podría intentar depurar es eliminar las características más importantes (que puede obtener de su clasificador de bosque aleatorio), volver a ajustar el modelo y ver cómo cambia el AUC. Probablemente empezaría eliminando la característica que tiene una importancia de alrededor de 0,2. Si usted ve un salto repentino en algún momento, entonces podría darle alguna pista ...

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X