5 consejos para no fracasar al desarrollar un modelo predictivo de ventas
La tecnología y los algoritmos predictivos están evolucionando a toda velocidad y en muchas ocasiones se cuestiona la utilidad del ser humano en ciertos trabajos que pueden ser realizados por una máquina. Predicciones de todo tipo inundan nuestro día a día, ¿qué tiempo va a hacer mañana?; ¿cuál será el medio de transporte más rápido para llegar a la reunión de mañana?; ¿cuántos productos va a vender mi empresa durante las próximas semanas? son sólo algunas de las preguntas que requieren hacer previsiones de lo que va a ocurrir en el futuro.
En general, los avances de la inteligencia artificial nos están ayudando a dar una mejor respuesta a estas preguntas, pero no siempre es posible utilizar servicios o productos estándar ya listos para resolver este tipo de problemas. Cualquiera de las apps de nuestro móvil dará una respuesta muy precisa a la pregunta sobre el medio de transporte, pero no siempre el problema que queremos resolver será tan estándar y, en muchas ocasiones, será necesario adaptar los modelos predictivos al problema y a los datos disponibles. Conocer bien el negocio y problema a resolver junto con el uso de los algoritmos más avanzados, serán la clave del éxito cuando queramos predecir el negocio de una compañía con precisión.
Actualmente, existe una demanda creciente en el mercado laboral de Data Scientists, también conocidos como científicos de datos, cuya tarea principal es resolver problemas de las empresas a través del análisis de datos. Uno de los problemas principales de las compañías es saber el negocio que van a generar en el futuro, por lo que, cada vez es más común ver a los equipos de Data Scientists colaborando con los responsables del negocio con el objetivo de mejorar las estimaciones de ventas que han de realizar.
A pesar de todo, todavía existen compañías en las que los equipos de analistas de datos trabajan de manera independiente y sin tener contacto con el negocio, lo cual está probado que es un gran error. Nunca olvidaré una entrevista en la que un candidato a Data Scientist me explicó que, en su empresa, trabajaba en predecir la baja de los clientes sin disponer del nombre real de las variables, ya que el área de negocio prefería no compartir información que consideraba “confidencial”. Si lo pensamos de otra manera, ¿para que necesitamos personas si toda la responsabilidad va a recaer sobre un algoritmo o una máquina y no importa entender qué factores afectan al negocio?
La mejor manera de mostrar la importancia del ser humano a la hora de desarrollar un modelo predictivo adaptado a un caso no estándar es realizar un experimento real que muestre la diferencia entre hacer estimaciones de ventas de manera automática o aplicando pensamiento. Para ello, vamos a utilizar una competición de Kaggle, una comunidad online de Data Scientists que adquirió Google en 2017. El principal producto que ofrece Kaggle son las competiciones, problemas abiertos subidos por compañías, que ponen a prueba a la comunidad internacional.
Experimento con datos de Kaggle-Walmart
Actualmente, hay varias competiciones activas en Kaggle. Entre ellas, podemos destacar una competición de Walmart, compañía muy activa proponiendo problemas a la comunidad científica, que reta a los participantes a predecir las ventas diarias de 3.049 productos en 10 tiendas de tres estados distintos de Estados Unidos: California, Texas y Wisconsin. En total, es necesario predecir 30.490 series temporales (3.049 productos x 10 tiendas) y la métrica de error que evaluará los resultados tendrá en cuenta la precisión individual y agregada a distintos niveles jerárquicos de las predicciones. El horizonte temporal de predicción es de 28 días y la jerarquía de los datos se muestra a continuación:
Además, la métrica de error está ponderada por las ventas en valor ($) que ha producido cada producto durante los últimos 28 días. La fórmula exacta de error podría parecer complicada de entender, pero esencialmente tiene en cuenta los puntos presentados anteriormente: precisión en la estimación de ventas individuales y agregadas dando más importancia a aquellos productos que generan más ventas en valor para Walmart.
No es un problema sencillo de resolver (multitud de series temporales, valores intermitentes de ventas, agregaciones jerárquicas, etc.), pero parece que lo más razonable es hacer un análisis inicial de los datos para entender mejor el punto de partida antes de empezar a lanzar modelos. Si representamos la serie de ventas por tienda observaremos un comportamiento estacional diario muy marcado:
Si seguimos profundizando por categoría, tienda y productos veremos que este patrón se repite, es decir, podemos esperar que los sábados y domingos las ventas sean más altas debido a este comportamiento del consumidor. Es decir, el modelo predictivo que utilicemos, por básico que sea, debería tener en cuenta el día de la semana: un sábado se venderá más que un jueves a no ser que el consumidor cambie de comportamiento en los 28 días a predecir, algo poco probable a priori.
El experimento va a consistir en subir a la plataforma predicciones muy simples que recojan este comportamiento estacional observado. Los métodos que vamos a emplear se basarán en tomar el valor de las ventas del mismo día de la semana anterior para cada producto o un promedio de varios días similares. En resumen, vamos a subir las siguientes dos soluciones y observar cómo quedamos en el ranking provisional de la competición:
- Ventas del mismo día de la semana anterior para cada producto.
- Promedio de ventas de los mismos días de las tres semanas anteriores para cada producto.
La primera solución se basa en suponer que, para un producto dado y un día, Walmart venderá lo mismo que vendió hace siete días, es decir, el próximo lunes a predecir se estima que un producto venderá lo mismo que vendió el lunes anterior. Al ser un modelo predictivo tan básico, deberíamos esperar estar entre los últimos clasificados en el ranking de Kaggle. Veamos qué ocurre cuando subimos esta solución:
¡Sorpresa! Con esta solución ocuparíamos el lugar 3.558 de 4.516 participantes (a día 31 de mayo), es decir, habría un 20% de Data Scientists que actualmente estarían obteniendo peores resultados.
Cabe destacar que cada persona puede subir cinco soluciones al día y que únicamente contará la mejor predicción de todos los envíos, lo cuál indica que hay un gran número de participantes haciendo peores predicciones que el modelo más trivial, incluso algunos de ellos en repetidas ocasiones.
Ahora subimos la solución promediando los mismos días de las tres semanas anteriores para suavizar las predicciones y no basar todo el resultado únicamente en el mismo día de la semana anterior. A continuación el resultado:
En este caso, quedaríamos en el lugar 3.245 y prácticamente estaríamos mejorando las predicciones de casi el 30% de participantes.
Esto es un gran ejemplo para ilustrar que no siempre es suficiente con ejecutar algoritmos complejos sin pensar y razonar, algo lamentablemente muy extendido actualmente, sino que en muchos casos se necesita un trabajo preliminar que sirva para entender el problema al que nos estamos enfrentando. A continuación se muestran cinco reglas para evitar cometer algunos de los errores que deben estar cometiendo más de 1.000 Data Scientists en la competición de Kaggle-Walmart.
5 consejos para no fracasar al desarrollar un modelo predictivo de ventas
1. Entender el negocio que se quiere predecir
No es lo mismo predecir las ventas de un supermercado que las ventas de un concesionario de coches. Los datos disponibles, el comportamiento del consumidor y las características de cada negocio hacen que el trabajo de predecir una serie de ventas sea diferente. Al igual que para un supermercado tiene importancia la estacionalidad del día de la semana, para las ventas de un concesionario de coches será clave medir bien el comportamiento estacional positivo previo a la Semana Santa o verano si queremos desarrollar modelos más precisos. En este punto lo más recomendable es hablar con personas expertas sobre el negocio a predecir.
2. Graficar, graficar y graficar
Vivimos en el mundo de la inmediatez, pero no podemos saltarnos este paso si queremos realizar buenas estimaciones. Pintar las series de datos y obtener las primeras métricas sobre tendencias, estacionalidades y comportamientos atípicos nos servirá también para entender la dificultad de la series que queremos predecir. Si nos saltamos este paso, habrá que volver a él una vez lanzados los primeros modelos y habremos perdido un tiempo muy valioso para lograr el objetivo marcado.
3. Construir múltiples variables a testar en los modelos
Una vez que hemos entendido perfectamente la información disponible, lo más importante es la creación de variables que servirán para entrenar los modelos (en inglés conocido como “Feature Engineering”). En el caso de la competición de Kaggle -Walmart y a la vista de los primeros resultados, parece clave construir indicadores que midan la estacionalidad (día de la semana, mes, semana del mes, etc.) ya que deberían ser relevantes a la hora de estimar el futuro.
4. Chequear posibles errores todas las veces que sea necesario
Muchos modelos predictivos funcionan mal porque se han cometido errores en el desarrollo e implementación de los mismos. Si tomamos la competición de Kaggle-Walmart como ejemplo, veremos que hay 100 personas que obtienen iguales o peores resultados que poner todos los valores a predecir a 0. Esto sólo puede estar explicado por errores en el proceso de creación de variables o ejecución del modelo de predicción. Esta tarea requiere tiempo, pero existen distintas técnicas que se pueden utilizar para minimizar el número de errores (comprobaciones automáticas de los totales, representación de las series predichas, revisiones cruzadas entre personas del equipo, etc.). Si una compañía va a tomar decisiones en función de las predicciones que arroja un modelo matemático, es fundamental que no exista el más mínimo error y que se hayan hecho todas las comprobaciones necesarias.
5. Comenzar por modelos básicos e ir sofisticándolos de manera gradual
Antes de empezar a predecir, deberíamos tener claro cuál es la precisión que se obtiene con el modelo más simple y comprender la métrica de error que va a juzgar si lo estamos haciendo bien o mal. A partir de ahí, hay que ir probando distintas metodologías e ir midiendo cuál es la mejora que vamos obteniendo con cada una de ellas. Las competiciones de Kaggle ponen de manifiesto que ciertos modelos de machine learning (LightGBM, XGBoost, CatBoost, etc.) suelen funcionar mejor que enfoques tradicionales (regresión, ARIMA, etc.), pero, bajo mi opinión, es mejor ir incorporando mejoras de manera progresiva, es decir, comenzar por modelos sencillos explicativos y pasar posteriormente a modelos más complejos de machine learning. No se puede pretender que el primer modelo arroje buenas predicciones, y habrá que tener paciencia con un proceso que será iterativo en el tiempo.
A pesar de que cada vez se fomenta más el uso de algoritmos de machine learning, esto no es una garantía de que aplicarlos de cualquier forma vaya a dar buenos resultados. El experimento que hemos llevado a cabo con la plataforma de Kaggle muestra la importancia de no saltarse ningún paso del análisis y nos ha servido para definir cinco reglas básicas que no habría que olvidar si queremos construir buenos modelos predictivos de ventas.
La frase del inicio del artículo “The next big thing will be a lot of small things”, se convirtió en una de mis frases favoritas desde que la vi por primera vez y se puede aplicar a ámbitos muy diversos. En particular, es una frase que habría que tener presente siempre que queramos desarrollar modelos predictivos, ya que si estamos interesados en obtener buenas predicciones, habrá que ir dando pasos pequeños para finalmente obtener grandes resultados.
Y, ¿cuál es la mejor manera de terminar este artículo? Con la recomendación de un buen libro “Forecasting: principles and practice” de Rob J Hyndman y George Athanasopoulos para todo aquel que quiera adentrarse en el maravilloso mundo de los modelos predictivos.