Precision, Recall, F1, Accuracy en clasificación

Cuando necesitamos evaluar el rendimiento en clasificación, podemos usar las métricas de precision, recall, F1, accuracy y la matriz de confusión. Vamos a explicar cada uno de ellos y ver su utilidad práctica con un ejemplo.

Términos es Español

Estas métricas también tienen su correspondiente nombre en español, pero es importante que sepas su nombre en inglés porque muchas librerías (scikit-learn), las tienen ya implementadas. En esta tabla puedes encontrar la correspondencia.

InglésEspañol
PrecisionPrecisión
RecallExhaustividad
F1-scoreValor-F
AccuracyExactitud
Confusion MatrixMatriz de Confusión
True PositivePositivos Verdaderos
True NegativeNegativos Verdaderos
False PositivePositivos Falsos
False NegativeNegativos Falsos

Ejemplo de Marketing

Vamos a utilizar un ejemplo de marketing para entender mejor qué es lo que miden cada una de estas métricas y su significado en el ámbito de los negocios.

Imagínate que estamos llevando la campaña de marketing para un banco. Al banco le interesa vender un fondo de inversión a sus clientes, porque así pueden ganar dinero por la comisión de gestión.

Podríamos contactar con todos los clientes del banco y ofrecerles el fondo de inversión. Esto es bastante ineficiente porque la mayoría de los clientes no estarán interesados. Sería más eficiente contactar con unos pocos, recoger datos, hacer machine learning y predecir qué otros clientes tienen más probabilidad de aceptar la oferta del banco.

Sin embargo, (casi) ningún modelo de Machine Learning es perfecto. Esto quiere decir que:

  • habrá clientes con los que contactaremos porque el modelo ha predicho que aceptarían y en realidad no lo hacen (False Positive [FP], Positivos Falsos).
  • habrá también clientes con los que no contactaremos porque el modelo ha predicho que no aceptarían que en realidad si lo hubieran hecho (False Negative [FN], Negativos Falsos).

El modelo de Machine Learning también acertará (esperemos que mucho). A efectos prácticos esto significa que:

  • habrá clientes con los que contactaremos porque el modelo ha predicho que aceptarían y en realidad sí que lo hacen (True Positive [TP], Positivos Verdaderos).
  • habrá clientes que no contactaremos porque el modelo ha predicho que no aceptarían la oferta y en realidad no lo hacen (True Negative [TN], Negativos Verdaderos).

Confusion Matrix (Matriz de Confusión)

Vamos a explicar como funciona la matriz de confusión con un ejemplo hipotético de marketing. En este ejemplo, contactamos a 100 clientes y 80 de ellos nos dicen que no están interesados y 20 de ellos que sí.

Nuestro modelo (en el ejemplo) no es muy bueno, aunque dependiendo de qué métrica usemos podría parecer que es mejor de lo que es.

Hemos utilizado como valores de la clasificación binaria:

  • 0: no está interesado
  • 1: sí está interesado
Matriz de Confusión con un ejemplo de marketing. De esta matriz se derivan las métricas: precision, recall, f1 y accuracy entre otras.
Matriz de Confusión con un ejemplo de marketing

En la matriz de confusión de la izquierda podéis ver los valores para este ejemplo. En la matriz de confusión de la derecha, los nombres genéricos cuando usamos la nomenclatura inglesa: True Negative [TN], True Positive [TP], False Positive [FP], False Negative [FN].

Truco: para recordar fácilmente la matriz de confusión:

  • Positivo (Positive) o Negativo (Negative): se refiere a la predicción. Si el modelo predice 1 entonces será positivo, y se predice 0 será negativo.
  • Verdadero (True) o Falso (False): se refiere si la predicción es correcta o no.

Precision (Precisión)

Con la métrica de precisión podemos medir la calidad del modelo de machine learning en tareas de clasificación. En el ejemplo, se refiere a que la precisión es la respuesta a la pregunta ¿qué porcentaje de los clientes que contactemos estarán interesados?

Para calcular la precisión usaremos la siguiente fórmula:

$$precision = \frac{TP}{TP + FP}$$

Precisión (precision)
Precisión (precision)

En el ejemplo de marketing, siguiendo los datos de la matriz de confusión, tenemos que:

$$precision = \frac{TP}{TP + FP} = \frac{5}{5 + 10} = 0.33$$

Es decir, que sólo un 33% de los clientes a los que contactemos estarán realmente interesados. Esto significa que el modelo del ejemplo se equivocará un 66% de las veces cuando prediga que un cliente va a estar interesado.

Recall (Exhaustividad)

La métrica de exhaustividad nos va a informar sobre la cantidad que el modelo de machine learning es capaz de identificar. En el ejemplo, se refiere a que la exhaustividad (recall) es la respuesta a la pregunta ¿qué porcentaje de los clientes están interesados somos capaces de identificar?

Para calcular la exhaustividad (recall) usaremos la siguiente fórmula:

$$recall = \frac{TP}{TP + FN}$$

Exhaustividad (recall)
Exhaustividad (recall)

En el ejemplo de marketing, siguiendo los datos de la matriz de confusión, tenemos que:

$$recall = \frac{TP}{TP + FN} = \frac{5}{5 + 15} = 0.25$$

Es decir, el modelo sólo es capaz de identificar un 25% de los clientes que estarían interesados en adquirir el producto. Esto significa que el modelo del ejemplo sólo es capaz de identificar 1 de cada 4 de los clientes que sí aceptarían la oferta.

F1

El valor F1 se utiliza para combinar las medidas de precision y recall en un sólo valor. Esto es práctico porque hace más fácil el poder comparar el rendimiento combinado de la precisión y la exhaustividad entre varias soluciones.

F1 se calcula haciendo la media armónica entre la precisión y la exhaustividad:

$$F1 = 2 \cdot \frac{precision \cdot recall}{precision + recall}$$

En el ejemplo de marketing, combinando precision y recall en F1 nos quedaría:

$$F1 = 2 \cdot \frac{precision \cdot recall}{precision + recall} = 2 \cdot \frac{0.33\cdot 0.25}{0.33+ 0.25} = 0.28$$

El valor F1 asume que nos importa de igual forma la precisión y la exhaustividad. Esto no tiene que ser así en todos los problemas. Por ejemplo, cuando necesitamos predecir si hay riesgo de que un trozo de basura espacial se choque con un satélite, podemos valorar más la exhaustividad a riesgo de tener una peor precisión. Por eso elegimos F2 en lugar de F1 para esa competición de machine learning.

En este caso podemos usar F2, que es la fórmula genérica del valor F para beta = 2. La fórmula genérica de F es la siguiente:

$$F_{\beta} = (1 + \beta^2) \cdot \frac{precision \cdot recall}{(\beta^2 \cdot precision) + recall}$$

Accuracy (Exactitud)

La exactitud (accuracy) mide el porcentaje de casos que el modelo ha acertado. Esta es una de las métricas más usadas y favoritas … que te recomiendo evitar! El problema con la exactitud es que nos puede llevar al engaño, es decir, puede hacer que un modelo malo (como el del ejemplo) parezca que es mucho mejor de lo que es.

El accuracy (exactitud) se calcula con la siguiente fórmula:

$$accuracy = \frac{TP + TN}{TP + TN + FP + FN}$$

La exactitud del ejemplo de marketing sería:

$$accuracy = \frac{TP + TN}{TP + TN + FP + FN} = \frac{5+ 70}{5+ 70 + 10+ 15} = 0.75$$

Es decir, el modelo acierta el 75% de las veces. Como ves, la exactitud es una métrica muy engañosa. De hecho, si tuviésemos un modelo que siempre predijera que el cliente nunca va a estar interesado, su accuracy sería del 80%.

Peligro: la métrica accuracy (exactitud) no funciona bien cuando las clases están desbalanceadas como es en este caso. La mayoría de los clientes no están interesados en la oferta, así que es muy fácil acertar diciendo que no lo van a estar. Para problemas con clases desbalanceadas es mucho mejor usar precision, recall y F1. Estas métricas dan una mejor idea de la calidad del modelo.

Calculando precision, recall, F1, accuracy en python con scikit-learn

La librería de python scikit-learn implementa todas estas métricas. Para usarlas sólo tienes que seguir sus instrucciones:

Resumen

En este artículo hemos visto cuáles son las métricas más extendidas para evaluar el rendimiento de modelo supervisado en tareas de clasificación.

Hemos destacado que la métrica accuracy (exactitud) es engañosa cuando las clases están desbalanceadas. Cuando decimos que es engañosa nos referimos a que nos hace creer que el modelo es mejor de lo que en realidad es. De hecho, he puesto un ejemplo de un modelo relativamente malo para poner de manifiesto este ejemplo.

Las medidas de precision, recall y F1 son mucho más representativas y funcionan tanto si las clases están balanceadas como si no:

  • Precision nos da la calidad de la predicción: ¿qué porcentaje de los que hemos dicho que son la clase positiva, en realidad lo son?
  • Recall nos da la cantidad: ¿qué porcentaje de la clase positiva hemos sido capaces de identificar?
  • F1 combina Precision y Recall en una sola medida
  • La Matriz de Confusión indica qué tipos de errores se cometen

Recursos

Contenido relacionado

Suscríbete a IArtificial.net

Deja un comentario