Tipos de dados e transformações para dados tabulares

Nesta página, mostramos como a Vertex AI funciona com diferentes tipos de dados tabulares para modelos do AutoML.

Introdução às transformações na Vertex AI

Os dados tabulares são compostos por muitas linhas de dados. Cada linha tem os mesmos atributos ou colunas. Cada recurso tem um tipo de dados de origem, que depende da origem (BigQuery ou de um arquivo CSV no Cloud Storage). Quando você usa os dados para treinar um modelo, a Vertex AI examina o tipo de dados de origem e os valores de atributos e infere como usará esse recurso no treinamento do modelo. Isso é chamado de transformação desse recurso. Se necessário, é possível especificar uma transformação compatível diferente para qualquer recurso.

Para modelos de previsão (visualização), você também precisa fornecer o tipo de recurso para todas as suas colunas.

Transformações da Vertex AI

Categórico

Aplicar uma transformação categórica faz com que esse atributo represente valores em uma categoria. ou seja, trata-se de um nível nominal. Os valores diferem apenas com base no nome, sem qualquer ordem. É possível usar números para representar valores categóricos, mas eles não terão relação numérica entre si. Isso quer dizer que o valor categórico 1 não é “maior” que o valor categórico 0.

Veja abaixo alguns exemplos de valores categóricos:

  • Booleano - true, false.
  • País - "USA", "Canada", "China" e assim por diante.
  • Código de status HTTP - "200", "404", "500" e assim por diante.

Valores categóricos diferenciam maiúsculas de minúsculas. As variações ortográficas são tratadas como categorias diferentes, por exemplo, “Contato” e “Contacto” não são combinadas.

Quando você treina um modelo com um atributo com uma transformação categórica, a Vertex AI aplica as seguintes transformações de dados ao recurso e usa qualquer um que forneça sinal para treinamento:

  • A string categórica como está, sem mudanças de caixa, pontuação, ortografia, tempo verbal e assim por diante.
  • Converter o nome da categoria em um índice de busca de dicionário e gerar uma incorporação para cada índice.
  • As categorias exibidas menos de cinco vezes no conjunto de dados de treinamento são tratadas como categoria "desconhecida". A categoria "desconhecida" recebe seu próprio índice especial de busca e incorporação resultante.

Texto

Uma transformação de texto faz com que o recurso seja usado como texto de formato livre, normalmente formado por tokens de texto.

Veja abaixo alguns exemplos de valores de texto:

  • "The quick brown fox"
  • "This restaurant is the best! The food is delicious"

Para modelos de previsão, a transformação de texto não é compatível com os recursos covariáveis.

Quando você treina um modelo com um atributo com transformação de texto, a Vertex AI aplica as seguintes transformações de dados ao recurso e usa qualquer um que forneça sinal para treinamento:

  • O texto como está, sem mudanças de caixa, pontuação, ortografia, tempo verbal e assim por diante.
  • Tokenizar o texto para palavras e gerar 1-grama e 2-gramas de palavras. Converter cada n-grama em um índice de busca de dicionário e gerar uma incorporação para cada índice. Combinar a incorporação de todos os elementos em uma única incorporação usando a média.

    A Tokenização é baseada em limites de script unicode.

  • Valores ausentes recebem o próprio índice de busca e incorporação resultante.
  • Palavras de parada não recebem tratamento especial e não são removidas.

Numérica

Uma transformação numérica faz com que uma coluna seja usada como um número ordinal ou quantitativo. Esses números podem ser comparados, ou seja, um número pode ter grandeza maior ou menor que outro número distinto.

O espaço em branco inicial ou final é cortado.

A tabela a seguir mostra todos os formatos compatíveis para uma transformação numérica:

Formato Exemplos Observações
String numérica "101", 101,5" O caractere ponto final (".") é o único delimitador decimal válido. "101,5" e "100.000" não são strings numéricas válidas.
Notação científica "1,12345E+11", "1,12345e+11" Consulte a observação para strings numéricas em relação aos delimitadores decimais.
Não é um número "NAN", "nan", "+NAN" Não há distinção entre maiúsculas e minúsculas. Os caracteres precedentes mais ("+") ou menos ("-") são ignorados. Interpretado como valor NULL.
Infinito "INF", "+inf" Não há distinção entre maiúsculas e minúsculas. Os caracteres precedentes mais ("+") ou menos ("-") são ignorados. Interpretado como valor NULL.

Se um valor em uma coluna com uma transformação numérica não estiver em conformidade com um desses formatos, a linha inteira será excluída do treinamento ou o valor será tratado como null. Escolha entre esses resultados quando selecionar a transformação numérica.

Quando você treina um modelo com um atributo com uma transformação numérica, a Vertex AI aplica as seguintes transformações de dados ao recurso e usa qualquer um que forneça sinal para treinamento:

  • O valor convertido em float32.
  • O z_score do valor.
  • Um índice do bucket de valor com base em quantis. O tamanho do bucket é 100.
  • log(value+1) quando o valor for maior ou igual a 0. Caso contrário, essa transformação não é aplicada e o valor é considerado um valor ausente.
  • z_score de log(value+1) quando o valor for maior ou igual a 0. Caso contrário, essa transformação não é aplicada e o valor é considerado um valor ausente.
  • Um valor booleano que indica se o valor é nulo.
  • Linhas com entradas numéricas inválidas (por exemplo, uma string que não pode ser analisada para float32) não são incluídas para treinamento e previsão.
  • Valores extremos/outliers não recebem nenhum tratamento especial.

Carimbo de data/hora

Uma transformação de carimbo de data/hora faz com que um recurso seja usado como ponto no tempo, representado como hora civil de um fuso horário ou um carimbo de data/hora do Unix. Somente os recursos com uma transformação de carimbo de data/hora podem ser usados na coluna Data/hora.

Se um fuso horário não for especificado com a hora civil, o padrão será UTC.

A tabela a seguir mostra todos os formatos de string de carimbo de data/hora compatíveis:

Formato Exemplo Observações
%E4Y-%m-%d "2017-01-30" Para ver uma descrição desse formato, consulte a documentação do Abseil.
%E4Y/%m/%d "2017/01/30"
%Y/%m/%d %H:%M:%E*S "2017/01/30 23:59:58"
%d-%m-%E4Y "30-11-2018"
%d/%m/%E4Y "30/11/2018"
%d-%B-%E4Y "30-November-2018"
%Y-%m-%dT%H:%M:%E*S%Ez "2019-05-17T23:56:09.05Z" RFC 3339
String de carimbo de data/hora do Unix em segundos "1541194447" Apenas para períodos entre 01/Jan/1990 e 01/Jan/2030.
String de carimbo de data/hora do Unix em milissegundos "1541194447000"
String de carimbo de data/hora do Unix em microssegundos "1541194447000000"
String de carimbo de data/hora do Unix em nanossegundos "1541194447000000000"

Se um valor em uma coluna com uma transformação de carimbo de data/hora não estiver em conformidade com um desses formatos, a linha inteira será excluída do treinamento ou o valor será tratado como null. Escolha entre esses resultados quando selecionar a transformação do carimbo de data/hora.

Quando você treina um modelo com um atributo com transformação de carimbo de data/hora, a Vertex AI aplica as seguintes transformações de dados ao recurso e usa qualquer um que forneça sinal para treinamento:

  • Aplicar as transformações nas colunas Numéricas.
  • Determinar ano, mês, dia e dia da semana. Tratar cada valor do timestamp como uma coluna Categórica.
  • Valores numéricos inválidos (por exemplo, valores que estão fora do intervalo de timestamp comum ou são valores extremos) não recebem tratamento especial e não são removidos.
  • Linhas com entradas inválidas de carimbo de data/hora, por exemplo, uma string de carimbo de data/hora inválida, não são incluídas para treinamento e previsão.

Tipos de dados compostos

Às vezes, é necessário incluir dados de vários primitivos de dados, como uma matriz ou uma estrutura. Os tipos de dados compostos estão disponíveis apenas usando o BigQuery como uma fonte de dados e não são compatíveis com modelos de previsão (Preview).

Struct

Uma struct pode ser usada para representar um grupo de campos rotulados. Ela contém uma lista de nomes de campos, cada um associado a um tipo de dados. É necessário que a lista de campos e os tipos de dados correspondentes sejam iguais em todos os valores de struct de uma coluna.

Veja alguns exemplos de structs:

  • Pressão arterial - {"timestamp": 1535761416, "systolic": 110, "diastolic": 70}
  • Produto - {"name": "iPhone", price: 1000}

Use o tipo de dados “STRUCT” no BigQuery para representar as structs.

Os valores struct são nivelados automaticamente em campos. A Vertex AI aplica a transformação de dados aos campos nivelados de acordo com o tipo de transformação dos campos.

Matriz

Uma matriz pode ser usada para representar uma lista de valores. Os valores contidos precisam aceitar o mesmo tipo de transformação. É possível incluir estruturas em matrizes. todas as estruturas na matriz precisam ter a mesma estrutura.

A Vertex AI processa matrizes como representação do peso relativo. Isto é, os itens que aparecem mais tarde em uma matriz têm mais peso do que aqueles que aparecem no início.

Veja alguns exemplos de matrizes:

  • Categorias de produtos:

    ["Clothing", "Women", "Dress", ...]

  • Compras mais recentes:

    ["iPhone", "Laptop", "Suitcase", ...]

  • Registros de usuário:

    [{"name": "Joelle", ID: 4093}, {"name": "Chloe", ID: 2047}, {"name": "Neko", ID: 3432}, ...]

Use o tipo de dados “ARRAY” no BigQuery para representar as matrizes.

A transformação de dados que a Vertex AI aplica depende do tipo de transformação aplicado à matriz:

Tipo array Transformação
Matriz numérica
  • Todas as transformações para tipos Numéricos aplicadas à média dos últimos N itens onde N = {1, 2, 4, 8, todos}. Assim, os itens mais enfatizados são os que estão no final da matriz, não no início.
  • A média das matrizes vazias será tratada como zero.
Matriz categórica
  • Para cada elemento na matriz dos últimos N itens em que N = {1, 2, 4, 8, todos}, converta o nome da categoria em um índice de busca de dicionário e gere uma incorporação para cada índice. Combinar a incorporação de todos os elementos em uma única incorporação usando a média.
  • Matrizes vazias são tratadas como uma incorporação de zeros.
Matriz de texto
  • Concatenar todos os valores de texto da matriz em um único valor de texto usando um espaço (" ") como delimitador e, em seguida, tratar o resultado como um único valor de texto. Aplicar as transformações nas colunas Texto.
  • Matrizes vazias são tratadas como uma incorporação de zeros.
Matriz de carimbo de data/hora
  • Aplicar as transformações das colunas Numéricas à média dos últimos N itens da matriz. N = {1, 2, 4, 8, todos}. Isso significa que os itens mais enfatizados são os que estão no final da matriz.
Matriz de struct
  • As estruturas na matriz são niveladas em campos individuais e montados em matrizes por campo. A transformação de matriz, conforme descrito nesta tabela, é aplicada, de acordo com o tipo de campo dessa matriz.

Formato do nome da coluna

As colunas (atributos) nos dados de treinamento são nomeadas no esquema da tabela do BigQuery ou na linha de cabeçalho do arquivo CSV. Nomes de colunas podem incluir qualquer caractere alfanumérico ou sublinhado (_). O nome da coluna não pode começar com um caractere sublinhado.

Tabelas do BigQuery

Tipos de dados do BigQuery compatíveis

Antes de criar uma tabela do BigQuery, é necessário conhecer os tipos de dados compatíveis com o BigQuery e como eles são mapeados para os tipos de dados da Vertex AI.

Tipo de dados BigQuery Compatível para importação? Tipo de dados JSON Transformações compatíveis
INT64 S String Numérico, categórico, carimbo de data/hora
NUMERIC, BIGNUMERIC S Número Numérico, categórico
FLOAT64 S Número Numérico, categórico
BOOL S Booleano Categórico
STRING S String Texto, categórico, numérico, carimbo de data/hora
BYTES N N/A N/A
DATE S String Carimbo de data/hora, categórico
DATETIME S String Carimbo de data/hora, categórico, texto
GEOGRAPHY N N/A N/A
TIME S String Categórico
TIMESTAMP S String Carimbo de data/hora, categórico, numérico
Matriz S Matriz Uma versão repetida da transformação usada para uma única instância desse tipo de dados. As conversões de carimbo de data/hora não são compatíveis com dados de matriz.
STRUCT S Objeto Struct

Arquivos CSV

Transformações compatíveis

Todos os dados CSV estão no formato de string. Para modelos treinados em dados de treinamento em arquivos CSV no Cloud Storage, os dados de previsão em lote também precisam ser fornecidos no formato CSV no Cloud Storage.

As seguintes transformações estão disponíveis para dados de string:

  • Texto
  • Categórico
  • Numérico
  • Carimbo de data/hora

Formato CSV

A Vertex AI usa o formato CSV RFC 4180. As vírgulas (",") precisam ser usadas no delimitador.

Tipo de recurso e disponibilidade na previsão

Cada coluna usada para treinar um modelo de previsão (Visualizar) precisa ter um tipo: atributo ou covariável. As variantes são designadas como disponíveis ou indisponíveis no momento da previsão.

Tipo de série Disponível no momento da previsão Descrição Exemplos Campos da API
Atributo Disponível Um atributo é um recurso estático que não muda com o tempo. Cor do item e descrição do produto time_series_attribute_columns
Covariável Disponível

Uma variável exagerada que pode ser alterada com o tempo. Uma covariável disponível no momento da previsão é um indicador principal.

Forneça dados de previsão para essa coluna em cada ponto no horizonte de previsão.

Feriados, promoções planejadas ou eventos. available_at_forecast_columns
Covariável Indisponível Uma covariável não disponível no momento da previsão. Não é preciso fornecer valores para esses recursos ao criar uma previsão. Previsão do tempo. unavailable_at_forecast_columns

Como os valores ausentes ou nulos são tratados

A maneira como os valores ausentes são processados depende do objetivo do modelo e da transformação aplicada a esse recurso.

Classificação e regressão

Para modelos de classificação e regressão, os valores nulos resultam em uma incorporação para transformações categóricas e de texto. para outras transformações, o valor nulo é deixado como nulo.

Previsão

Para modelos de previsão (Preview), valores nulos são imputados dos dados em torno. Não há opção de deixar um valor nulo como nulo. Se você preferir controlar a maneira como os valores nulos são inseridos, será possível mitigá-los explicitamente. Os melhores valores podem depender dos seus dados e do problema comercial.

Linhas ausentes (por exemplo, nenhuma linha para uma data específica, com uma granularidade de dados diária) são permitidas, mas a Vertex AI não altera os valores dos dados ausentes. Como linhas ausentes podem diminuir a qualidade do modelo, evite linhas ausentes sempre que possível. Por exemplo, se faltar uma linha porque a quantidade de vendas para esse dia era zero, adicione uma linha para esse dia e defina explicitamente os dados de vendas como 0.

Quais valores são tratados como valores nulos

Ao treinar um modelo do AutoML, a Vertex AI trata os seguintes valores como valores nulos:

  • Um valor NULL do BigQuery.

  • NaN ou valores numéricos infinitos.

  • Uma string vazia. A Vertex AI não corta espaços das strings. Ou seja, " " não é considerado um valor nulo.

  • Uma string que pode ser convertida em NaN ou valor numérico infinito.

    • Para "NAN": ignorar maiúsculas e minúsculas com um sinal de mais ou de menos opcional.
    • Para "INF": ignorar maiúsculas e minúsculas, com um sinal de mais ou menos opcional.
  • Valores ausentes.

  • Valores em uma coluna com uma transformação numérica ou de carimbo de data/hora que não estão em um formato válido para a transformação da coluna. Nesse caso, se você especificou que a linha com o valor inválido precisa ser usada no treinamento, o valor inválido é considerado nulo.

A seguir