Preparar dados de treinamento para machine learning com código mínimo

TUTORIAL

Visão geral

Neste tutorial, você aprenderá a preparar dados para machine learning (ML) usando o Amazon SageMaker Data Wrangler
 
O Amazon SageMaker Data Wrangler reduz o tempo para agregação e preparação de dados para ML de semanas para minutos. Usando o SageMaker Data Wrangler, é possível simplificar o processo de preparação de dados e engenharia de recursos, bem como concluir cada etapa do fluxo de trabalho de preparação de dados, inclusive seleção, limpeza, exploração e visualização de dados em uma só interface visual.
 
Neste tutorial, você usará o Amazon SageMaker Data Wrangler para preparar dados para treinar um modelo de previsão de risco de crédito. Será utilizada uma versão do conjunto de dados de risco de crédito alemão disponível no UCI Machine Learning Repository. Os dados consistem em mil registros, cada um contendo informações de um indivíduo, como dados demográficos, informações sobre emprego e dados financeiros. Além disso, cada registro contém um campo de risco de crédito rotulado high (alto) ou low (baixo). Você carregará os dados no Amazon Simple Storage Service (Amazon S3), criará um novo fluxo do SageMaker Data Wrangler, transformará os dados, verificará os dados quanto a desvios e, por fim, salvará a saída no Amazon S3 a ser usada posteriormente no treinamento de ML.

O que você aprenderá

Neste guia, você vai:

  • Visualizar e analisar dados para entender as principais relações
  • Aplicar transformações para limpar os dados e gerar novos recursos
  • Gerar blocos de anotações automaticamente para fluxos de trabalho de preparação de dados replicáveis

Pré-requisitos

Antes de iniciar este tutorial, você precisará de:

  • Uma conta da AWS: caso ainda não tenha uma conta, siga o guia de conceitos básicos Configurar seu ambiente da AWS para obter uma breve visão geral.

 AWS Experience

Iniciante

 Tempo para a conclusão

30 minutos

 Custo para a conclusão

Consulte os preços do Amazon SageMaker para estimar o custo deste tutorial.

 Requisitos

Você deve estar conectado a uma conta da AWS.

 Serviços usados

Amazon SageMaker Data Wrangler

 Data da última atualização

1.º de julho de 2022

Implementação

Etapa 1: configurar o domínio do Amazon SageMaker Studio

Com o Amazon SageMaker, é possível implantar um modelo visualmente pelo console ou de maneira programática com o SageMaker Studio ou blocos de anotações do SageMaker. Neste tutorial, implante o modelo de maneira programática usando um bloco de anotações do SageMaker Studio, que requer um domínio do SageMaker Studio.

Uma conta da AWS pode ter apenas um domínio do SageMaker Studio por região. Caso já tenha um domínio do SageMaker Studio na região Leste dos EUA (Norte da Virgínia), siga o guia de configuração do SageMaker Studio para anexar as políticas do AWS IAM necessárias à conta do SageMaker Studio, ignore a Etapa 1 e vá diretamente para a Etapa 2. 

Caso não tenha um domínio SageMaker Studio, continue com os passos da Etapa 1 para executar um modelo do AWS CloudFormation que cria um domínio do SageMaker Studio e adiciona as permissões necessárias para finalizar este tutorial.

Escolha o link da pilha do AWS CloudFormation. Esse link abre o console do AWS CloudFormation e cria seu domínio do SageMaker Studio e um usuário chamado studio-user. Também adiciona as permissões necessárias à sua conta do SageMaker Studio. No console do CloudFormation, confirme se US East (N. Virginia) (Leste dos EUA [Norte da Virgínia]) é a Region (Região) exibida no canto superior direito. O Stack name (Nome da pilha) deve ser CFN-SM-IM-Lambda-catalog e não poderá ser alterado. Essa pilha leva cerca de dez minutos para criar todos os recursos.

A pilha pressupõe que você já tenha uma VPC pública configurada na conta. Se você não tiver uma VPC pública, consulte VPC com uma única sub-rede pública para aprender a criar uma VPC pública. 

Selecione I acknowledge that AWS CloudFormation might create IAM resources (Estou ciente de que o AWS CloudFormation pode criar recursos do IAM) e escolha Create stack (Criar pilha).

No painel do CloudFormation, escolha Stacks (Pilhas). A pilha leva cerca de dez minutos para ser criada. Quando a pilha é criada, o status da pilha é mudado de CREATE_IN_PROGRESS para CREATE_COMPLETE

Etapa 2: criar um novo fluxo do SageMaker Data Wrangler

O SageMaker Data Wrangler recebe dados de uma ampla variedade de fontes, como o Amazon S3, Amazon Athena, Amazon Redshift, Snowflake e Databricks. Nesta etapa, você criará um novo fluxo do SageMaker Data Wrangler usando o conjunto de dados de risco de crédito alemão do UCI armazenado no Amazon S3. Esse conjunto de dados contém informações demográficas e financeiras sobre indivíduos, além de um rótulo que indica o nível de risco de crédito do indivíduo.

Digite SageMaker Studio na barra de pesquisa do console e escolha SageMaker Studio.

Escolha US East (N. Virginia) (Leste dos EUA [Norte da Virgínia]) na lista suspensa Region (Região) no canto superior direito do console do SageMaker. Em Launch app (Iniciar aplicação), selecione Studio para abrir o SageMaker Studio usando o perfil studio-user.

Abra a interface do SageMaker Studio. Na barra de navegação, escolha File (Arquivo), New (Novo), Notebook (Bloco de anotações). 

Na guia Import (Importar), em Import data (Importar dados), escolha Amazon S3.

 

Etapa 2

No campo S3 URI path (Caminho da URI do S3), insira s3://sagemaker-sample-files/datasets/tabular/uci_statlog_german_credit_data/german_credit_data.csv e escolha Go (Ir). Em Object name (Nome do objeto), clique em german_credit_data.csv e escolha Import (Importar).

 

Etapa 3: analisar os dados

Nesta etapa, você usará o SageMaker Data Wrangler para avaliar a qualidade do conjunto de dados de treinamento. Utilize o recurso Quick Model (Modelo rápido) para estimar aproximadamente a qualidade de previsão esperada e a capacidade preditiva dos recursos do conjunto de dados.

 

Na guia Data Flow (Fluxo de dados), no diagrama de fluxo de dados, escolha o ícone +Add analysis (Adicionar análise).

Etapa 3

No painel Create analysis (Criar análise), em Analysis type (Tipo de análise), selecione Histogram (Histograma). 

Etapa 3

Para X axis (Eixo X), selecione age (idade). 

Para Color by (Colorir conforme), selecione risk (risco). 

Escolha Preview (Pré-visualizar) para gerar um histograma do campo credit risk (risco de crédito), diferenciado por cores pelo intervalo age (idade). 

Escolha Save (Salvar) para salvar esta análise no fluxo.

 

Etapa 3

Para entender o quanto o conjunto de dados é adequado para treinar um modelo que prevê a variável de destino risk, execute a análise Quick Model (Modelo rápido). Na guia Analysis (Análise), escolha Create new analysis (Criar nova análise). 

Etapa 3

No painel Create analysis (Criar análise), em Analysis type (Tipo de análise), escolha Quick Model (Modelo rápido). Para Label (Rótulo), selecione risk (risco) e escolha Preview (Pré-visualizar). O painel Quick Model (Modelo rápido) exibe uma breve visão geral do modelo usado e algumas estatísticas básicas, como a pontuação F1 e a importância do recurso, que ajudam a avaliar a qualidade do conjunto de dados. Selecione Save (Salvar).

Etapa 3

Etapa 4: adicionar transformações ao fluxo de dados

O SageMaker Data Wrangler simplifica o processamento de dados ao fornecer uma interface visual que permite adicionar uma ampla variedade de transformações predefinidas. Você também pode escrever transformações personalizadas usando o SageMaker Data Wrangler. Nesta etapa, você nivelará dados de cadeia de caracteres complexos, codificará categorias, renomeará colunas e removerá colunas desnecessárias usando o editor visual. Em seguida, dividirá a coluna status_sex em duas novas colunas: marital_status e sex.

 

Para navegar pelo diagrama do fluxo de dados, escolha Data flow (Fluxo de dados). 

No diagrama do fluxo de dados, escolha o ícone +, Add transform (Adicionar transformação). 

No painel ALL STEPS (TODAS AS ETAPAS), escolha Add step (Adicionar etapa).

Na lista ADD TRANSFORM (ADICIONAR TRANSFORMAÇÃO), escolha Search and edit (Pesquisar e editar), que é uma transformação usada para manipular dados de cadeia de caracteres.

No painel SEARCH AND EDIT (PESQUISAR E EDITAR), em Transform (Transformar), selecione Split string by delimiter (Dividir cadeia de caracteres por delimitador). Em Input columns (Colunas de entrada), selecione status_sex. Na caixa Delimiter (Delimitador), insira o símbolo “: ”. Em Output column (Coluna de saída), insira vec. Escolha Preview (Pré-visualizar) e Add (Adicionar). 

Essa transformação cria uma nova coluna chamada vec no fim da estrutura de dados dividindo a coluna status_sex. A coluna status_sex contém cadeias de caracteres delimitadas por dois pontos, e a nova coluna vec contém vetores delimitados por vírgulas.

Para dividir a coluna vec e criar duas novas colunas, sex_split_0 e sex_split_1

Em ALL STEPS (TODAS AS ETAPAS), escolha + Add step (Adicionar etapa).

Na lista ADD TRANSFORM (ADICIONAR TRANSFORMAÇÃO), escolha Manage vectors (Gerenciar vetores). 

No painel MANAGE VECTORS (GERENCIAR VETORES), em Transform (Transformar), selecione Flatten (Nivelar). Em Input columns (Colunas de entrada), selecione vec. Em output_prefix, insira sex_split.

Escolha Preview (Pré-visualizar), depois Add (Adicionar).

 

 

Etapa 4

Para renomear as colunas criadas pela transformação da divisão:

No painel ALL STEPS (TODAS AS ETAPAS), escolha + Add step (Adicionar etapa).

Na lista ADD TRANSFORM (ADICIONAR TRANSFORMAÇÃO), escolha Manage columns (Gerenciar colunas).

No painel MANAGE COLUMNS (GERENCIAR COLUNAS) em Transform (Transformar), selecione Rename column (Renomear coluna). Em Input column (Coluna de entrada), selecione sex_split_0. Na caixa New name (Novo nome), insira sex.

Escolha Preview (Pré-visualizar), depois Add (Adicionar).

Repita este procedimento para renomear sex_split_1 por marital_status.

Etapa 5: adicionar codificação categórica

Nesta etapa, você criará um destino de modelagem e codificará variáveis categóricas. A codificação categórica transforma categorias de tipo de dados de cadeia de caracteres em rótulos numéricos. É uma tarefa comum de pré-processamento, pois os rótulos numéricos podem ser usados em uma ampla variedade de tipos de modelo.

No conjunto de dados, a classificação de risco de crédito é representada pelas cadeias de caractereshigh risk (alto risco) e low risk (baixo risco). Nesta etapa, você converterá essa classificação em uma representação binária, 0 ou 1. 

No painel ALL STEPS (TODAS AS ETAPAS), escolha + Add Step (Adicionar etapa). Na lista ADD TRANSFORM (ADICIONAR TRANSFORMAÇÃO), escolha Encode categorical (Codificação categórica). O SageMaker Data Wrangler fornece três tipos de transformação: codificação ordinal, codificação one-hot e codificação por similaridade. No painel ENCODE CATEGORICAL (CODIFICAÇÃO CATEGÓRICA), em Transform (Transformar), deixe o padrão Ordinal encode (Codificação ordinal). Em Input columns (Colunas de entrada), selecione risk. Em Output column (Coluna de saída), insira target. Para fins deste tutorial, ignore a caixa Invalid handling strategy (Estratégia de manipulação inválida). Escolha Preview (Pré-visualizar), depois Add (Adicionar).

Para codificar a coluna categórica  savings, faça como no procedimento anterior, mas desta vez usando uma transformação personalizada escrita em Python e Pandas: 
 
No painel ALL STEPS (TODAS AS ETAPAS), escolha  + Add step (Adicionar etapa). Na lista ADD TRANSFORM (ADICIONAR TRANSFORMAÇÃO), escolha  Custom transform (Transformação personalizada).  A estrutura de dados está disponível neste ambiente como a variável “df”. No painel TRANSFORMS (TRANFORMAÇÕES), selecione Python (Pandas) na lista suspensa do kernel. Copie e cole o código a seguir no bloco de código. Escolha Preview (Pré-visualizar) para verificar a saída e Add (Adicionar). As transformações personalizadas oferecem controle refinado sobre a transformação.
# Table is available as variable ‘df’
savings_map = {"unknown":0, "little":1, "moderate":2, "high":3, "very high":4}
df["savings"] = df["savings"].map(savings_map).fillna(df["savings"])

Use a transformação Encode categorical (Codificação categórica) para codificar as colunas restantes: housing, job, sex e marital_status desta forma: em ALL STEPS (TODAS AS ETAPAS), escolha + Add Step (Adicionar etapa). Na lista ADD TRANSFORM (ADICIONAR TRANSFORMAÇÃO), escolha Encode categorical (Codificação categórica). No painel ENCODE CATEGORICAL (CODIFICAÇÃO CATEGÓRICA), em Transform (Transformar), deixe o padrão Ordinal encode (Codificação ordinal). Em Input columns (Colunas de entrada), selecione housing, job, sex e marital_status. Deixe Output column (Coluna de saída) em branco, de modo que os valores codificados substituam os valores categóricos. Escolha Preview (Pré-visualizar), depois Add (Adicionar).

Para escalar a coluna numérica creditamount, aplique um dimensionador ao valor do crédito para normalizar a distribuição dos dados da coluna: no painel ALL STEPS (TODAS AS ETAPAS), escolha + Add Step (Adicionar etapa). Na lista ADD TRANSFORM (ADICIONAR TRANSFORMAÇÃO), escolha Process numeric (Processar numérico). Em Scaler (Dimensionador), selecione a opção Standard scaler (Dimensionador padrão). Em Input columns (Colunas de entrada), selecione creditamount. Escolha Preview (Pré-visualizar) e Add (Adicionar).

Para remover as colunas originais que você transformou: no painel ALL STEPS (TODAS AS ETAPAS), escolha + Add Step (Adicionar etapa). Na lista ADD TRANSFORM (ADICIONAR TRANSFORMAÇÃO), escolha Manage columns (Gerenciar colunas). No painel MANAGE COLUMNS (GERENCIAR COLUNAS), em Transform (Transformar), selecione Drop column (Remover coluna). Em Columns to drop (Colunas a remover), selecione status_sex, existingchecking, employmentsince, risk e vec. Escolha Preview (Pré-visualizar) e Add (Adicionar).

 

 

Etapa 6: executar uma verificação de desvio de dados

Nesta etapa, verifique seus dados com relação a desvios usando o Amazon SageMaker Clarify, que fornece maior visibilidade de seus dados e modelos de treinamento para poder identificar e limitar desvios, além de explicar as previsões.

Escolha Data flow (Fluxo de dados) no canto superior esquerdo para retornar ao diagrama de fluxo de dados. Escolha o ícone + , Add analysis (Adicionar análise). No painel Create analysis (Criar análise), em Analysis type (Tipo de análise), selecione Bias Report (Relatório de desvios). Em Analysis name (Nome da análise), insira qualquer nome. Em Select the column your model predicts (target) (Selecione a coluna sobre a qual seu modelo faz a previsão [destino]), selecione target (destino). Deixe a caixa de seleção Value (Valor) selecionada. Na caixa Predicted value(s) (Valores previstos), insira 1. Em Select the column to analyze for bias (Selecionar a coluna para analisar desvios), selecione sex. Em Choose bias metrics (Escolher métricas de desvio), mantenha as seleções padrão. Escolha Check for bias (Verificar desvios).

 

Etapa 6
Etapa 6

Após alguns segundos, o SageMaker Clarify gerará um relatório demonstrando como as colunas de destino e de teste pontuam em várias métricas relacionadas a desvio, incluindo desbalanceamento de classe (CI) e diferença nas proporções positivas em rótulos (DPL). Neste caso, os dados são levemente tendenciosos em termos de sexo (-0,38) e pouco tendenciosos em termos de rótulos (0,075). Com base nesse relatório, você pode considerar um método de correção de desvio, como usar a transformação SMOTE integrada do SageMaker Data Wrangler. Para fins deste tutorial, pule a etapa de correção. Escolha Save (Salvar) para salvar o relatório de desvio no fluxo de dados.

Etapa 7: exportar o fluxo de dados

Exporte o fluxo de dados para um caderno Jupyter para executar as etapas como trabalhos do SageMaker Processing. Essas etapas processam os dados conforme o fluxo de dados definido e armazenam as saídas no Amazon S3 ou no Amazon SageMaker Feature Store.

No diagrama de fluxo de dados, escolha o ícone +Export to (Exportar para), Amazon S3 (via Jupyter Notebook) (Amazon S3 [via caderno Jupyter]). Isso cria um bloco de anotações no SageMaker Studio onde é possível executar os trabalhos gerados do SageMaker Processing e criar o conjunto de dados transformado. Execute este bloco de anotações para armazenar os resultados no bucket do S3 padrão.

 

Etapa 8: limpar os recursos

Para evitar cobranças não intencionais, é uma prática recomendada excluir recursos que você não esteja mais usando.

Para excluir o bucket do S3, faça o seguinte: 

  • Abra o console do Amazon S3. Na barra de navegação, escolha Buckets, sagemaker-<your-Region>-<your-account-id> e marque a caixa de seleção ao lado de data_wrangler_flows. Selecione Delete (Excluir). 
  • Na caixa de diálogo Delete objects (Excluir objetos), verifique se você selecionou o objeto correto para excluir e digite permanently delete (excluir permanentemente) na caixa de confirmação Permanently delete objects (Excluir objetos permanentemente). 
  • Quando esse passo for concluído e o bucket estiver vazio, você poderá excluir o bucket sagemaker-<your-Region>-<your-account-id> realizando o mesmo procedimento novamente.

O kernel Data Science usado para executar a imagem do bloco de anotações neste tutorial acumulará cobranças até você interromper o kernel ou executar as etapas a seguir para excluir as aplicações. Para obter mais informações, consulte Shut Down Resources (Desativar recursos) no Guia do desenvolvedor do Amazon SageMaker.

Para excluir as aplicações do SageMaker Studio, faça o seguinte: no console do SageMaker Studio, escolha studio-user e exclua todas as aplicações listadas em Apps (Aplicações) escolhendo Delete app (Excluir aplicação). Aguarde até o Status ser alterado para Deleted (Excluído).

Se você usou um domínio existente do SageMaker Studio na Etapa 1, ignore o restante da Etapa 8 e vá diretamente para a seção de conclusão. 

Se você executou o modelo do CloudFormation na Etapa 1 para criar um novo domínio do SageMaker Studio, prossiga com as etapas a seguir para excluir o domínio, o usuário e os recursos criados pelo modelo do CloudFormation.  

Para abrir o console do CloudFormation, insira CloudFormation na barra de pesquisa do Console da AWS e escolha CloudFormation nos resultados da pesquisa.

No painel do CloudFormation, escolha Stacks (Pilhas). Na lista suspensa de status, selecione Active (Ativo). Em Stack name (Nome da pilha), escolha CFN-SM-IM-Lambda-catalog para abrir a página de detalhes da pilha.

Na página de detalhes da pilha CFN-SM-IM-Lambda-catalog, escolha Delete (Excluir) para excluir a pilha junto com os recursos que ela criou na Etapa 1.

Conclusão

Parabéns! Você concluiu o tutorial Preparar dados de treinamento para machine learning com código mínimo.

Você usou corretamente o Amazon SageMaker Data Wrangler para preparar dados para treinar um modelo de machine learning. O SageMaker Data Wrangler oferece mais de 300 transformações de dados pré-configuradas, como conversão de tipo de coluna, codificação one-hot, imputação de dados ausentes com média ou mediana, redimensionamento de colunas e incorporações de dados/tempo, permitindo transformar seus dados para formatos efetivamente usáveis em modelos sem escrever uma só linha de código.

Esta página foi útil para você?

Treinar um modelo de aprendizado profundo

Aprenda a criar, treinar e ajustar um modelo de aprendizado profundo do TensorFlow.
Próximo »

Criar um modelo de ML automaticamente

Aprenda a usar o AutoML para desenvolver modelos de ML sem escrever código.
Próximo »

Encontre mais tutoriais práticos

Veja outros tutoriais de machine learning para se aprofundar.
Próximo »