es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Entendiendo sklearn CalibratedClassifierCV

Hola a todos, estoy teniendo dificultades para entender cómo utilizar la salida de sklearn.calibration.CalibratedClassifierCV.

He calibrado mi clasificador binario usando este método y los resultados han mejorado considerablemente. Sin embargo, no estoy seguro de cómo interpretar los resultados. La guía de sklearn indica que, después de la calibración,

la salida del método predict_proba puede interpretarse directamente como un nivel de confianza. Por ejemplo, un clasificador (binario) bien calibrado debería clasificar las muestras de tal manera que, entre las muestras a las que se les haya asignado un valor de predict_proba cercano a 0.8, aproximadamente el 80% realmente pertenezcan a la clase positiva.

Ahora me gustaría reducir los falsos positivos aplicando un umbral de 0.6 para que el modelo prediga la etiqueta True. Sin la calibración, simplemente habría utilizado my_model.predict_proba() > 0.6. Sin embargo, parece que después de la calibración, el significado de predict_proba ha cambiado, así que no estoy seguro si todavía puedo hacerlo.

De acuerdo a una prueba rápida, parece que predict y predict_proba siguen la misma lógica que esperaría antes de la calibración. La salida de:

pred = my_model.predict(valid_x)
proba = my_model.predict_proba(valid_x)
pd.DataFrame({"label": pred, "proba": proba[:,1]})

es la siguiente:

enter image description here

Donde todo lo que tenga una probabilidad superior a 0.5 se clasifica como Verdadero, y todo lo que tenga una probabilidad inferior a 0.5 se clasifica como Falso.

¿Puedes confirmar que, después de la calibración, aún puedo usar predict_proba para aplicar un umbral diferente y así identificar mis etiquetas?

[1] https://scikit-learn.org/stable/modules/calibration.html#calibration

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, aún puedes usar predict_proba para aplicar un umbral diferente después de la calibración. La salida de CalibratedClassifierCV reescala las probabilidades predichas para que puedan interpretarse como estimaciones precisas de las probabilidades de clase. El método predict aún predice la clase con la probabilidad más alta como antes, pero el método predict_proba ahora produce probabilidades bien calibradas que pueden interpretarse directamente como un nivel de confianza.

    En tu caso, si deseas reducir los falsos positivos aplicando un umbral de 0.6 para que el modelo prediga la etiqueta True, simplemente puedes usar my_model.predict_proba(valid_x)[:, 1] > 0.6 para obtener las etiquetas predichas en función de las probabilidades calibradas. Esto etiquetará todas las muestras con una probabilidad de pertenecer a la clase positiva superior a 0.6 como True.

    Solo asegúrate de que la salida de predict_proba después de la calibración esté en el rango [0, 1] y esté ordenada en orden decreciente de probabilidad para la clase positiva.

Comments are closed.