En la primera parte de esta serie de artículos hicimos una introducción a un modelo de predicción de cancelación de reservas. En la segunda parte analizamos los indicadores principales para entender en qué puntos se podía mejorar la calidad de las predicciones. Una vez identificados los puntos débiles, en este tercer artículo de la serie pasamos a ver las estrategias a seguir para mejorar el rendimiento.
Estrategias
Dependiendo del proyecto y los datos proporcionados, existen diferentes estrategias para hacer frente a los datos no balanceados, es decir, a ese pequeño porcentaje de datos que el algoritmo prácticamente no tiene en cuenta. En estos casos el procedimiento a seguir consiste en probar cada una de ellas y analizar los resultados obtenidos. Algunas de las estrategias más comunes son:
- Recolectar: Intentar conseguir más datos de la clase minoritaria.
- Clonar: Crear nuevas instancias que son copias de la clase minoritaria. De esta forma, aunque no añadimos variedad en la distribución, conseguimos más representación.
- Eliminar: Descartar instancias de la clase mayoritaria que no aportan información nueva en la distribución.
- Balancear clases: Poner pesos a las instancias de cada clase proporcionalmente a su frecuencia. De esta forma, el algoritmo tiene más en cuenta unas instancias que otras a la hora de aprender. Por ejemplo, si tenemos un dataset de 2000 reservas no canceladas y 50 reservas canceladas, al aplicar el balanceo, los pesos de las instancias serían de: 1 para las reservas no canceladas y 40 para las canceladas.
Mejora del modelo
Detectado el problema y con una lista de posibles estrategias para solucionarlo, decidimos aplicar una de ellas. En este caso realizamos la última estrategia mencionada anteriormente, el balanceo de clases (personalmente es la que me gusta más y en la practica es la que suele dar mejores resultados). Para ello, creamos un nuevo modelo predictivo aplicando el balanceo y lo evaluamos siguiendo el procedimiento habitual.
La siguiente imagen muestra el rendimiento del nuevo modelo para ambas clases:
Con el nuevo modelo balanceado se consigue un coeficiente Phi de 0.60, lo que significa un incremento del 40% respecto al 0.43 que tenia el modelo original. Esto es una buena señal, un indicador de Phi alto significa que el rendimiento del modelo es bueno.
A continuación se muestra el rendimiento del modelo para las dos clases junto a una tabla comparativa entre el rendimiento del modelo original con el nuevo modelo balanceado:
En primer lugar, si analizamos el rendimiento para las reservas de la clase «No cancelado», se puede observar que el valor de la precision aumenta respecto al modelo original, pero a cambio perdemos calidad en el recall. Por lo tanto, para estas reservas no obtenemos mejora del rendimiento.
En segundo lugar, para las reservas de la clase «Cancelado», el recall aumenta de forma abrumadora en el modelo balanceado respecto al modelo original, sin embargo, en ese proceso, perdemos rendimiento en la precision. Aun con este pequeño declive en la precision, debido al gran aumento que tiene el recall, se consigue una mejora cualitativa del modelo para estas reservas.
Seguramente al analizar los resultados, el lector ya se habrá dado cuenta de un efecto que esta sucediendo entre las métricas de precision y recall: Cuando una aumenta la otra se reduce, y viceversa. Esto se debe al tradeoff que tienen estas dos métricas entre ellas. Por ahora, simplemente mencionar que dependiendo el objetivo de negocio se busca maximizar una u otra.
Reflexiones y conclusiones
En esta serie de artículos hemos aprendido a detectar y solucionar un problema muy común en los datos del mundo real, los datos no balanceados. Hemos aprendido algunas de las métricas que se usan en la evaluación de modelos clasificatorios, como el coeficiente Phi, la precision y el recall. Por último, hemos aprendido que el análisis de resultados junto el análisis de datos o Data Analytics, puede evitarnos perder tiempo y dinero.
Una de las preguntas más habituales cuándo se realiza un proyecto de Machine Learning es ¿qué algoritmo debe usarse? Se invierte tiempo y dinero en probar diferentes algoritmos para lograr mejores resultados. Sin embargo, la variación en la calidad entre los algoritmos suele ser mínima. Esto se debe a que más que el algoritmo en sí, lo que marca la diferencia entre el fracaso o éxito de un proyecto son los Datos.
Entre los retos que nos encontramos en CleverData al realizar proyectos de Machine Learning uno es la transmisión de los resultados obtenidos a los clientes. La obtención y análisis de resultados es una ardua tarea que requiere de un equipo especializado. Pero ser capaz de transmitir esos resultados al cliente es incluso un trabajo mayor. Al fin y al cabo, el cliente es quien debe realizar las correspondientes acciones basándose en los resultados, y si no se entienden, no sirve de nada todo el proyecto.