Logotipo de Zephyrnet

Realice predicciones por lotes con Amazon SageMaker Autopilot

Fecha:

Piloto automático Amazon SageMaker es una solución de aprendizaje automático automatizado (AutoML) que realiza todas las tareas que necesita para completar un flujo de trabajo de aprendizaje automático (ML) de extremo a extremo. Explora y prepara sus datos, aplica diferentes algoritmos para generar un modelo y proporciona de manera transparente información del modelo e informes de explicabilidad para ayudarlo a interpretar los resultados. Autopilot también puede crear un punto final en tiempo real para la inferencia en línea. Puede acceder a las funciones de un solo clic de Autopilot en Estudio Amazon SageMaker O utilizando el AWS SDK para Python (Boto3) o el SDK de Python de SageMaker.

En esta publicación, mostramos cómo hacer predicciones por lotes en un conjunto de datos sin etiquetar usando un modelo entrenado en Autopilot. Utilizamos un conjunto de datos generado sintéticamente que es indicativo de los tipos de características que normalmente ve al predecir la rotación de clientes.

Resumen de la solución

Lote inferencia, o digital fuera de línea. inferencia, es el proceso de generar predicciones sobre un lote de observaciones. La inferencia por lotes asume que no necesita una respuesta inmediata a una solicitud de predicción de modelo, como lo haría al usar un punto final de modelo en línea y en tiempo real. Las predicciones sin conexión son adecuadas para conjuntos de datos más grandes y en los casos en los que puede esperar varios minutos u horas para obtener una respuesta. A diferencia de, en línea la inferencia genera predicciones de ML en tiempo real, y se denomina acertadamente como en tiempo real inferencia o lugar de trabajo dinámico inferencia. Por lo general, estas predicciones se generan en una sola observación de datos en tiempo de ejecución.

Perder clientes es costoso para cualquier negocio. Identificar a los clientes insatisfechos desde el principio le brinda la oportunidad de ofrecerles incentivos para quedarse. Los operadores móviles tienen datos históricos de clientes que muestran quiénes se han dado de baja y quiénes han mantenido el servicio. Podemos usar esta información histórica para construir un modelo para predecir si un cliente abandonará usando ML.

Después de entrenar un modelo de ML, podemos pasar la información de perfil de un cliente arbitrario (la misma información de perfil que usamos para el entrenamiento) al modelo y hacer que el modelo prediga si el cliente abandonará o no. El conjunto de datos utilizado para esta publicación está alojado en la carpeta sagemaker-sample-files en un Servicio de almacenamiento simple de Amazon (Amazon S3) depósito público, que puede descargar. Consta de 5,000 registros, donde cada registro utiliza 21 atributos para describir el perfil de un cliente de un operador móvil estadounidense desconocido. Los atributos son los siguientes:

  • Estado – Estado de EE. UU. en el que reside el cliente, indicado por una abreviatura de dos letras; por ejemplo, TX o CA
  • Longitud de la cuenta – Número de días que esta cuenta ha estado activa
  • Codigo de AREA – Código de área de tres dígitos del número de teléfono del cliente correspondiente
  • Teléfono – Número de teléfono restante de siete dígitos
  • Plan Internacional – Tiene plan de llamadas internacionales: Si/No
  • Plan de correo virtual – Tiene una función de correo de voz: Sí/No
  • Mensaje de VMail – Número promedio de mensajes de correo de voz por mes
  • Minutos del día – Número total de minutos de llamadas utilizados durante el día
  • Llamadas diurnas – Número total de llamadas realizadas durante el día
  • Cargo por día – Costo facturado de llamadas diurnas
  • Eve Mins, Eve llama, Eve Charge – Costo facturado por llamadas realizadas durante la noche
  • Minutos nocturnos, llamadas nocturnas, cargo nocturno – Costo facturado por llamadas realizadas durante la noche
  • Minutos internacionales, llamadas internacionales, cargo internacional – Costo facturado por llamadas internacionales
  • Llamadas CustServ – Número de llamadas realizadas al Servicio de Atención al Cliente
  • ¿Batir? – Cliente abandonó el servicio: Verdadero/Falso

El último atributo, Churn?, es el atributo de destino que queremos que prediga el modelo de ML. Debido a que el atributo de destino es binario, nuestro modelo realiza una predicción binaria, también conocida como clasificación binaria.

conjunto de datos de abandono

Requisitos previos

Descargue el conjunto de datos en su entorno de desarrollo local y explórelo ejecutando el siguiente comando de copia de S3 con el Interfaz de línea de comandos de AWS (CLI de AWS):

$ aws s3 cp s3://sagemaker-sample-files/datasets/tabular/synthetic/churn.txt ./

A continuación, puede copiar el conjunto de datos en un depósito de S3 dentro de su propia cuenta de AWS. Esta es la ubicación de entrada para Autopilot. Puede copiar el conjunto de datos en Amazon S3 cargándolo manualmente en su depósito o ejecutando el siguiente comando mediante la AWS CLI:

$ aws s3 cp ./churn.txt s3://<YOUR S3 BUCKET>/datasets/tabular/datasets/churn.txt

Crear un experimento de piloto automático

Cuando el conjunto de datos esté listo, puede inicializar un experimento de Autopilot en SageMaker Studio. Para obtener instrucciones completas, consulte Cree un experimento de piloto automático de Amazon SageMaker.

under Ajustes básicos, puede crear fácilmente un experimento de Autopilot proporcionando un nombre de experimento, las ubicaciones de entrada y salida de datos y especificando los datos de destino para predecir. Opcionalmente, puede especificar el tipo de problema de ML que desea resolver. De lo contrario, utilice el Auto y Autopilot determina automáticamente el modelo en función de los datos que proporcione.

crear experimento de piloto automático

También puede ejecutar un experimento de Autopilot con código utilizando AWS SDK for Python (Boto3) o SageMaker Python SDK. El siguiente fragmento de código muestra cómo inicializar un experimento de Autopilot con el SDK de Python de SageMaker. usamos el Clase AutoML del SDK de Python de SageMaker.

from sagemaker import AutoML automl = AutoML(role="<SAGEMAKER EXECUTION ROLE>",
target_attribute_name="<NAME OF YOUR TARGET COLUMN>",
base_job_name="<NAME FOR YOUR AUTOPILOT EXPERIMENT>",
sagemaker_session="<SAGEMAKER SESSION>",
max_candidates="<MAX NUMBER OF TRAINING JOBS TO RUN AS PART OF THE EXPERIMENT>") automl.fit("<PATH TO INPUT DATASET>", job_name="<NAME OF YOUR AUTOPILOT EXPERIMENT>", wait=False, logs=False)

Después de que Autopilot comienza un experimento, el servicio inspecciona automáticamente los datos de entrada sin procesar, aplica procesadores de características y selecciona el mejor conjunto de algoritmos. Después de elegir un algoritmo, Autopilot optimiza su rendimiento mediante un proceso de búsqueda de optimización de hiperparámetros. Esto a menudo se denomina entrenamiento y ajuste del modelo. En última instancia, esto ayuda a producir un modelo que puede hacer predicciones precisas sobre datos que nunca ha visto. Autopilot realiza un seguimiento automático del rendimiento del modelo y luego clasifica los modelos finales en función de las métricas que describen la exactitud y precisión de un modelo.

resultados del experimento de piloto automático

También tiene la opción de implementar cualquiera de los modelos clasificados ya sea eligiendo el modelo (clic con el botón derecho) y eligiendo Implementar modelo, o seleccionando el modelo en la lista clasificada y eligiendo Implementar modelo.

Haz predicciones por lotes usando un modelo de Autopilot

Cuando su experimento de Autopilot esté completo, puede usar el modelo entrenado para ejecutar predicciones por lotes en su conjunto de datos de prueba o reserva para su evaluación. Luego puede comparar las etiquetas pronosticadas con las etiquetas esperadas si su conjunto de datos de prueba o reserva está etiquetado previamente. Esta es esencialmente una forma de comparar las predicciones de un modelo con la verdad. Si más de las predicciones del modelo coinciden con las etiquetas verdaderas, generalmente podemos clasificar el modelo como de buen desempeño. También puede ejecutar predicciones por lotes para etiquetar datos sin etiquetar. Puede lograr lo mismo fácilmente con el SDK de Python de SageMaker de alto nivel con unas pocas líneas de código.

Describir un experimento de Autopilot ejecutado anteriormente

Primero necesitamos extraer la información de un experimento de Autopilot completado previamente. Podemos usar la clase AutoML del SDK de Python de SageMaker para crear un objeto automl que encapsule la información de un experimento de Autopilot anterior. Puede usar el nombre del experimento que definió al inicializar el experimento de Autopilot. Ver el siguiente código:

from sagemaker import AutoML autopilot_experiment_name = "<ENTER YOUR AUTOPILOT EXPERIMENT NAME HERE>"
automl = AutoML.attach(auto_ml_job_name=autopilot_experiment_name)

Con el objeto automl, podemos describir y recrear fácilmente el modelo mejor entrenado, como se muestra en los siguientes fragmentos:

best_candidate = automl.describe_auto_ml_job()['BestCandidate']
best_candidate_name = best_candidate['CandidateName'] model = automl.create_model(name=best_candidate_name, candidate=best_candidate, inference_response_keys=inference_response_keys)

En algunos casos, es posible que desee utilizar un modelo que no sea el mejor modelo clasificado por Autopilot. Para encontrar un modelo candidato de este tipo, puede usar el objeto automl e iterar a través de la lista de todos los modelos candidatos o los N principales y elegir el modelo que desea volver a crear. Para esta publicación, usamos un bucle For de Python simple para iterar a través de una lista de modelos candidatos:

all_candidates = automl.list_candidates(sort_by='FinalObjectiveMetricValue', sort_order='Descending', max_results=100) for candidate in all_candidates: if candidate['CandidateName'] == "<ANY CANDIDATE MODEL OTHER THAN BEST MODEL>": candidate_name = candidate['CandidateName'] model = automl.create_model(name=candidate_name, candidate=candidate, inference_response_keys=inference_response_keys) break

Personaliza la respuesta de inferencia

Al recrear el mejor o cualquier otro de los modelos entrenados de Autopilot, podemos personalizar la respuesta de inferencia para el modelo agregando el parámetro adicional inference_response_keys, como se muestra en el ejemplo anterior. Puede utilizar este parámetro para tipos de problemas de clasificación tanto binarios como multiclase:

  • etiqueta_predicha – La clase prevista.
  • probabilidades – En la clasificación binaria, la probabilidad de que el resultado se prediga como la segunda clase o verdadera en la columna de destino. En clasificación multiclase, la probabilidad de la clase ganadora.
  • etiquetas – Una lista de todas las clases posibles.
  • probabilidades – Una lista de todas las probabilidades para todas las clases (el orden se corresponde con las etiquetas).

Debido a que el problema que estamos abordando en esta publicación es la clasificación binaria, configuramos este parámetro de la siguiente manera en los fragmentos anteriores al crear los modelos:

inference_response_keys = ['predicted_label', 'probability']

Cree transformadores y ejecute predicciones por lotes

Finalmente, después de recrear los modelos candidatos, podemos crear un transformador para iniciar el trabajo de predicciones por lotes, como se muestra en los siguientes dos fragmentos de código. Al crear el transformador, definimos las especificaciones del clúster para ejecutar el trabajo por lotes, como el recuento y el tipo de instancias. La entrada y salida por lotes son las ubicaciones de Amazon S3 donde se almacenan nuestras entradas y salidas de datos. El trabajo de predicción por lotes funciona con Transformación por lotes de SageMaker.

transformer = model.transformer(instance_count=1, instance_type='ml.m5.xlarge', assemble_with='Line', output_path=batch_output) transformer.transform(data=batch_input, split_type='Line', content_type='text/csv', wait=False)

Cuando se completa el trabajo, podemos leer la salida del lote y realizar evaluaciones y otras acciones posteriores.

Resumen

En esta publicación, demostramos cómo realizar predicciones por lotes de forma rápida y sencilla utilizando modelos entrenados en Autopilot para sus evaluaciones posteriores a la capacitación. Usamos SageMaker Studio para inicializar un experimento de Autopilot para crear un modelo para predecir la rotación de clientes. Luego hicimos referencia al mejor modelo de Autopilot para ejecutar predicciones por lotes usando la clase automl con el SDK de Python de SageMaker. También usamos el SDK para realizar predicciones por lotes con otros modelos candidatos. Con Autopilot, exploramos y preprocesamos automáticamente nuestros datos, luego creamos varios modelos de ML con un solo clic, lo que permitió que SageMaker se encargara de administrar la infraestructura necesaria para entrenar y ajustar nuestros modelos. Por último, usamos la transformación por lotes para hacer predicciones con nuestro modelo utilizando un código mínimo.

Para obtener más información sobre el piloto automático y sus funciones avanzadas, consulte Automatice el desarrollo de modelos con Amazon SageMaker Autopilot. Para obtener un recorrido detallado del ejemplo en la publicación, eche un vistazo a lo siguiente cuaderno de ejemplo.


Acerca de los autores

Arunprasath Shankar es un arquitecto de soluciones especializado en inteligencia artificial y aprendizaje automático (AI / ML) en AWS, que ayuda a los clientes globales a escalar sus soluciones de inteligencia artificial de manera efectiva y eficiente en la nube. En su tiempo libre, a Arun le gusta ver películas de ciencia ficción y escuchar música clásica.

Pedro ChungPedro Chung es un arquitecto de soluciones para AWS y le apasiona ayudar a los clientes a descubrir información de sus datos. Ha estado creando soluciones para ayudar a las organizaciones a tomar decisiones basadas en datos tanto en el sector público como en el privado. Posee todas las certificaciones de AWS, así como dos certificaciones de GCP. Le gusta el café, cocinar, mantenerse activo y pasar tiempo con su familia.

punto_img

Información más reciente

punto_img