Preparar os dados de treinamento

Nesta página, você aprenderá como preparar os dados de treinamento antes de importá-los para o AutoML Tables.

Introdução

A qualidade dos dados de treinamento tem forte impacto sobre a eficácia do modelo criado e, por consequência, sobre a qualidade das predições retornadas pelo modelo. Não é possível modificar os dados após o upload. Se você precisar alterar os dados de treinamento depois de importá-los, será necessário atualizar os dados de origem e importá-los novamente.

Entender como os dados são interpretados e usados pelo AutoML Tables é essencial para fazer o upload de dados limpos e eficazes.

Como entender o problema

O primeiro passo para criar dados de treinamento eficazes é assegurar que o problema esteja bem definido e produza os resultados de predição necessários. Se você é iniciante em machine learning, analise os tipos de problemas que o AutoML Tables trata e decida qual tipo de modelo você quer criar. Para informações sobre os tipos de problemas aceitos pelo AutoML Tables, consulte Tipos de problemas.

Como determinar o que incluir no conjunto de dados

Em seguida, você precisa determinar os dados a serem incluídos nos dados de treinamento. Em alguns casos, é possível usar uma tabela que já esteja nos dados da sua empresa. Em outros, será necessário reunir dados de fontes diferentes e possivelmente transformá-los ou descartar algumas colunas para criar dados de treinamento mais eficazes.

Requisitos dos dados de treinamento

Os dados de treinamento precisam estar em conformidade com os seguintes requisitos:

  • Precisam ter 100 GB ou menos.

  • É necessário incluir o valor que você quer prever (a coluna de destino).

    Se os dados não tiverem essa coluna, o AutoML Tables não conseguirá associar os dados de treinamento ao resultado desejado. O tipo de dados dessa coluna também determina o tipo do modelo. Saiba mais.

  • É preciso haver no mínimo duas e no máximo mil colunas.

    É preciso que uma coluna seja a coluna de destino e é necessário haver pelo menos outro atributo disponível para treinar o modelo. O ideal é que os dados de treinamento contenham muito mais que duas colunas.

  • É preciso haver no mínimo mil e no máximo duzentos milhões de linhas.

    É possível que mil linhas não sejam suficientes para treinar um modelo de alto desempenho, dependendo da quantidade de atributos presentes no seu conjunto de dados. Saiba mais.

Mais atributos com base nos dados de treinamento

Além dos requisitos acima, alguns recursos do AutoML Tables exigem que dados específicos sejam incluídos nos dados de treinamento:

Para mais práticas recomendadas sobre dados, consulte Práticas recomendadas para criar dados de treinamento.

Como preparar a fonte de importação

É possível fornecer dados de treinamento de modelos no AutoML Tables de duas maneiras:

A fonte que você usa depende de como seus dados são armazenados, do tamanho e da complexidade deles. Se seu conjunto de dados for pequeno e você não precisar de tipos de dados mais complexos, é mais fácil usar um arquivo CSV. No caso de conjuntos de dados maiores, que incluam matrizes e structs, use o BigQuery.

Para ambas as fontes de importação, seus dados precisam atender aos seguintes requisitos:

  • Terem entre mil e 200 milhões de linhas.
  • Terem entre duas e mil colunas.
  • Terem no máximo 100 GB.

BigQuery

Sua tabela do BigQuery precisa usar um conjunto de dados multirregional do BigQuery no local US ou EU. Dependendo do local da tabela do BigQuery e da fonte de dados dela (que podem ser diferentes), você precisa fazer as atualizações de permissão listadas na tabela abaixo. Alterações de permissão podem ser necessárias no projeto inicial (o projeto em que o AutoML Tables está localizado) ou no projeto externo.

Tipo de tabela Local da tabela Local da fonte de dados Adição de papel obrigatória
Tabela nativa do BigQuery Projeto inicial N/A Nenhum
Tabela nativa do BigQuery Projeto externo N/A BigQuery Data Viewer para projeto externo. Saiba mais.
Visualização do BigQuery Mesmo projeto N/A Nenhum
Visualização do BigQuery Projeto diferente N/A BigQuery Data Viewer para projeto externo. Saiba mais.
Fonte de dados externa do BigQuery com suporte do Bigtable Projeto inicial Projeto inicial Bigtable Reader para projeto inicial. Saiba mais.
Fonte de dados externa do BigQuery com suporte do Bigtable Projeto inicial Projeto externo Bigtable Reader para projeto externo. Saiba mais.
Fonte de dados externa do BigQuery com suporte do Bigtable Projeto externo Projeto externo BigQuery Reader e Bigtable Reader para projetos externos. Saiba mais
Fonte de dados externa do BigQuery com suporte do Cloud Storage Projeto inicial Projeto inicial Nenhum
Fonte de dados externa do BigQuery com suporte do Cloud Storage Projeto inicial Projeto externo Storage Object Viewer para projeto externo. Saiba mais.
Fonte de dados externa do BigQuery com suporte do Cloud Storage Projeto externo Projeto externo Storage Object Viewer e BigQuery Data Viewer para projetos externos. Saiba mais
Fonte de dados externa do BigQuery com suporte do Planilhas Google Projeto inicial N/A Compartilhe o arquivo do Planilhas com a conta de serviço do AutoML. Saiba mais.
Fonte de dados externa do BigQuery com suporte do Planilhas Google Projeto externo N/A BigQuery Reader para projeto externo e compartilhe seu arquivo do Planilhas com a conta de serviço do AutoML.

Não é necessário especificar o esquema da tabela do BigQuery. O AutoML Tables infere automaticamente o esquema da tabela quando os dados são importados.

O URI do BigQuery, que especifica o local dos dados de treinamento, precisa estar em conformidade com o seguinte formato:

bq://<project_id>.<dataset_id>.<table_id>

O URI não pode conter outros caracteres especiais.

Para informações sobre os tipos de dados do BigQuery e sobre como eles são mapeados no AutoML Tables, consulte Tabelas do BigQuery. Para mais informações sobre o uso de fontes de dados externas do BigQuery, consulte Introdução a fontes de dados externas.

Arquivos CSV

Requisitos para arquivos CSV

Os arquivos CSV podem estar no Cloud Storage ou no seu computador local. Eles precisam estar em conformidade com os seguintes requisitos:

  • A primeira linha do primeiro arquivo precisa ser um cabeçalho, contendo os nomes das colunas. Se a primeira linha de um arquivo subsequente for igual ao cabeçalho, ela também será tratada como um cabeçalho; em caso contrário, será tratada como dados.
  • Os nomes das colunas podem incluir qualquer caractere alfanumérico ou um sublinhado (_). No entanto, ele não pode ser iniciado por um sublinhado.
  • O caractere separador precisa ser uma vírgula (",").
  • Os arquivos não podem ter mais de 10 GB cada um.

    É possível incluir vários arquivos até o máximo de 100 GB.

Não é necessário especificar o esquema dos dados CSV. O AutoML Tables infere automaticamente o esquema da tabela quando os dados são importados e usa a linha de cabeçalho para nomear as colunas.

Para mais informações sobre o formato de arquivo CSV e tipos de dados, consulte Arquivos CSV.

Requisitos do bucket do Cloud Storage

Se você estiver importando seus dados do Cloud Storage, eles deverão estar em um bucket que atenda aos seguintes requisitos:

  • O bucket está em conformidade com os requisitos do bucket do Cloud Storage.
  • Se o bucket não estiver no mesmo projeto que o AutoML Tables, você deverá atribuir o papel Storage > Storage Object Viewer ao AutoML Tables nesse projeto. Saiba mais.

Se você estiver importando seus dados do computador local, precisará ter um bucket do Cloud Storage que atenda aos seguintes requisitos:

  • O bucket está em conformidade com os requisitos do bucket do Cloud Storage.
  • Se o bucket não estiver no mesmo projeto que o AutoML Tables, você deverá atribuir o papel Storage > Storage Object Creator ao AutoML Tables nesse projeto. Saiba mais.

O AutoML Tables usa esse bucket como uma área de preparo antes de importar seus dados.

Use o console do Google Cloud para importar arquivos CSV do seu computador local.

Como as divisões de dados são usadas

Quando você usa um conjunto de dados para treinar um modelo, seus dados são separados em três divisões: um conjunto de treinamento, um conjunto de validação e um conjunto de teste.

Os conjuntos de treinamento e de validação são usados para testar um grande número de combinações de opções de pré-processamento, arquitetura e hiperparâmetros. Esses experimentos resultam em modelos treinados que são avaliados com o conjunto de validação para melhorar a qualidade e orientar a exploração de combinações de outras opções.

Quando os experimentos complementares não resultam mais em melhorias na qualidade, essa versão do modelo é considerada o modelo treinado final de melhor desempenho. Em seguida, o AutoML Tables treina mais dois modelos, usando os parâmetros e a arquitetura determinados na fase de ajustes paralelos:

  1. Um modelo treinado com seus conjuntos de treinamento e validação.

    O AutoML Tables gera nesse modelo as métricas de avaliação do modelo, usando o conjunto de teste. Essa é a primeira vez em que o conjunto de teste é usado durante o processo. Essa abordagem garante que as métricas de avaliação finais sejam um reflexo imparcial do desempenho do modelo treinado final na produção.

  2. Um modelo treinado com os conjuntos de treinamento, validação e teste.

    Esse modelo é aquele que você usa para solicitar previsões.

Sobre como controlar a divisão de dados

Por padrão, o AutoML Tables seleciona aleatoriamente 80% das linhas de dados para treinamento, 10% para validação e 10% para teste. Em conjuntos de dados que não sofrem alterações com o passar do tempo, são relativamente equilibrados e refletem a distribuição dos dados a serem usados para predições em produção, normalmente o algoritmo de seleção aleatória é suficiente. A meta principal é garantir que o conjunto de teste represente com precisão os dados que o modelo verá na produção. Assim, temos a certeza de que as métricas de avaliação indicam com exatidão como o modelo funcionará com dados reais.

Veja abaixo algumas das situações em que convém escolher ativamente as linhas que serão usadas em cada divisão de dados:

  • Os dados dependem de um período específico.

    Nesse caso, use uma coluna Data/hora ou faça uma divisão manual que resulte na utilização dos dados mais recentes como o conjunto de teste.

  • Os dados de teste incluem dados de populações que não serão representadas na produção.

    Por exemplo, suponha que você esteja treinando um modelo com dados de compras de várias lojas. Entretanto, você sabe que o modelo será usado principalmente para fazer previsões para lojas que não fazem parte dos dados de treinamento. Para garantir que o modelo possa generalizar para lojas não vistas, você deve separar os conjuntos de dados por lojas. Em outras palavras, seu conjunto de teste deve incluir somente lojas que não estejam no conjunto de avaliação, e o conjunto de avaliação deve, por sua vez, ter apenas lojas que não estejam no conjunto de treinamento.

  • Não há equilíbrio entre as classes.

    Se uma classe tiver muito mais volume do que outras nos dados de treinamento, talvez seja necessário incluir manualmente mais exemplos nas classes minoritárias nos dados de teste. O AutoML Tables não realiza uma amostragem estratificada. Portanto, o conjunto de teste pode incluir poucos exemplos ou até mesmo nenhum exemplo da classe minoritária.

Para controlar quais linhas são selecionadas em cada divisão, use uma das duas abordagens a seguir:

Se você especificar tanto a coluna de divisão de dados quanto a coluna Data/hora, apenas a coluna de divisão de dados será usada para dividir os dados.

A coluna de divisão de dados

Na coluna de divisão de dados, é possível selecionar as linhas específicas a serem usadas para treinamento, validação e teste. Ao criar os dados de treinamento, adicione uma coluna que contendo um dos seguintes valores, com diferenciação entre maiúsculas e minúsculas:

  • TRAIN
  • VALIDATE
  • TEST
  • UNASSIGNED

A combinação dos valores nesta coluna precisa contemplar uma das seguintes possibilidades:

  • Todos TRAIN, VALIDATE e TEST
  • Somente TEST e UNASSIGNED

Todas as linhas precisam ter um valor para essa coluna, ela não pode ser uma string vazia.

Por exemplo, com todos os conjuntos especificados:

"TRAIN","John","Doe","555-55-5555"
"TEST","Jane","Doe","444-44-4444"
"TRAIN","Roger","Rogers","123-45-6789"
"VALIDATE","Sarah","Smith","333-33-3333"

Com apenas o conjunto de teste especificado:

"UNASSIGNED","John","Doe","555-55-5555"
"TEST","Jane","Doe","444-44-4444"
"UNASSIGNED","Roger","Rogers","123-45-6789"
"UNASSIGNED","Sarah","Smith","333-33-3333"

A coluna de divisão de dados pode ter qualquer nome de coluna válido.

Se o valor da coluna de divisão de dados for UNASSIGNED, o AutoML Tables atribuirá a linha automaticamente ao conjunto de treinamento ou ao conjunto de validação.

Depois de importar seus dados, selecione uma divisão de dados manual e especifica essa coluna como a coluna de divisão de dados. Também é possível usar o campo mlUseColumnSpecId.

A coluna Data/hora

Use a coluna Data/hora para informar ao AutoML Tables que o tempo é importante para os dados, que eles não são distribuídos aleatoriamente ao longo do tempo. Quando você especifica a coluna Data/hora, o AutoML Tables usa 80% das linhas mais antigas para treinamento, 10% das próximas linhas para validação e 10% das linhas mais recentes para teste.

O AutoML Tables trata todas as linhas como exemplos de treinamento independentes e com distribuição idêntica. Definir a coluna Data/hora não altera isso. A coluna Data/hora é usada apenas para dividir o conjunto de dados.

Você precisa incluir um valor para a coluna Data/hora para cada linha do conjunto de dados. Verifique se a coluna Data/hora tem uma quantidade suficiente de valores distintos para que os conjuntos de avaliação e teste não fiquem vazios. Normalmente, pelo menos 20 valores distintos é o suficiente.

A coluna Data/hora precisa ter um tipo de dados Timestamp.

Durante a revisão do esquema, selecione essa coluna como a coluna Data/hora. Na API, use o campo timeColumnSpecId. Essa seleção só terá efeito se você não tiver especificado a coluna de divisão de dados.

Se você tiver uma coluna relacionada ao tempo e não quiser usá-la para dividir seus dados, defina o tipo de dados dessa coluna como Timestamp, mas não a defina como a coluna Data/hora.

Sobre como usar pesos nos dados de treinamento

Por padrão, o AutoML Tables atribui pesos igualmente a cada linha do conjunto de dados de treinamento, ou seja, nenhuma linha é considerada mais importante do que as outras para fins de treinamento.

Às vezes, convém que algumas linhas tenham mais importância para o treinamento. Por exemplo, se você estiver usando dados sobre gastos, talvez queira que os dados associados aos maiores gastadores tenham mais impacto no modelo. Se a falta de um resultado específico é algo que você quer evitar, então atribua mais peso às linhas com tal resultado.

Para atribuir um peso relativo às linhas, adicione uma coluna de peso ao conjunto de dados. A coluna de peso precisa ser numérica. Use-a para especificar um valor de 0 a 10.000. Valores mais altos informam ao AutoML Tables que a linha é mais importante durante o treinamento do modelo. Um peso 0 significa que a linha é ignorada. Se você incluir uma coluna de peso, ela precisará conter um valor para cada linha.

Posteriormente, quando você revisar o esquema, especifique essa coluna como Peso. Também é possível usar o campo weightColumnSpecId.

Esquemas de ponderação personalizados são usados apenas para treinar o modelo. Eles não afetam a avaliação do modelo.

Requisitos da coluna de destino

É preciso que a coluna de destino esteja em conformidade com os seguintes requisitos:

  • Ela precisa ser categórica ou numérica.
  • Se for categórica, é preciso que tenha no mínimo dois e no máximo 500 valores distintos.
  • Ele não pode ser anulável.

A seguir