En la primera parte de esta serie de artículos presentábamos la evaluación de un modelo de clasificación basado en Machine Learning que predice cuándo se va a cancelar una reserva hotelera. En esta segunda parte, vamos a analizar con más profundidad los indicadores de calidad del modelo y buscaremos los factores que influyen en sus valores.
Precision y Recall
Para entender qué son estas métricas recurriremos a un ejemplo práctico. Imaginemos que evaluamos el rendimiento de un modelo con un conjunto de 8 instancias, en este caso reservas. Para ello contamos con:
- El modelo entrenado con el histórico de reservas.
- Un grupo de 8 reservas de las que ya sabemos si se han cancelado o no, con su conjunto de características o features.
Con esa información hacemos 8 predicciones con el modelo entrenado, una por cada reserva, sin decirle al algoritmo, si se han cancelado o no, y posteriormente comparamos con la realidad. Por ejemplo, vamos a calcular el precision y el recall de esta evaluación para las reservas que sí se han cancelado.
Qué es la Precision
Del total de reservas predichas como canceladas, cuántas ha acertado el modelo. Matemáticamente el valor se obtiene dividiendo el número de reservas canceladas predichas correctamente entre el número total de reservas que el modelo ha predicho como canceladas. De la misma forma se puede calcular para las reservas no canceladas.
Qué es el Recall
Del total de reservas que realmente se han cancelado, cuántas de ellas ha detectado el modelo. Matemáticamente el valor se obtiene dividiendo el número de reservas canceladas predichas correctamente entre el número total de reservas que realmente se han cancelado. De nuevo, este indicador se puede calcular también para las reservas no canceladas.
Una vez aclarados los conceptos, analizamos de nuevo los resultados de la evaluación del modelo predictivo original. Podemos ver que cuando el modelo predice que una reserva se cancelará, acierta el 71.95% de las veces. Sin embargo, sólo encuentra un 31.26% de las reservas que realmente se han cancelado. Ya tenemos localizado el problema, pero ¿cuál es la causa?
Datos balanceados y no balanceados
Un problema que nos encontramos a menudo cuando trabajamos con datos es que estos no están balanceados. Un dataset no balanceado significa que no hay una proporción razonable entre instancias de una clase y otra. Desafortunadamente, esto es lo habitual. Un ejemplo son los datasets utilizados por bancos en la detección de fraude. Estos están compuestos por millones de transacciones “legales”, sin embargo, sólo hay unas escasas de fraudulentas.
Este concepto se aplica en el caso de nuestro cliente. El historial de reservas que utilizamos solo estaba formado por un 13% de reservas canceladas, frente a un 87% no cancelada.
En los datasets no balanceados, dado que hay una clase que abrumadoramente predomina (en nuestro caso las reservas “No canceladas”), existe el riesgo de que el algoritmo tienda a calificar las instancias como la clase predominante. Desde el punto de vista del algoritmo es lógico ya que, en el extremo, si responde siempre que una reserva no se cancelará, acertará mayoritariamente en un 87% de las ocasiones y el indicador de “accuracy” en general será bueno.
En el último artículo de esta serie explicamos qué estrategias podemos poner en marcha para solucionar el problema de los datos no balanceados.