Preparar dados de treinamento tabular

Nesta página, você verá como preparar seus dados em tabela para uso em um conjunto de dados da Vertex AI. Os conjuntos de dados da Vertex AI podem ser usados para treinar modelos do AutoML ou modelos treinados personalizados. A qualidade dos dados de treinamento afeta a eficácia dos modelos criados.

Consulte também Práticas recomendadas para criar dados de treinamento tabulares e Tipos de dados para dados tabulares.

Identificar o problema

O primeiro passo para criar dados de treinamento tabulares eficazes é garantir que seu problema esteja bem definido e produza os resultados de previsão necessários. Se você é novo no uso de machine learning, use o AutoML para treinar seu modelo. Os modelos do AutoML podem ser usados para os seguintes objetivos:

  • Um modelo de regressão analisa seus dados em tabela e retorna um valor numérico. Por exemplo, é possível treinar um modelo para estimar o valor de uma casa.

  • Um modelo de classificação analisa dados em tabela e retorna uma lista de categorias que descrevem os dados. Por exemplo, é possível treinar um modelo para prever se o histórico de compras de um cliente prevê que ele comprará uma assinatura ou não.

  • Um modelo de previsão (Visualização) usa várias linhas de dados tabulares antigas para prever uma série de valores numéricos que se estendem para o futuro. Por exemplo, ao prever a demanda futura do produto, uma organização de varejo pode otimizar a cadeia de suprimentos para reduzir a chance de excesso de estoque ou vender esse produto.

Estrutura de dados de treinamento

Os requisitos para os dados de treinamento dependem do objetivo do modelo. Selecione seu objetivo abaixo:

Classificação/regressão

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

  • Precisam ter 100 GB ou menos.

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

    Para conjuntos de dados que treinam modelos do AutoML, uma coluna precisa ser o destino e é necessário que haja pelo menos um atributo disponível para treinar o modelo. Se os dados de treinamento não incluírem a coluna de destino, a Vertex AI não conseguirá associar os dados de treinamento ao resultado desejado.

    O ideal é que os dados de treinamento contenham muito mais que duas colunas.

  • É preciso haver no mínimo mil e no máximo cem 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.

  • Use o formato de dados apropriado (amplo ou restrito) para o objetivo.

    Para modelos de classificação e regressão, o formato amplo geralmente é melhor, com todas as linhas que representam um item de dados de treinamento (produto, pessoa etc.).

    Saiba mais sobre formatos de dados.

Previsão

Para modelos de previsão (Visualização), os dados de treinamento precisam estar em conformidade com os seguintes requisitos básicos:

  • Precisam ter 100 GB ou menos.

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

    Para conjuntos de dados que treinam modelos do AutoML, uma coluna precisa ser o destino e é necessário que haja pelo menos um atributo disponível para treinar o modelo. Se os dados de treinamento não incluírem a coluna de destino, a Vertex AI não conseguirá associar os dados de treinamento ao resultado desejado.

    O ideal é que os dados de treinamento contenham muito mais que duas colunas.

  • É preciso haver no mínimo mil e no máximo cem 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.

  • Use um formato de dados estreito (às vezes chamado de longo). No formato estreito, cada linha representa o item especificado pelo identificador da série temporal para um ponto específico no tempo, junto com todos os dados desse item naquele momento.

    Saiba mais sobre formatos de dados.

  • É necessário especificar uma coluna Data/hora e ter um valor para cada linha.

    A coluna Data/hora é obrigatória e é usada para colocar a observação representada por essa linha no tempo.

  • É necessário especificar uma coluna identificadora de série temporal, e ela precisa ter um valor para cada linha.

    Saiba mais.

  • O intervalo entre as linhas de treinamento precisa ser consistente.

    Essa é a frequência dos seus dados. Isso afetará a maneira como o modelo é treinado e a frequência dos resultados de previsão. Saiba mais.

Como preparar a fonte de importação

Há duas maneiras de fornecer dados de treinamento de modelos para a Vertex AI:

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.

BigQuery

A tabela ou visualização do BigQuery precisa estar em conformidade com os requisitos de local do BigQuery.

Se a tabela ou a visualização do BigQuery estiver em um projeto diferente do projeto em que você está criando o conjunto de dados da Vertex AI ou se a tabela ou visualização do BigQuery for apoiada por uma fonte de dados externa, talvez seja necessário adicionar um ou mais papéis ao Agente de serviço da Vertex AI. Consulte Requisitos de adição de papéis para o BigQuery.

Não é necessário especificar o esquema da tabela do BigQuery. A Vertex AI 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 mapeiam para a Vertex AI, 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

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.
  • 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.

  • O delimitador precisa ser uma vírgula (",").

Não é necessário especificar o esquema dos dados CSV. A Vertex AI infere automaticamente o esquema da tabela quando os dados são importados e você usa a linha do cabeçalho para nomear as colunas.

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

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

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

Como controlar divisões de dados

Quando você usa um conjunto de dados para treinar um modelo do AutoML, os dados são divididos em três grupos: um conjunto de treinamento, um conjunto de validação e um conjunto de teste. Para mais informações sobre como os conjuntos são usados, consulte Como o AutoML usa divisões de dados.

As maneiras de controlar as divisões de dados dependem do seu objetivo. o objetivo da previsão é compatível com opções diferentes dos objetivos de classificação e regressão. Selecione a guia do seu objetivo abaixo:

Classificação/regressão

Por padrão, a Vertex AI seleciona aleatoriamente 80% das linhas de dados para o conjunto de treinamento, 10% para o conjunto de validação e 10% para o conjunto de 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:

  • Você não está treinando um modelo de previsão, mas os dados são sensíveis ao tempo.

    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. A Vertex AI 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 abordagens a seguir:

É possível especificar apenas uma dessas opções ao treinar um modelo.

Divisão manual

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. o tipo de transformação pode ser categórico, de texto ou automático.

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

Ao treinar seu modelo, selecione uma divisão de dados manual e especifique essa coluna como a coluna de divisão de dados.

Como dividir os dados cronologicamente

Para modelos de regressão e classificação, use a coluna Data/hora para informar a Vertex IA que o tempo é importante para os dados (os dados não são distribuídos aleatoriamente ao longo do tempo). Quando você especifica a coluna Data/hora, a Vertex AI usa as primeiras linhas para treinamento, as linhas seguintes para validação e as últimas linhas para teste.

Para os objetivos de classificação e regressão, o Vertex AI trata cada linha como um exemplo de treinamento independente e distribuído de maneira idêntica; definir a coluna Data/hora não altera isso. A coluna Data/hora é usada apenas para dividir o conjunto de dados.

Se você especificar uma coluna Data/hora, precisará incluir um valor para a coluna Data/hora para cada linha no 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 devem ser suficientes.

Os dados na coluna data/hora precisam estar em conformidade com um dos formatos aceitos pela transformação de carimbo de data/hora. No entanto, a coluna data/hora pode ter qualquer transformação compatível porque ela afeta apenas a maneira como essa coluna é usada no treinamento. As transformações não afetam a divisão de dados.

Ao especificar uma coluna Data/hora usando a API Vertex AI, também é possível alterar as porcentagens dos dados de treinamento que são atribuídas a cada conjunto.

Ao configurar suas opções de treinamento para um novo modelo, você seleciona essa coluna como a coluna data/hora.

Como dividir os dados matematicamente usando as porcentagens divididas

Por padrão, as porcentagens dos dados de treinamento usados nos conjuntos de treinamento, validação e teste são 80, 10 e 10, respectivamente. É possível alterar as porcentagens ao treinar o modelo usando o método TrainingPipeline.create da API Vertex AI.

Quando você altera as porcentagens, o método de divisão padrão é usado no seu modelo (aleatório).

Previsão

Por padrão, a Vertex IA usa uma combinação cronológica cronológica para separar os dados de previsão (Visualização) nas três divisões de dados. Na maioria dos casos, a divisão padrão é recomendada. Se quiser controlar quais linhas de dados de treinamento são usadas para qual conjunto de dados, use uma divisão manual.

A divisão de dados padrão (cronológica) funciona da seguinte maneira:

  1. Os dados de treinamento são classificados por data.
  2. Usando as porcentagens de conjunto predeterminados (80/10/10), o período coberto pelos dados de treinamento é separado em três blocos, um para cada conjunto de treinamento.
  3. As linhas vazias são adicionadas ao início de cada série temporal para permitir que o modelo aprenda com linhas que não têm histórico suficiente (janela de contexto). O número de linhas adicionadas é o tamanho da janela de contexto definida no momento do treinamento.

  4. Usando o tamanho do horizonte de previsão definido no momento do treinamento, cada linha com dados futuros (horizonte de previsão) se enquadra em um dos conjuntos de dados de cada conjunto. (As linhas que têm um horizonte de previsão com dois conjuntos são descartadas para evitar o vazamento de dados).

    Diagrama de divisão cronológica

Divisão manual

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

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

Exemplo:

"TRAIN","sku_id_1","2020-09-21","10"
"TEST","sku_id_1","2020-09-22","23"
"TRAIN","sku_id_2","2020-09-22","3"
"VALIDATE","sku_id_2","2020-09-23","45"

A coluna de divisão de dados pode ter qualquer nome de coluna válido. o tipo de transformação pode ser categórico, de texto ou automático.

Ao treinar seu modelo, selecione uma divisão de dados manual e especifique essa coluna como a coluna de divisão de dados.

Para mais informações sobre como criar uma divisão manual para um modelo de previsão, consulte Práticas recomendadas para dividir os dados de série temporal.

Sobre como usar pesos nos dados de treinamento

Por padrão, a Vertex AI 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. O valor do peso pode ser de 0 a 10.000. Valores mais altos indicam que a linha é mais importante no treinamento do modelo. Um peso 0 faz com que a linha seja ignorada. Se você incluir uma coluna de peso, ela precisará conter um valor para cada linha.

Posteriormente, ao treinar o modelo, especifique essa coluna como Peso.

Esquemas de ponderação personalizados são usados apenas para treinar o modelo. e não afetam o conjunto de testes usado para avaliação de modelos.

Requisitos da coluna de destino

Os requisitos para a coluna de objetivo variam de acordo com o objetivo do modelo. Selecione seu objetivo abaixo:

Classificação/regressão

Para modelos de regressão e classificação, a coluna de destino precisa estar 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.

Previsão

Para modelos de previsão (Visualização), a coluna de destino precisa ser numérica.

A seguir