AWS Machine Learning: Cómo crear aplicaciones predictivas

Amazon Machine Learning es un servicio de aprendizaje automático que le permite crear con facilidad aplicaciones predictivas, como la detección del fraude, la previsión de la demanda y la predicción de clics. AWS Management Console y las API proporcionan herramientas de visualización de datos y modelos, así como asistentes que le guiarán a lo largo del proceso de creación de modelos de aprendizaje automático, midiendo su calidad y ajustando las predicciones de acuerdo con los requisitos de su aplicación.

Una vez creados los modelos, puede obtener predicciones para su aplicación mediante la sencilla API, sin tener que implementar código de generación de predicciones personalizado ni gestionar ninguna infraestructura.

En el ejercicio práctico que os proponemos a continuación queremos ser capaces de predecir el alquiler medio de un lugar dado el precio medio de la vivienda, el ingreso medio familiar y el porcentaje de viviendas desocupadas en ese lugar. Los datos se pueden descargar aquí

Los pasos a seguir son los siguientes

  1. Crear una fuente de datos
  2. Entrenar el modelo
  3. Evaluar el modelo
  4. Generar predicciones

Empezamos haciendo login en la consola de Amazon AWS y hacemos click en machine learning. Se muestran todas sus entidades por defecto. Una entidad puede ser un modelo ML, un conjunto de datos, una evaluación, etc.

home

Crear una fuente de datos

Para crear una fuente de datos, hacer click en “Create new” y seleccionar “Data Source”.

create_dataset

Para que sea posible crear una fuente de datos, vuestro fichero de datos necesita estar presente en Amazon S3 o Amazon RedShift. Si estáis obteniendo datos de S3, necesitáis proporcionar la ubicación de los datos en vuestro S3. Una vez hayáis aportado es información, hacer click en “verify“. Este proceso sirve para validar la fuente de datos.

dataset_validation_step

Un esquema se compone de todos los atributos de los datos de entrada y sus correspondientes tipos de datos.  Amazon ML utiliza la información en el esquema para leer e interpretar los datos de entrada, hacer estadísticas, aplicar el atributo correcto a las transformaciones y mejorar sus algoritmos de aprendizaje.

También podéis proporcionar un fichero con un esquema independiente al cargar vuestros datos AWS S3 y dejar a Amazon ML inferir los tipos de atributos y crear su propio esquema.

En la página de esquema, poner la opción “Does the first line in your CSV contain the column names?”  a “Yes

Aseguraros que los atributos en el fichero se asignen a los tipos de datos correctos.

columns_in_dataset

En la página siguiente, para la pregunta “Do you want to use this dataset to create and/or evaluate a ML model?”, contestar “Yes“.

Esto nos permitirá seleccionar un atributo de destino.

select_target

El target es el atributo destino con el cual el modelo debe aprender a hacer las predicciones. Como queremos predecir el alquiler medio de un lugar, seleccionamos ese atributo como target.

En la página siguiente, para “Do you want to select an identifier?”, elegimos “Yes” y, en la siguiente página, marcamos la opción “Geo_ID” y hacemos click en “Review“.

row_id

En la siguiente página, revisamos los atributos y hacemos click en “Finish”. Una vez hayamos hecho click en terminar, veréis que la fuente de datos está siendo inicializada (tener en cuenta que lleva cierto tiempo alcanzar el estado de “Completed“).

Entrenando el modelo ML

Amazon ML soporta 3 tipos de modelos ML:

  1. Clasificación binaria
  2. Clasificación Multi class
  3. Regresión

El tipo de modelo depende del tipo de dato que queramos predecir. Para una clasificación binaria, AWS ML utiliza algoritmos de regresión estándar para generar los modelos. Para clasificación  multi class y regresión, utiliza regresión logística multinomial y algoritmos de regresión lineal respectivamente.

Modelo de regresión

Como queremos predecir el alquiler de un determinado lugar (valor numérico), vamos a usar el modelo de regresión. El modelo ML basado en entrenamiento de datos determina un peso por cada atributo para construir un modelo que pueda predecir o estimar el valor del atributo destino.

El algoritmo de aprendizaje consiste en una función de pérdida y la técnica de optimización SGD.

Crear un modelo ML

Podéis crear un modelo ML a partir de la propia fuente de datos o utilizando el botón “Create New” del  panel de administración. Si lo creamos a partir del botón “Create New“, debemos proporcionar un nombre al conjunto de datos que el modelo debe entrenar.

 

after_create_new_ML_model

Hacer click en “Continue” y dar nombre al modelo.

En la siguiente página elegir “Default” para la opción “Training and evaluation settings“. Seleccionando esta opción se genera automáticamente una evaluación. El 70% de los datos se puede usar para entrenamiento  y el 30% restante puede usarse para evaluación.

default_and_custom_settings

Evaluando el modelo

Una vez que hemos construido el modelo, podemos ejecutar algunos datos y comparar los valores que hemos predecido con los valores originales y así evaluar el comportamiento del modelo.  Seleccionando la opción “Default“, generamos una evaluación automáticamente.

evaluation_summary

Podemos ver también la distribución de errores de nuestra estimación seleccionando Evaluations -> Explore Performance

evaluation

 Generación de predicciones por lotes

El sistema permite genera predicciones por lotes o en tiempo real.  Para las predicciones por lotes es necesario crear una fuente de datos.

batch_and_real_time_predections

 

Coste

AWS Machine Learning cobra una tarifa por hora por el tiempo de cómputo utilizado para construir modelos predictivos. El usuario paga por el número de predicciones generadas por su aplicación.  Para las predicciones en tiempo real también se paga un cargo en base a la cantidad de memoria necesaria para su modelo.

Para análisis de datos y construcción de un modelo, Amazon carga $0.42 por hora.

Para generar predicciones por lote, el cargo es  $0.10 por cada 1,000 predicciones.

Para predicciones en tipo real el coste es $0.0001.

Autor Vozag – Artículo orignal en el blog de Data Science Central.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *