Evaluación de rendimiento de un modelo de machine learning
Tags: machinelearning, spanish, ai, datascience
Published: 2022-07-08 17:06:06

## Motivación

Es importante evaluar un modelo para determinar el rendimiento de sus predicciones en nuevos datos. Dado que las futuras predicciones retornaran un valor aun desconocido, se debe evaluar con métricas el rendimiento de un modelo en un conjunto de datos de los cuales conocemos la respuesta. Utilizaremos esta evaluación de rendimiento para decidir si el modelo es enviado o no a un ambiente de producción.

## Introducción

Una herramienta muy útil para realizar la evaluación de rendimiento de un modelo es la matris de confusión, que presentare a continuación.

![Matris de confuncion](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oye2m19qn48kds4vx0xv.png)

Ahora vamos describir el significado de cada cuadrante dentro de la matris:

- **_True positives (TP)_**: Es el caso en el que el clasificador predijo verdadero y es la respuesta correcta (Por ejemplo predecir que un paciente tiene una enfermedad)
- **_True negatives (TN)_:** Es el caso en el que el clasificador predijo falso y es la respuesta correcta (Por ejemplo predecir que un paciente no tiene una enfermedad)
- **_False positives (FP) (Type I error)_:** Es el caso en el que el clasificador predijo verdadero, pero no es la respuesta correcta (El paciente no tiene la enfermedad)
- **_False negatives (FN) (Type II error)_:** Es el caso en el que el clasificador predijo como falso, pero no es la respuesta correcta (El paciente tiene la enfermedad)

En los casos revisados con anterioridad el error Tipo II es el mas grave. El paciente puede creer que esta sano cuando realmente no lo esta y no tomara ninguna acción respectiva. En el caso del error Tipo I el paciente se someterá a mas exámenes y descubrirá que la predicción del modelo fue un error y que realmente esta sano.

## Indicadores clave de rendimiento (KPI)

- **Exactitud (_Accuracy_):** (TP + TN) / (TP + TN + FP + FN)
- **Taza de error (_Misclassification rate_):**  (FP + FN) / (TP + TN + FP + FN)
- **Precisión:** TP/ (TP+FP) (Cuando el modelo predice Verdadero, ¿Con que frecuencia lo hace bien?)
- **Exhaustividad (_Recall_):** TP/ (TP+FN) (Cuando la predicción fue realmente verdadera ¿Con que frecuencia el clasificador acertó? )

## Precisión vs Exhaustividad (_Recall_):

Ahora vamos a ver un ejemplo para entender el objetivo de precisión y exhaustividad:

Información del dataset a evaluar:
- 100 es el total de pacientes
- 91 pacientes están sanos
- 9 pacientes tienen cáncer

Despues de entrenar nuestro modelo y hacer predicciones con el dataset de prueba, construimos la siguiente matris de confusión.

![Presicion vs Recall](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g9q1dfr8o997haci702u.png)

Esto significa que:
- TP: El modelo predijo correctamente que 1 persona esta enferma
- TN: El modelo predijo correctamente que 90 personas no están enfermas
- FP: El modelo predijo incorrectamente que 1 persona esta enferma
- FN: El modelo predijo incorrectamente que 8 personas están sanas

Ahora vamos a calcular las métricas:

- Exactitud = (TP+TN) / (TP + TN + FP + FN) = (1 + 90) / (1 + 1 + 8 + 90 ) = 0.91 -> 91%
- Presicion = TP / (TP + FP) = 1 / (1 + 1) = 0.5 -> 50%
- Exhaustividad = = TP / (TP + FN) = 1 / (1 + 8) = 1/9 -> 11%

De las métricas de rendimiento extraemos que:

- La exactitud es generalmente engañosa y no es suficiente para
evaluar el rendimiento de un clasificador.
- La exhaustividad (_recall_) es un KPI importante en situaciones en las que:
  - El conjunto de datos está muy desequilibrado; casos en los que los  pacientes con cáncer son mucho menor a comparación con los pacientes sanos.

## Precisión

En el ejemplo tenemos: TP / (TP + FP) = 1 / (1 + 1) = 50%

- La precisión es una medida de Positivos Correctos, en el ejemplo, el modelo predijo que dos pacientes eran positivos
(tiene cáncer), pero sólo uno de los dos era correcto.
- La precisión es una métrica importante cuando los falsos positivos son importantes (cuántas veces un modelo dice que hay algo cuando realmente no hay nada alli)

## Exhaustividad (_Recall_)
En el ejemplo tenemos: TP / (TP + FN) = 1 / (1 + 8) = 11%

- La exhaustividad también se denomina tasa de verdaderos positivos o sensibilidad.
- En este ejemplo, se tuvo 9 pacientes con cáncer pero el modelo solo detectó 1 de ellos
- Esta métrica es importante cuando nos preocupamos por los falsos negativos
- Otro buen ejemplo del uso de la métrica seria la detección de fraudes

## F1 SCORE

F1 Score = (2 * (presicion * recall) ) / (presicion + recall)

o también

F1 Score = (2 * TP) / (2 * TP + FP + FN)

- _F1 Score_ es una medida general de la precisión de un modelo que combina precisión y exhaustividad(_recall_). Es la media armónica de precisión y exhaustividad.

¿Cuál es la diferencia entre F1 Score y exactitud?

En conjuntos de datos desequilibrados, si tenemos una gran cantidad de verdaderos negativos (pacientes sanos), la exactitud podría ser engañosa. Por lo tanto, la puntuación F1 podría ser un mejor KPI para usar, ya que proporciona un equilibrio entre exhaustividad (_Recall_) y precisión en presencia de conjuntos de datos desequilibrados.

## Conclusión

Todas estas métricas de rendimientos nos ayudaran a determinar que tan bueno es el trabajo de nuestro modelo. Es importante entender los resultados del modelo para saber si podemos enviarlo a un ambiente productivo o iterar con un nuevo conjunto de datos o usar otro algoritmo de entrenamiento.