Curvas PR y ROC

Jaime Ramírez
bluekiri
Published in
5 min readJul 19, 2018
Photo by Juan Gomez on Unsplash

Las curvas ROC y PR (precision-recall) son herramientas utilizadas en la evaluación del rendimiento de clasificadores binarios. Estas curvas nos indican de manera visual la relación entre la precisión y la sensibilidad de nuestro modelo, a la vez que sirven para comparar el rendimiento de distintos modelos de clasificación.

Precision y Recall

Es necesario conocer los conceptos de precision y recall para entender estas curvas. A pesar de que son conceptos bastante conocidos en el mundo del machine-learning y la inteligencia artificial, los explicaré brevemente. Estos conceptos nacen de una serie de indicadores que contabilizan si las predicciones de un clasificador binario(positivo o negativo) se han realizado correctamente:

TP (True positives): ejemplos positivos clasificados correctamente. Por ejemplo, supongamos que tenemos un clasificador binario de imágenes de gatitos que nos indica si la imagen es de un gatito o no. El TP es el número de imágenes de gatitos clasificadas positivamente.

FP (False positives): ejemplos negativos clasificados incorrectamente como positivos. En el ejemplo de los gatitos, sería el número de imágenes sin gatitos que son clasificadas positivamente como imagen de gatito. Se puede considerar este valor como aquellas fallos cometidos debido a clasificaciones muy optimistas (muy sesgadas hacia el caso positivo).

TN (True negatives): ejemplos negativos clasificados correctamente. De nuevo, en el ejemplo de los gatitos, sería el número de imágenes sin gatitos que son clasificadas negativamente (imagen sin gatito)

FN (False negatives): ejemplos positivos clasificados incorrectamente como positivos. En nuestro ejemplo, es el número de imágenes de gatitos que son clasificadas como negativamente (imagen sin gatito). Podemos pensar en este indicador como el número de ejemplos correctos que escapan a nuestro “radar”.

Con estas cuatro métricas, podemos calcular los ratios de precision y recall.

Precision: la precisión es el ratio o porcentaje de clasificaciones correctas de nuestro clasificador. En otras palabras, de todo lo que nuestro clasificador clasifica como positivo, correcta o incorrectamente (TP + FP), cual es el ratio de clasificaciones correctas.

Recall: el recall o sensibilidad de nuestro modelo es el ratio de positivos detectado en el dataset por nuestro clasificador. En otras palabras, de todos los positivos reales de nuestro dataset, detectados o no(TP + FN), cual es el ratio de positivos detectados.

Equilibrio entre Precision y Recall

Las métricas de precision y recall están relacionadas de manera que si entrenas tu clasificador para aumentar la precisión, disminuirá el recall y viceversa. Veamos la aplicación de esta relación en nuestro ejemplo de los gatitos:

Supongamos que queremos hacer que nuestro clasificador sea muy sensible a imágenes de gatitos, es decir, queremos aumentar el recall, probablemente a un valor cercano a 1 (100%). Podríamos hacer esto fácilmente si hacemos que nuestro modelo sea una función simple que siempre devuelva True. La desventaja de esto es que nuestra precisión sería muy pobre, prácticamente aleatoria, probablemente cerca del 0.5 si nuestro dataset está balanceado.

Ahora supongamos que queremos un clasificador muy preciso, con una precisión cerca del 1. Evidentemente, si nuestro clasificador es muy “tiquismiquis” a la hora de considerar una imagen de gatito como válida, nos dejaremos muchas por el camino (tendremos muchos FN) y esto reducirá el recall. Nuestro clasificador será muy preciso, pero menos sensible.

¿Y como le decimos al clasificador cuál si queremos que sea más preciso, o más sensible? Generalmente, el modelo tomará la decisión de si la clasificación es positiva o negativa si el valor devuelto por el modelo supera un decision threshold o umbral de decisión. Si aumentamos este valor, estaremos aumentando la precisión, si lo disminuimos, aumentamos la sensibilidad (recall).

Equilibrio precision-recall en función del umbral de decisión

Aquí es donde las curvas PR y ROC nos ayudan a ver el equilibrio entre precisión y sensibilidad de un modelo.

PR curve (curva precision-recall)

La curva PR es el resultado de dibujar la gráfica entre el precision y el recall. Esta gráfica nos permite ver a partir de qué recall tenemos una degradación de la precisión y viceversa. Lo ideal sería una curva que se acerque lo máximo posible a la esquina superior derecha (alta precisión y alto recall)

En en título del gráfico vemos AP=0.62. Este valor es el Average precision y es una manera de calcular el área bajo la curva PR o PR AUC, o lo que es lo mismo, el resultado de integrar la curva. El Average Precision nos sirve para evaluar y comparar el rendimiento de modelos. Cuanto más se acerque su valor a 1, mejor será nuestro modelo.

ROC curve

La curva ROC (receiver operating characteristic) es parecida a la curva PR pero cambiando algunos valores. Relaciona el recall con el ratio de falsos positivos. Es decir relaciona la sensibilidad de nuestro modelo con los fallos optimistas (clasificar los negativos como positivos). Tiene sentido ya que, generalmente, si aumentamos el recall, nuestro modelo tenderá a ser más optimista e introducirá mas falsos positivos en la clasificación.

En las curvas ROC, nos interesa que la curva se acerque lo máximo posible a la esquina superior izquierda de la gráfica, de manera que el hecho de aumentar la sensibilidad (el recall) no haga que nuestro modelo introduzca más falsos positivos.

En este caso también podemos calcular el ROC AUC, que también nos sirve como métrica para resumir la curva y poder comparar modelos. De manera similar al Average Precision, nos interesa que su valor se acerque lo máximo posible a 1.

Diferencias entre curvas ROC y PR

Por lo general, usaremos la curva PR o el Average Precision cuando tengamos problemas de datasets no balanceados, es decir, cuando la clase positiva ocurre pocas veces. Cuando hay pocos ejemplos positivos, la curva ROC o el ROC AUC puede dar un valor alto, sin embargo, la curva PR estará lejos de su valor óptimo, poniendo de manifiesto un indicador de precisión relacionado con la baja probabilidad de la clase positiva.

Será una opción interesante usar la curva ROC y el ROC AUC cuando tengamos un dataset más balanceado o queramos poner de manifiesto un indicador más relacionado con falsas alarmas (falsos positivos).

Referencias

--

--

Jaime Ramírez
bluekiri

Software architect. PhD student in Artificial Intelligence at UCLM.