¿Por roc_auc produce resultados extraños en sklearn?

fem:

Tengo un problema de clasificación binaria donde utilizo el siguiente código para obtener mi weighted avarege precision, weighted avarege recall, weighted avarege f-measurey roc_auc.

df = pd.read_csv(input_path+input_file)

X = df[features]
y = df[["gold_standard"]]

clf = RandomForestClassifier(random_state = 42, class_weight="balanced")
k_fold = StratifiedKFold(n_splits=10, shuffle=True, random_state=0)
scores = cross_validate(clf, X, y, cv=k_fold, scoring = ('accuracy', 'precision_weighted', 'recall_weighted', 'f1_weighted', 'roc_auc'))

print("accuracy")
print(np.mean(scores['test_accuracy'].tolist()))
print("precision_weighted")
print(np.mean(scores['test_precision_weighted'].tolist()))
print("recall_weighted")
print(np.mean(scores['test_recall_weighted'].tolist()))
print("f1_weighted")
print(np.mean(scores['test_f1_weighted'].tolist()))
print("roc_auc")
print(np.mean(scores['test_roc_auc'].tolist()))

Me dieron los siguientes resultados para el mismo conjunto de datos con 2 configuraciones de funciones diferentes.

Feature setting 1 ('accuracy', 'precision_weighted', 'recall_weighted', 'f1_weighted', 'roc_auc'):  
0.6920, 0.6888, 0.6920, 0.6752, 0.7120

Feature setting 2 ('accuracy', 'precision_weighted', 'recall_weighted', 'f1_weighted', 'roc_auc'):
0.6806  0.6754  0.6806  0.6643  0.7233

Así, podemos ver que en feature setting 1obtenemos buenos resultados para 'exactitud', 'precision_weighted', 'recall_weighted', 'f1_weighted' en comparación con feature setting 2.

Sin embargo, cuando se trata de 'roc_auc' feature setting 2es mejor que feature setting 1. He encontrado este extraño becuase cada otra métrica fue mejor con feature setting 1.

Por un lado, sospecho que esto sucede desde que estoy usando weightedanota para precision, recall and f-measurey no con roc_auc. ¿Es posible hacerlo weighted roc_aucpara la clasificación binaria en sklearn?

¿Cuál es el problema real de estos resultados roc_auc extraños?

Estoy feliz de proporcionar más detalles si es necesario.

desertnaut:

No es raro, porque la comparación de todas estas otras métricas con las AUC es como comparar manzanas con naranjas.

He aquí una descripción de alto nivel de todo el proceso:

  • Clasificadores probabilísticos (como RF aquí) salidas de probabilidad productos pen [0, 1].
  • Para obtener predicciones de clase duros ( 0/1), se aplica un umbral a estas probabilidades; si no se establece de manera explícita (como aquí), este umbral se toma implícitamente a ser de 0,5, es decir, si p>0.5a continuación class=1, de lo contrario class=0.
  • Métricas como la exactitud, precisión, recordar, y f1-score se calculan sobre las predicciones de clase duros 0/1, es decir, después del umbral se ha aplicado.
  • En cambio, las medidas de AUC El rendimiento de un clasificador binario promediadas en el rango de todos los umbrales posibles , y no para un determinado umbral.

Así que, sin duda puede suceder, y que de hecho puede dar lugar a confusión entre los nuevos practicantes.

La segunda parte de mi respuesta en esta pregunta similar podría ser útil para más detalles. citando:

De acuerdo con mi experiencia, al menos, la mayoría de los practicantes de LD piensan que las AUC medidas de puntuación algo diferente de lo que realmente lo hace: la común (y lamentable) el uso es igual que cualquier otro el de mayor-la-métrica mejor, al igual que la precisión, lo que puede conducirá naturalmente a los rompecabezas como el que te expresas.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=369337&siteId=1
Recomendado
Clasificación