Blog de Amazon Web Services (AWS)

Comprendiendo la diferencia entre Amazon Forecast y Amazon SageMaker Canvas para realizar predicciones en el tiempo

Cuando se trata de predecir tendencias futuras, hay una serie de herramientas disponibles en el mercado que las empresas pueden aprovechar. Dos de estas herramientas son Amazon Forecast y Amazon SageMaker Canvas con su funcionalidad de forecasting. Si bien ambas herramientas provienen de Amazon Web Services (AWS) y sirven para el mismo propósito, hay algunas diferencias clave entre ellas.

¿Qué es Amazon Forecast?

Amazon Forecast es un servicio completamente administrado que utiliza algoritmos de aprendizaje automático (ML) para generar automáticamente pronósticos precisos, utilizando algoritmos y técnicas como ARIMA (Modelo autorregresivo integrado de media móvil, ARIMA por sus siglas en inglés), ETS (Algoritmo de suavizamiento exponencial, ETS por sus siglas en inglés), Prophet y DeepAR. Se puede utilizar para pronosticar varios casos de uso, desde la demanda de productos hasta el rendimiento financiero. Amazon Forecast es escalable, fácil de usar y puede integrarse con otros servicios de AWS.

Amazon Forecast, permite el analisis de datos de series de tiempo y utilizando esos mismos para generar pronósticos precisos basados en datos históricos al automatizar el proceso de limpieza de datos, selección, y modelado. El servicio tiene en cuenta la estacionalidad, las tendencias y otros factores que pueden afectar el pronóstico para generar las predicciones más precisas posibles. También aprende continuamente de los datos, lo que significa que la precisión de los pronósticos mejora con el tiempo, e incluye una API fácil de utilizar y consola para desplegar modelos en producción.

¿Qué es Amazon SageMaker Canvas?

Amazon SageMaker Canvas es una capacidad de Amazon SageMaker que permite a los analistas empresariales crear modelos de Machine Learning (ML) precisos y generar predicciones con una interfaz visual y sencilla, sin necesidad de código.

Dentro de Amazon SageMaker Canvas existe la posibilidad de crear modelos de pronósticos de series de tiempo. Dada la naturaleza del servicio. Esta capacidad está diseñada para ayudar a las empresas con experiencia limitada en Machine Learning a aprovechar la tecnología para realizar el pronóstico. Amazon SageMaker Canvas proporciona una serie de componentes preconstruidos, donde los usuarios pueden importar sus propios datos y utilizarlos para entrenar sus modelos personalizados de ML.

¿Cómo funciona cada uno?

Amazon Forecast y Amazon SageMaker Canvas utilizan algoritmos de aprendizaje automático para generar pronósticos precisos. En realidad, Amazon SageMaker Canvas utiliza la misma tecnología que Amazon Forecast para ensamblar modelos estadísticos y algoritmos de aprendizaje automático, y entregar pronósticos altamente precisos.

A pesar que por debajo de Amazon Forecast y Amazon SageMaker Canvas se utiliza la misma tecnología en cuestiones de pronósticos de series de tiempo, la forma de utilizarlos es donde difiere.

Como Amazon Forecast es un servicio completamente administrado, no se requiere de tener especialización en series de tiempo. Tenemos dos opciones para el uso de Amazon Forecast: el uso a través de la API la cual es dirigida hacia personas con experiencia en programación, y el uso a través de la interfaz gráfica dentro de la consola de Amazon Web Services donde nos guia paso a paso con los campos a llenar para realizar un pronostico, esta opción dirigida a personas sin experiencia en programación. De manera adicional, Amazon Forecast acota a los usuarios a dominios especificos para la serie de tiempo objetivo que tenga cada usuario.

Por otro lado, Amazon SageMasker Canvas es una herramienta que permite a los usuarios construir modelos de ML personalizados de diferentes estilos, entre ellos se puede utilizar series de tiempo para realizar pronósticos.

Ejemplo para realizar un pronóstico en Amazon Forecast

Importar el conjunto de datos

Para este ejemplo, tendremos que importar un conjunto de datos, en este caso utilizamos AWS Data Exchange, existe un conjunto de datos con el nombre de Daily 2 Year Historical Weather Data Set que nos entrega información sobre el clima en diferentes ciudades de Estados Unidos. Este conjunto de datos será exportado hacia un bucket de Amazon S3.

Cabe mencionar que podemos obtener un conjunto de datos por otro medio y de igual manera importarlo en Amazon S3.

Transformación del conjunto de datos

Debemos modificar el conjunto de datos ya que vienen multiples columnas que no seran requeridas y es necesario ajustar algunos nombres de las columnas ya que Amazon Forecast los recibe de una manera específica.

  1. Amazon Forecast requiere una columna item_id que nos permita tener un identificador. En este caso, el dataset no cuenta con esta columna y es necesario crerarla.
  2. Para que podamos tener un pronóstico, debemos tener una columna llamada timestamp con fecha en el formato yyyy-MM-dd o yyyy-MM-dd HH:mm:ss
  3. Igualmente, es necesaria la columna objetivo target_value. En este caso, dentro del conjunto de datos, nuestra columna es el promedio de grados al día.

Por cuestión de ser un ejemplo y querer resultados de una sola ciudad, seleccionamos una de las ciudades dentro del conjunto de datos y eliminamos el restante de las ciudades para que sólo tengamos el pronóstico de una sola ciudad; podemos filtrar los datos únicamente de Atlanta, por ejemplo.

Para realizar esta transformación en los datos podemos utilizar una herramienta como Amazon SageMaker Data Wrangler, la cual nos ayuda a agregar y preparar datos dentro del servicio de Amazon SageMaker. Sin embargo, podriamos utilizar cualquier otra herramienta para este fin.

Creación de pronóstico

En Amazon Forecast creamos un grupo de conjunto de datos, donde establecemos un nombre como data_weather y el dominio del forecast que será custom para este caso. El dominio dentro de Amazon Forecast se refiere a un conjunto específico de problemas de pronóstico relacionados que comparten características y propiedades similares. Cada dominio está diseñado para abordar un tipo particular de pronóstico, como la demanda de productos, el tráfico web, la ocupación hotelera, la energía eléctrica, entre otros.

Creamos un esquema de datos que se acopla a la información previamente mencionada:

{
	"Attributes": [
		{
			"AttributeName": "item_id",
			"AttributeType": "string"
		},
		{
			"AttributeName": "timestamp",
			"AttributeType": "timestamp"
		},
		{
			"AttributeName": "target_value",
			"AttributeType": "float"
		}
	]
}

En el campo de timestamp tenemos múltiples opciones, pero para este caso nos aseguramos que esté en formato yyyy-MM-dd.

Continuamos con la configuración de importar los datos, damos un nombre como dataset_weather_import, y seleccionamos la ubicación del archivo en Amazon S3. Continuamos a acceder al grupo de conjunto de datos una vez que esté creado, y este tardará tomará un tiempo en crear una serie de tiempo a base del target_value, pero una vez termine podremos hacer revisiones en el futuro con series de tiempo.

Ejemplo para realizar un pronóstico en Amazon Sagemaker Canvas

Importar el conjunto de datos

Primero tendremos que importar un conjunto de datos, para esto podemos utilizar nuevamente AWS Data Exchange usando el mismo conjunto de datos utilizado en la sección anterior, que tiene el nombre de Daily 2 Year Historical Weather Data Set. Lo exportamos hacia un bucket de Amazon S3.

Transformación del conjunto de datos

Como en los pasos anteriores utilizando Amazon Forecast, también necesitamos realizar una limpieza de datos. Sin embargo, no es tan estricta esta limpieza para Amazon SageMaker Canvas como lo es para Amazon Forecast.

La limpieza que debemos realizar es modificar el campo de fecha para que contenga un formato aceptado para que sea considerado un timestamp, en este link podemos ver las opciones disponibles. Podemos utilizar para este ejemplo el formato de  yyyy-MM-dd. De igual manera, seleccionamos una de las ciudades en los récords y borramos las restantes para realizar el pronóstico para una ciudad en especifico recordando que es por cuestiones de este ejemplo.

Para realizar esta transformación en los datos podemos utilizar una herramienta como Amazon SageMaker Data Wrangler, o en el mismo Amazon SageMaker Canvas cuando se vaya a crear el modelo para obtener pronósticos, podemos hacer algunas transformaciones como el eliminar columnas, administrar récords, cambiar el tipo de dato, etc.

Creación de pronóstico

Dentro de Amazon SageMaker Canvas, seleccionamos los conjuntos de datos en el menú y creamos uno nuevo llamado dataset_weather. Como fuente de datos seleccionamos Amazon S3 y seleccionamos la ubicación de donde se encuentra el archivo. Obtenemos un preview de los datos y se comienza a crear dentro de Amazon SageMaker Canvas el conjunto de datos de manera local.

Una vez creado podemos ir a la sección de modelos y crear uno nuevo llamado model_weather. Seleccionamos la opción de analisis predictivo y continuamos. Seleccionamos el conjunto de datos que creamos dentro del servicio. Posteriormente, seleccionamos nuestra variable objetivo y revisamos que se haya seleccionado el forecast para series en el tiempo como modelo a utilizar de manera default, en caso de que no, podemos cambiar a que se utilice este tipo de modelo.

En la sección superior validamos los datos para que no haya inconsistencias. Una inconsistencia puede ser una duplicación de datos, que haya datos faltantes en el conjunto de datos, etc. Una vez que se haya validado y que no haya marcado un error, podemos construir nuestro modelo, para el cual hay dos maneras disponibles de construirlo: Quick Build y Standard Build.

¿Cómo sé que opción de construcción elegir? Quick Build es cuando valoramos más la velocidad en construir un modelo por encima de la precisión de este mismo. Tardará en construirse en un periodo menor a 15 minutos pero podrá perder precisión en el camino. Standard Build es lo inverso, donde podrá tardarse hasta 4 horas en construir pero será más preciso que su opción previa. Independientemente de la opción que se seleccione, al final recibiremos gráficas donde se mostrará la predicción.

¿Cuándo deberíamos usar cada uno?

Amazon Forecast es una buena opción para las empresas que desean un servicio completamente administrado que pueda generar pronósticos precisos sin ser expertos en Machine Learning. Es escalable, fácil de usar y puede integrarse con otros servicios de AWS. Es una buena opción para las empresas que desean comenzar rápidamente con el pronóstico y desean una experiencia de usuario sencilla.

Amazon SageMaker Canvas, por otro lado, es una buena opción para las empresas que deseen que sus usuarios puedan construir modelos de ML personalizados utilizando una interfaz visual, donde estos mismos usuarios que tienen una experiencia limitada en ML aún pueden aprovechar el poder del ML para el pronóstico. Es una buena opción para las empresas que desean construir modelos personalizados que se adapten a sus necesidades específicas, y desean un enfoque más visual para sus flujos de trabajo para el pronóstico.

En conclusión, tanto Amazon Forecast como Amazon SageMaker Canvas son herramientas poderosas para el pronóstico sin la necesidad de ser experto en ML. Amazon Forecast es una buena opción para las empresas que desean un servicio completamente administrado que pueda generar pronósticos precisos. Amazon SageMaker Canvas es una buena opción para las empresas que desean construir modelos personalizados que se adapten a sus necesidades específicas, pero que de igual manera, sin la necesidad de tener que codificar.

 


Acerca de la autora

Fabiana Serangelli es arquitecta de soluciones en AWS México. Le interesa la analítica de datos y la implementación de inteligencia artificial.

 

 

 

 

Revisores

Ricardo Pérez es arquitecto de soluciones en AWS México. Dentro de sus intereses se encuentran las tecnologias serverless y aplicaciones modernas.

 

 

 

 

Luisa Vesga es arquitecta de soluciones especialista en AI/ML en Amazon Web Services, con más de 10 años de experiencia en el campo de la tecnología. En su rol, ayuda a las compañías, de todas las etapas, a superar los desafíos empresariales aprovechando la plataforma de AWS y el Machine Learning. Antes de AWS, tuvo la oportunidad de ser parte de otros proveedores de tecnología, donde desempeñó roles operativos, comerciales y técnicos, siempre enfocados a ofrecer valor a sus clientes.