Tipos de dados e transformações

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

Treinamento de modelo

Os dados tabulares de entrada precisam ser transformados antes de serem usados para treinamento de modelo. A transformação indica a função de um atributo de dados específico.

As seguintes transformações são compatíveis:

Se a fonte de dados for um arquivo CSV no Cloud Storage, use vírgulas (",") para o delimitador. A Vertex AI usa o formato CSV RFC 4180.

Se a fonte de dados for o BigQuery e você estiver realizando uma classificação ou regressão, será possível incluir dados compostos por vários primitivos de dados. Esses tipos de dados compostos precisam ser pré-processados antes que as transformações possam ser aplicadas. Os seguintes tipos de dados compostos são compatíveis:

Se um valor de tipo estiver ausente ou for nulo, a Vertex AI vai processá-lo com base no objetivo do modelo e na transformação aplicada a esse recurso. Para detalhes, consulte Como os valores ausentes ou nulos são processados.

Previsão

O formato dos dados usados para previsão precisa corresponder ao formato usado para treinamento. Veja mais detalhes em Formato de dados para previsões.

Transformações da Vertex AIs

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.

As transformações categóricas podem ser aplicadas aos dados de STRING em arquivos CSV ou aos seguintes tipos de dados do BigQuery:

  • INT64
  • NUMERIC, BIGNUMERIC
  • FLOAT64
  • BOOL
  • STRING
  • DATE
  • DATETIME
  • TIME
  • TIMESTAMP

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.

As transformações de texto de data/hora podem ser aplicadas a dados STRING em arquivos CSV ou aos seguintes tipos de dados do BigQuery:

  • STRING
  • DATETIME

Numérico

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.

As transformações numéricas podem ser aplicadas aos dados de STRING em arquivos CSV ou aos seguintes tipos de dados do BigQuery:

  • INT64
  • NUMERIC, BIGNUMERIC
  • FLOAT64
  • STRING
  • TIMESTAMP

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.

As transformações de carimbo de data/hora podem ser aplicadas a dados STRING em arquivos CSV ou aos seguintes tipos de dados do BigQuery:

  • INT64
  • STRING
  • DATE
  • DATETIME
  • TIMESTAMP

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.

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.

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

Formato de dados para previsões

O formato dos dados usados para previsão precisa corresponder ao formato usado para treinamento.

Se você treinou seu modelo em dados em um arquivo CSV no Cloud Storage, seus dados eram do tipo STRING. Se você estiver usando um objeto JSON para enviar sua solicitação de previsão, verifique se todos os valores nos pares de chave-valor também são do tipo STRING.

Se você treinou seu modelo com dados armazenados no BigQuery e está usando um objeto JSON para enviar sua solicitação de previsão, os tipos de dados dos valores nos pares de chave-valor JSON precisam seguir o mapeamento na tabela abaixo.

Tipo de dados do BigQuery Tipo de dados JSON
INT64 String
NUMERIC, BIGNUMERIC Número
FLOAT64 Número
BOOL Booleano
STRING String
DATE String
DATETIME String
PERÍODO String
TIMESTAMP String
Matriz Matriz
STRUCT Objeto

Por exemplo, se os dados de treinamento contiverem recursos length do tipo FLOAT64, o seguinte par de chave-valor JSON está correto:

"length":3.6,

Por outro lado, o seguinte par de chave-valor JSON gera um erro:

"length":"3.6",

A seguir