Basado en TPR y FPR, he generado una curva ROC para mi modelo de clasificación binaria. No sé cómo calcular el valor de AUC. Sería de gran ayuda para mí si me puede ayudar a calcular el valor de AUC.
machine-learning
classification
Rejaul Karim
fuente
fuente
Respuestas:
¡Bienvenido a la comunidad!
Como saben, AUC es solo el área bajo la curva ROC. Entonces, la pregunta es más acerca de los métodos numéricos, ya que tiene un conjunto de puntos y le gustaría calcular el área debajo de él.
Suma riemanniana
Solución trivial. Simplemente haz rectángulos a partir de los puntos que tienes. El área de cada rectángulo es simplemente el producto de los bordes. Entonces resumirlos! Probablemente no te guste, ¿verdad?
Método trapezoidal
Después de Riemannian, el algoritmo más simple e ingenuo para hacer esto. Simplemente tiene un conjunto de puntos y simplemente calcula el área trapezoidal entre cada par y los suma como lo que ve en la figura a continuación. Tiene el error de cálculo máximo, ya que simplifica mucho el problema.
Método Simpson (1/3)
¡Mucho mejor cuando hablamos de curvas! Hagámoslo simple y al grano. Puede modelar su función en cada intervalo utilizando una cuadrática (y= aX2+ b x + c ) y que tiene 3 puntos de datos. Usando sus tres puntos de datos, puede calcularuna , si y C . ¡Entonces el área bajo la curva no es tan difícil, pero tenemos una mejor solución! Confía en mí o no, el valor de esta integración es simplemente
dónde( a , f( a ) ) y ( b , f( b ) ) son puntos finales de intervalo y ( m , f( m ) ) Es el punto medio. Vea la imagen a continuación desde aquí para comparar estos métodos.
Métodos de Romberg
Los métodos de Simpson y / o trapezoidales pueden aplicarse recursivamente para lograr un cálculo más preciso. Se llama método Romberg . La precisión de estos métodos fue en la duración del intervalo. Los intervalos más pequeños dan una integración más precisa. Romberg usa este hecho para acercarse iterativamente a una respuesta más precisa.
Y, por supuesto, tonos de más algoritmos para hacer eso.
PD: Ciertamente tienes bibliotecas y funciones en diferentes idiomas para calcularlo por ti. Scipy ofrece Python por ejemplo .
¡Espero eso ayude! ¡Buena suerte!
fuente