Lea nuestro artículo sobre

.

¿Necesita una base de referencia para su último proyecto de previsión de series temporales? ¿Quiere explicar el proceso de toma de decisiones de un modelo predictivo a un empresario audience? ¿Le gustaría saber si los precios de los coches son estacionales antes de comprar uno nuevo? ¡Puede que tengamos algo para usted! Este artículo presenta Streamlit Prophet, una aplicación web que ayuda a los científicos data a entrenar, evaluar y optimizar los modelos de previsión de forma visual. Las previsiones se realizan con Prophet, un modelo rápido y fácil de interpretar.

Puede probar la aplicación en línea aquí pero puede que no esté disponible en todo momento, debido a la limitación de los recursos informáticos compartidos. Otra opción es instalar el paquete python y ejecutarlo localmente.

¿Qué es Streamlit Prophet?

Streamlit Prophet es un paquete Python a través del cual puede desplegar una aplicación para construir modelos de previsión de series temporales visualmente y sin ninguna codificación. Una vez que haya cargado un dataset con valores históricos de la señal que desea pronosticar, la aplicación entrena un modelo predictivo en unos pocos clics, junto con varias visualizaciones que le ayudarán a evaluar su rendimiento y obtener más información.

El modelo subyacente se construye con Profeta, una biblioteca de código abierto desarrollada por Facebook para pronosticar series temporales data. La señal se descompone en varios componentes, como la tendencia, la estacionalidad y los efectos de las vacaciones. El estimador aprende a modelar cada uno de estos bloques por separado y luego suma sus distintas contribuciones para producir una previsión fácilmente interpretable. Funciona mejor cuando las series tienen fuertes patrones estacionales y cuando se dispone de varios ciclos de data históricos. Puede echar un vistazo a este hilo o esto artículo si desea saber más sobre los fundamentos matemáticos de Prophet.
La interfaz se realiza con Streamlit, un marco de trabajo en Python para construir aplicaciones web científicas data.

¿Cuáles son las principales características?

Streamlit Prophet está pensado para ayudar a los científicos y analistas empresariales data a ponerse en marcha rápidamente en sus proyectos de series temporales. A modo de ilustración, digamos que nos gustaría predecir las ventas futuras de bienes de consumo en una tienda concreta, dados los data históricos que van de 2011 a 2015. Nuestro conjunto data tiene el aspecto de la tabla siguiente.

Un modelo de referencia con parámetros por defecto se ajusta en el data en cuanto se carga. Veamos ahora cómo podríamos utilizar Streamlit Prophet para mejorarlo y lograr una mejor comprensión del fenómeno.

Exploración Data

El primer paso en cualquier proyecto de previsión es asegurarse de que el dataset no tiene secretos para usted. Prophet proporciona de forma nativa un bonito descomposición de la señal para ayudarle a alcanzar ese objetivo. La aplicación dispone de varios gráficos para obtener estos valiosos datos de un vistazo.
El siguiente gráfico es un buen punto de partida, ya que ofrece una representación global de las series temporales cargadas y contiene mucha información útil.

Los puntos negros son las ventas históricas reales, que la mayoría de las veces se sitúan entre 75 y 225 unidades diarias. Se pueden detectar algunos valores atípicos sin ventas o con volúmenes bajos a finales de cada año, en torno a Navidad, cuando probablemente las tiendas estén cerradas. La tendencia se muestra en una línea roja para obtener una visión más sintética de la señal y visualizar las evoluciones globales. Por último, la línea azul representa las previsiones realizadas por un modelo Prophet entrenado automáticamente sobre su conjunto data. Aquí podemos ver que el modelo prevé un aumento de las ventas en 2016, siguiendo la tendencia creciente iniciada en 2015.

Estas previsiones parecen ser estacionales, pero es difícil distinguir los distintos componentes periódicos en este primer gráfico. Comprobemos otra visualización para entender cómo afectan estos patrones estacionales a la salida del modelo.

Se han detectado dos periodicidades que aportan datos interesantes sobre los hábitos de los consumidores. El ciclo semanal muestra que la mayoría de la gente compra los fines de semana, durante los cuales las previsiones aumentan en casi 40 unidades al día. El gráfico también sugiere que los productos vendidos tienen una estacionalidad anual, con un ligero aumento de las ventas durante el verano que el resto del año. Estos componentes periódicos y la tendencia global serán luego combinados por el estimador para producir previsiones para días futuros.

Evaluación del rendimiento

Estos gráficos sintetizan la forma en que Prophet modela el data, pero ¿cómo podemos asegurarnos de que esta representación es fiable? Para responder a esta legítima pregunta, una sección de la aplicación está dedicada a evaluar la calidad del modelo. Proporciona rápidamente al usuario un rendimiento de previsión de referencia. Para ello, la serie temporal se divide en varias partes: primero se ajusta el modelo en un conjunto de entrenamiento y después se prueba en un conjunto de validación. También están disponibles otras opciones como la validación cruzada para un uso más avanzado.

Se pueden utilizar diferentes métricas para evaluar la calidad del modelo: las métricas absolutas como el error cuadrático medio (RMSE) son útiles para hacerse una idea de la magnitud de los errores en términos de número de ventas, pero las relativas como el error porcentual medio absoluto (MAPE) pueden ser más interpretables. Depende de usted seleccionar la métrica más relevante para su caso de uso.

Sin embargo, es poco probable que el rendimiento sea uniforme en todos los puntos data, por lo que obtener un indicador global no es suficiente. Deberíamos calcular las métricas con una granularidad más detallada para tener una idea clara de la calidad del modelo. Empecemos con un análisis en profundidad a nivel diario, que es la granularidad más baja posible en nuestro caso, ya que el modelo realiza una predicción al día.

Podemos observar una variabilidad importante: hay días en los que el error es mayor que 20% mientras que otras previsiones son casi perfectamente precisas. Con esta información en mente, probablemente no pueda evitar preguntarse si existen patrones en la forma en que el modelo comete errores. ¿Existen algunos días en particular en los que podemos esperar un mal rendimiento? Afortunadamente, la aplicación proporciona unos prácticos gráficos que nos ayudarán a satisfacer nuestra curiosidad.

Diagnóstico de errores

La sección de diagnóstico de errores es probablemente la más útil, ya que le permite destacar las áreas en las que las previsiones podrían mejorarse y, de este modo, identificar con mayor precisión los principales retos a los que se enfrentará para construir un modelo de previsión fiable.

Hay varias visualizaciones disponibles para lograr esa investigación. Son interactivas, por lo que puede centrarse fácilmente en algunas áreas concretas. Por ejemplo, el gráfico de dispersión que aparece a continuación representa cada previsión realizada sobre el conjunto de validación mediante un único punto, y pasar el ratón sobre los que están alejados de la línea roja nos ayuda a comprender para qué tipo de puntos data las previsiones están lejos de la verdad.

En nuestro ejemplo, al pasar el ratón por la zona superior derecha se observa que los puntos más alejados de la línea roja son los sábados y los domingos, lo que sugiere que el modelo rinde mejor durante la semana. Vamos a agregar las métricas de rendimiento por día de la semana para validar esta intuición.

Efectivamente, los errores son mayores por término medio los fines de semana que durante el resto de la semana, lo cual es una información a tener en cuenta cuando se intente optimizar el modelo. El rendimiento también puede evolucionar con el tiempo, por lo que es posible seleccionar otros niveles de agregación disponibles en la aplicación para comprobarlo. Por ejemplo, podríamos calcular las métricas con una granularidad semanal o mensual, o a lo largo de un periodo de tiempo específico durante el cual sospechemos que su rendimiento es distinto del habitual.

Optimización de modelos

Una vez descubiertos los principales puntos débiles del modelo, hay varias opciones disponibles para mejorarlo: la barra lateral de la aplicación le permite editar la configuración predeterminada e introducir sus propias especificaciones. Todas las métricas de rendimiento y las visualizaciones se actualizan cada vez que cambia la configuración, con el fin de obtener un feedback rápido.

La primera forma de conseguir un mejor rendimiento es aplicar algún tratamiento previo personalizado a su dataset. Existen varias alternativas para sortear los retos identificados anteriormente. Por ejemplo, una sección de limpieza nos permite deshacernos de los valores atípicos observados en torno a la Navidad, que podrían confundir al modelo. También podríamos filtrar algunos días concretos, y así entrenar fácilmente modelos distintos para la semana y los fines de semana, ya que parecen estar asociados a comportamientos de compra diferentes. También están disponibles otras opciones de filtrado y remuestreo, en caso de que sean relevantes para el problema que nos ocupa.

Los hiperparámetros de Prophet también pueden ajustarse para ayudar a que el modelo se ajuste mejor al data. Estos parámetros influyen en el modo en que el estimador aprende a representar la tendencia y las estacionalidades a partir de las ventas históricas, y en el peso relativo de estos componentes en la previsión global. No se preocupe si no está familiarizado con los modelos Prophet, algunos tooltips explican la intuición que hay detrás de cada parámetro y le guían a través del proceso de ajuste. En la sección de modelado, también puede alimentar el modelo con información externa, como días festivos o variables relacionadas con la señal que se quiere pronosticar (como el precio de venta de los productos, por ejemplo). Es probable que estos regresores mejoren el rendimiento, ya que proporcionan al modelo conocimientos adicionales sobre un fenómeno que influye en las ventas.

Interpretabilidad de las previsiones

Disponer de un modelo de predicción preciso está bien, pero poder explicar los principales factores que contribuyen a sus predicciones está aún mejor. La última sección de la aplicación pretende ayudarnos a comprender cómo toma decisiones el modelo que acabamos de construir. Hay diferentes formas de abordar esta cuestión: podemos fijarnos en un único componente y ver cómo evoluciona su contribución a las previsiones globales a lo largo del tiempo, o podemos tomar una única previsión y descomponerla en la suma de las contribuciones de varios componentes.

Empecemos por la primera opción. Los distintos componentes que influyen en las previsiones son la tendencia, las estacionalidades y los regresores externos. Ya hemos observado el impacto de las estacionalidades semanales y anuales, así que centrémonos en los regresores externos que hemos incluido en la sección de optimización del modelo: las vacaciones y el precio de venta de los productos.

El impacto de algunos días festivos es bastante importante: por ejemplo, el Día del Trabajo aumenta las previsiones en 50 ventas cada año a principios de septiembre, y las caídas en Navidad muestran que el modelo ha tenido en cuenta el hecho de que las tiendas cierran ese día. En cuanto al precio, ha aumentado año tras año y, por tanto, su impacto en las ventas ha pasado de positivo a negativo.

También puede ser útil explicar cómo el modelo produjo una previsión específica, especialmente cuando un acontecimiento concreto influye en la predicción. El siguiente gráfico en cascada muestra esta descomposición para la previsión realizada el 31 de octubre de 2012.

En este ejemplo, el modelo acabó pronosticando 96 ventas, que es la suma de las contribuciones de cinco componentes diferentes:

  • Tendencia mundial (+134): es el factor más influyente.
  • Halloween efecto (-12): el producto se vende menos en Halloween que en días normales.
  • Precio de venta (+2): el precio debe haber sido ligeramente inferior a la media ese día.
  • Estacionalidad semanal (-23): esto fue un miércoles, que no es durante el fin de semana.
  • Estacionalidad anual (-5): Octubre es temporada baja para este producto.

Ese tipo de descomposición no sólo es útil para compartir ideas con los colaboradores, sino que también puede ayudar a los analistas a entender por qué su modelo no funciona como se esperaba. En caso necesario, hay varios parámetros disponibles en la barra lateral de la aplicación para aumentar o disminuir los pesos relativos de los distintos componentes.

¿Cómo empezar?

Ejecutar la aplicación en su propio ordenador es bastante sencillo. El único requisito previo es tener instalado Python. Los usuarios de Windows necesitan algunos requisitos más (véase repositorio para más detalles). A continuación, puede seguir las siguientes instrucciones para empezar.

Instalación

Le recomendamos crear un nuevo entorno virtual para evitar problemas de dependencias o incompatibilidades con su entorno actual. Una vez activado su nuevo entorno, puede instalar el paquete con el siguiente comando. La instalación puede tardar unos minutos (5-10).

pip install -U streamlit_prophet

Ejecute

Una vez instalado el paquete, un único comando le permite lanzar la aplicación desde su terminal y abrirla en su navegador web predeterminado.

streamlit_prophet deploy dashboard

¡Y ya está listo para construir los modelos Prophet! Para empezar a modelar, primero tiene que cargar su dataset como un archivo csv con el siguiente formato.

Image

A continuación, puede proporcionar sus especificaciones en la barra lateral para realizar las tareas de preprocesamiento que se ajusten a sus necesidades y afinar los hiperparámetros del modelo. Una vez que esté satisfecho con los resultados, guarde su experimento para conservar todas las visualizaciones y poder reproducirlo fácilmente después.

Despliegue en la nube

Si desea que varios colaboradores puedan acceder fácilmente a la aplicación sin tener que descargar Python e instalar el paquete, puede desplegar la aplicación en el cloud. Lo primero que debe hacer es clonar el repositorio git. A continuación, un comando Docker le permitirá contenerizar fácilmente la aplicación y crear una imagen que podrá utilizar para desplegar la app en la plataforma cloud de su elección. Este artículo explica en detalle cómo hacerlo en Google Cloud Platform.

Muchas gracias por leer, me encantaría conocer sus comentarios. No dude en ponerse en contacto conmigo si desea contribuir al desarrollo del paquete o si tiene alguna idea para mejorarlo. Mientras tanto, puede visitar la página repositorio de proyectos para ver una breve demostración y Artefact blog técnico para más información sobre nuestros proyectos científicos data.

Medio Blog por Artefact.

Este artículo se publicó inicialmente en Medium.com.
¡Síganos en nuestro Medium Blog !