Criar um modelo de machine learning automaticamente

com o Amazon SageMaker Autopilot

O Amazon SageMaker é um serviço totalmente gerenciado que fornece a todos os desenvolvedores e cientistas de dados a capacidade de criar, treinar e implantar modelos de machine learning (ML) rapidamente.

Neste tutorial, você cria modelos de machine learning automaticamente sem escrever uma linha de código. Você usa o Amazon SageMaker Autopilot, um recurso AutoML que cria automaticamente os melhores modelos de machine learning de classificação e regressão, permitindo total controle e visibilidade.

Neste tutorial, você aprenderá a:

  1. Criar uma conta da AWS
  2. Configurar o Amazon SageMaker Studio para acessar o Amazon SageMaker Autopilot
  3. Fazer download de um conjunto de dados público usando o Amazon SageMaker Studio
  4. Criar um experimento de treinamento com o Amazon SageMaker Autopilot
  5. Explorar as diferentes etapas do experimento de treinamento
  6. Identificar e implantar o modelo com melhor performance do experimento de treinamento
  7. Prever com seu modelo implantado

Neste tutorial, você assumirá a função de um desenvolvedor que trabalha em um banco. Solicitaram que você desenvolva um modelo de machine learning para prever se um cliente se inscreverá para um certificado de depósito (CD). O modelo será treinado no conjunto de dados de marketing que contém informações sobre a demografia do cliente, respostas a eventos de marketing e fatores externos.

Os dados foram rotulados para sua conveniência e uma coluna no conjunto de dados identifica se o cliente está inscrito para um produto oferecido pelo banco. Uma versão deste conjunto de dados está publicamente disponível no repositório de ML pré-selecionado pela Universidade da Califórnia, em Irvine.
Sobre este tutorial
Duração 10 minutos                                           
Custo Menos de 10 USD
Caso de uso Machine Learning
Produtos Amazon SageMaker
Público Desenvolvedor
Nível Iniciante
Data da última atualização 12 de maio de 2020

Etapa 1. Criar uma conta da AWS

O custo deste workshop é inferior a 10 USD. Para obter mais informações, consulte a definição de preço do Amazon SageMaker Studio.

Você já tem uma conta? Faça login

Etapa 2. Configurar o Amazon SageMaker Studio

Conclua as etapas a seguir para integrar o Amazon SageMaker Studio para acessar o Amazon SageMaker Autopilot.

Observação: Para obter mais informações, consulte Get Started with Amazon SageMaker Studio na documentação do Amazon SageMaker.


a. Faça login no console do Amazon SageMaker

Observação: No canto superior direito, selecione uma Região da AWS em que o Amazon SageMaker Studio esteja disponível. Para obter uma lista de Regiões, consulte Onboard to Amazon SageMaker Studio.


b. No painel de navegação do Amazon SageMaker, escolha o Amazon SageMaker Studio.
 
Observação: Se você estiver usando o Amazon SageMaker Studio pela primeira vez, deverá concluir o processo de integração do Studio. Ao integrar, você pode optar por usar o AWS Single Sign-On (AWS SSO) ou o AWS Identity and Access Management (IAM) para métodos de autenticação. Ao usar a autenticação do IAM, você pode escolher o procedimento de Início rápido ou Configuração padrão. Se você não tiver certeza de qual opção escolher, consulte Onboard to Amazon SageMaker Studio e peça assistência ao administrador de TI. Para simplificar, este tutorial usa o procedimento de Início rápido.

c. Na caixa Get started, escolha Quick start e especifique um nome de usuário.

d. Em Execution role, escolha Create an IAM role. Na caixa de diálogo exibida, escolha Any S3 bucket e Create role.

O Amazon SageMaker cria uma função com as permissões necessárias e a atribui à sua instância.  


e. Clique em Submit.

Etapa 3. Fazer download do conjunto de dados

Conclua as etapas a seguir para fazer download e explorar o conjunto de dados.

Observação: Para obter mais informações, consulte Amazon SageMaker Studio tour na documentação do Amazon SageMaker.


a. No Amazon SageMaker Studio Control Panel, escolha Open Studio.

b. Em JupyterLab, no menu File, escolha New e Notebook. Na caixa Select Kernel, escolha Python 3 (Data Science).
 

c. Para fazer download e extrair o código, copie e cole o seguinte código na célula de código e escolha Run.
 
Observação: Enquanto o código é executado, um * aparece entre colchetes. Após alguns segundos, a execução do código é concluída e o * é substituído por um número.
%%sh
apt-get install -y unzip
wget https://sagemaker-sample-data-us-west-2.s3-us-west-2.amazonaws.com/autopilot/direct_marketing/bank-additional.zip
unzip -o bank-additional.zip

d. Copie e cole o seguinte código em uma nova célula de código e selecione Run.

O conjunto de dados CSV é carregado e exibe as dez primeiras linhas.

import pandas as pd
data = pd.read_csv('./bank-additional/bank-additional-full.csv')
data[:10]

Uma das colunas do conjunto de dados é chamada de y e representa o rótulo de cada amostra: esse cliente aceitou a oferta ou não?

Essa etapa é onde os cientistas de dados começam a explorar os dados, criando novos recursos e assim por diante. Com o Amazon SageMaker Autopilot, você não precisa executar nenhuma dessas etapas extras. Basta fazer upload de dados tabulares em um arquivo com valores separados por vírgula (por exemplo, de uma planilha ou banco de dados), escolher a coluna de destino a ser prevista e o Autopilot criará um modelo preditivo para você.


d. Copie e cole o seguinte código em uma nova célula de código e selecione Run.

Essa etapa faz upload de um conjunto de dados CSV para um bucket do Amazon S3. Você não precisa criar um bucket do Amazon S3. O Amazon SageMaker cria automaticamente um bucket padrão em sua conta quando você faz upload dos dados.

import sagemaker

prefix = 'sagemaker/tutorial-autopilot/input'
sess   = sagemaker.Session()

uri = sess.upload_data(path="./bank-additional/bank-additional-full.csv", key_prefix=prefix)
print(uri)

Está pronto! A saída de código exibe o URI do bucket do S3 como no exemplo a seguir:

s3://sagemaker-us-east-2-ACCOUNT_NUMBER/sagemaker/tutorial-autopilot/input/bank-additional-full.csv

Acompanhe o URI do S3 impresso em seu próprio bloco de anotações. Você precisará dele na próxima etapa.

Etapa 4. Criar um experimento do SageMaker Autopilot

Agora que você fez download e preparou seu conjunto de dados no Amazon S3, pode criar um experimento do Amazon SageMaker Autopilot. Um experimento é uma coleção de trabalhos de processamento e treinamento relacionadas ao mesmo projeto de machine learning.

Siga as etapas abaixo para criar um novo experimento.

Observação: Para obter mais informações, consulte Create an Amazon SageMaker Autopilot Experiment in SageMaker Studio na documentação do Amazon SageMaker.


a. No painel de navegação esquerdo do Amazon SageMaker Studio, escolha Experiments (ícone simbolizado por um balão) e escolha Create Experiment.


b. Preencha os campos Job Settings da seguinte maneira:

  • Experiment Name: tutorial-autopilot
  • S3 location of input data: URI do S3 que você imprimiu acima
    (por exemplo, s3://sagemaker-us-east-2-123456789012/sagemaker/tutorial-autopilot/input/bank-additional-full.csv)
  • Target attribute name: y
  • S3 location for output data: s3://sagemaker-us-east-2-[NÚMERO-CONTA]/sagemaker/tutorial-autopilot/output
    (lembre-se de substituir [NÚMERO-CONTA] pelo seu próprio número de conta)

c. Deixe todas as outras configurações como padrão e escolha Create Experiment.

Êxito! Isso inicia o experimento do Amazon SageMaker Autopilot. O processo gerará um modelo e estatísticas que você pode visualizar em tempo real enquanto o experimento está em execução. Após a conclusão do experimento, você pode visualizar as avaliações, classificar por métrica objetiva e clicar com o botão direito do mouse para implantar o modelo para uso em outros ambientes.

Etapa 5. Explorar os estágios do experimento do SageMaker Autopilot

Enquanto seu experimento está em andamento, você pode aprender e explorar os diferentes estágios do experimento do SageMaker Autopilot.  

Esta seção fornece mais detalhes sobre os estágios do experimento do SageMaker Autopilot:

  1. Análise de dados
  2. Engenharia de recursos
  3. Ajuste de modelos

Observação: Para obter informações, consulte SageMaker Autopilot Notebook Output.


Análise de dados

O estágio de Análise de dados identifica o tipo de problema a ser resolvido (regressão linear, classificação binária, classificação multiclasse). Em seguida, ele cria dez pipelines candidatos. Um pipeline combina uma etapa de pré-processamento de dados (tratamento de valores ausentes, novos recursos de engenharia etc.) e uma etapa de treinamento do modelo usando um algoritmo de ML que corresponde ao tipo de problema. Quando essa etapa é concluída, o trabalho passa para a engenharia de recursos.  


Engenharia de recursos

No estágio de Engenharia de recursos, o experimento cria conjuntos de dados de treinamento e validação para cada pipeline candidato, armazenando todos os artefatos no seu bucket do S3. Enquanto estiver no estágio de Engenharia de recursos, você poderá abrir e visualizar dois blocos de notas gerados automaticamente:

  • O bloco de notas de exploração de dados contém informações e estatísticas sobre o conjunto de dados.
  • O bloco de notas de geração de candidatos contém a definição dos dez pipelines. Na verdade, este é um bloco de notas executável: você pode reproduzir exatamente o que o trabalho do AutoPilot faz, entender como os diferentes modelos são criados e até mesmo ajustá-los, se assim desejar.

Com esses dois blocos de anotações, você pode entender em detalhes como os dados são pré-processados e como os modelos são criados e otimizados. Essa transparência é um recurso importante do Amazon SageMaker Autopilot.


Ajuste de modelos

No estágio de Ajuste de modelos, para cada pipeline candidato e seu conjunto de dados pré-processado, o SageMaker Autopilot inicia um trabalho de otimização de hiperparâmetros; os trabalhos de treinamento associados exploram uma ampla gama de valores de hiperparâmetros e são convergidos rapidamente para modelos de alta performance.

Quando esse estágio estiver concluído, o trabalho do SageMaker Autopilot estará concluído. Você pode visualizar e explorar todos os trabalhos no SageMaker Studio.

Etapa 6. Implantar o melhor modelo

Agora que seu experimento foi concluído, você pode escolher o melhor modelo de ajuste e implantar o modelo em um endpoint gerenciado pelo Amazon SageMaker.

Siga estas etapas para escolher o melhor trabalho de ajuste e implantar o modelo.

Observação: Para obter mais informações, consulte Escolher e implantar o melhor modelo.


a. Na lista Trials do seu experimento, escolha o símbolo de ordenação ao lado de Objective para classificar os trabalhos de ajuste em ordem decrescente. O melhor trabalho de ajuste é destacado com uma estrela.


b. Selecione o melhor trabalho de ajuste (indicado por uma estrela) e escolha Deploy model


c. Na caixa Deploy model, dê um nome para seu endpoint (por exemplo tutorial-autopilot-best-model) e deixe todas as configurações como padrão. Escolha Deploy model.

Seu modelo é implantado em um endpoint HTTPS gerenciado pelo Amazon SageMaker.


d. Na barra de ferramentas esquerda, escolha o ícone Endpoints. Você pode ver seu modelo sendo criado, o que levará alguns minutos. Quando o status de endpoint é InService, você pode enviar dados e receber previsões.

Etapa 7. Prever com seu modelo

Agora que o modelo foi implantado, é possível prever as primeiras 2.000 amostras do conjunto de dados. Para esse fim, você usa a API invoke_endpoint no SDK boto3. No processo, você calcula métricas importantes de machine learning: fidelidade, precisão, recuperação e pontuação F1.

Siga estas etapas para prever com seu modelo.

Observação: Para obter mais informações, consulte Manage Machine Learning with Amazon SageMaker Experiments.


No seu bloco de anotações do Jupyter, copie e cole o seguinte código e escolha Run.

import boto3, sys

ep_name = 'tutorial-autopilot-best-model'
sm_rt = boto3.Session().client('runtime.sagemaker')

tn=tp=fn=fp=count=0

with open('bank-additional/bank-additional-full.csv') as f:
    lines = f.readlines()
    for l in lines[1:2000]:   # Skip header
        l = l.split(',')      # Split CSV line into features
        label = l[-1]         # Store 'yes'/'no' label
        l = l[:-1]            # Remove label
        l = ','.join(l)       # Rebuild CSV line without label
                
        response = sm_rt.invoke_endpoint(EndpointName=ep_name, 
                                         ContentType='text/csv',       
                                         Accept='text/csv', Body=l)

        response = response['Body'].read().decode("utf-8")
        #print ("label %s response %s" %(label,response))

        if 'yes' in label:
            # Sample is positive
            if 'yes' in response:
                # True positive
                tp=tp+1
            else:
                # False negative
                fn=fn+1
        else:
            # Sample is negative
            if 'no' in response:
                # True negative
                tn=tn+1
            else:
                # False positive
                fp=fp+1
        count = count+1
        if (count % 100 == 0):   
            sys.stdout.write(str(count)+' ')
            
print ("Done")

accuracy  = (tp+tn)/(tp+tn+fp+fn)
precision = tp/(tp+fp)
recall    = tn/(tn+fn)
f1        = (2*precision*recall)/(precision+recall)

print ("%.4f %.4f %.4f %.4f" % (accuracy, precision, recall, f1))

A seguinte saída será exibida.

100 200 300 400 500 600 700 800 900 1000 1100 1200 1300 1400 1500 1600 1700 1800 1900 Done
0.9830 0.6538 0.9873 0.7867

Esta saída é um indicador de progresso que mostra o número de amostras que foram previstas.

Etapa 8. Limpar

Nesta etapa, você encerra os recursos que você usou neste laboratório.

Importante: é recomendável encerrar os recursos que não estão em uso, pois isso reduz custos. Se os recursos não forem encerrados, sua conta será cobrada.


Excluir seu endpoint: no seu bloco de anotações do Jupyter, copie e cole o seguinte código e escolha Run.

sess.delete_endpoint(endpoint_name=ep_name)

Se você desejar limpar todos os artefatos de treinamento (modelos, conjuntos de dados pré-processados etc.), copie e cole o seguinte código em sua célula de código e escolha Run.

Observação: Lembre-se de substituir NÚMERO_CONTA pelo seu número de conta.

%%sh
aws s3 rm --recursive s3://sagemaker-us-east-2-ACCOUNT_NUMBER/sagemaker/tutorial-autopilot/

Parabéns

Você criou um modelo de machine learning com a melhor precisão automaticamente com o Amazon SageMaker Autopilot.

Este tutorial foi útil para você?

Saiba mais sobre o Amazon SageMaker Autopilot

Caso deseje saber mais, leia o artigo de blog ou consulte a série de vídeos do Autopilot.