Tipi di dati e trasformazioni

Questa pagina descrive il funzionamento di Vertex AI con diversi tipi di dati tabulari per i modelli AutoML.

Introduzione alle trasformazioni in Vertex AI

Addestramento del modello

I dati tabulari di input devono essere trasformati prima di poter essere utilizzati per l'addestramento del modello. La trasformazione indica la funzione di una determinata caratteristica dei dati.

Sono supportate le seguenti trasformazioni:

Se l'origine dati è un file CSV in Cloud Storage, devono essere utilizzate virgole (",") per il delimitatore. Vertex AI utilizza il formato CSV RFC 4180.

Se la tua origine dati è BigQuery e stai eseguendo la classificazione o la regressione, puoi includere dati costituiti da più primitive di dati. Questi tipi di dati composti devono essere pre-elaborati prima che le trasformazioni possano essere applicate. Sono supportati i seguenti tipi di dati composti:

Se un valore di tipo non è presente o è nullo, Vertex AI lo gestisce in base all'obiettivo del modello e alla trasformazione applicata per la funzionalità. Per maggiori dettagli, consulta Come vengono gestiti i valori mancanti o null.

Previsione

Il formato dei dati utilizzati per la previsione deve corrispondere a quello utilizzato per l'addestramento. Per maggiori dettagli, vedi Formato dei dati per le previsioni.

Trasformazioni Vertex AI

Categorica

L'applicazione di una trasformazione categorica fa sì che la funzionalità rappresenti i valori di una categoria. ovvero un livello nominale. I valori differiscono solo in base al nome senza ordine. Puoi utilizzare i numeri per rappresentare i valori di categoria, ma i valori non hanno alcuna relazione numerica tra loro. In altre parole, un valore categorico 1 non è "maggiore" di un valore categorico 0.

Ecco alcuni esempi di valori categorici:

  • Booleano: true, false.
  • Paese: "USA", "Canada", "China" e così via.
  • Codice di stato HTTP: "200", "404", "500" e così via.

I valori delle categorie sono sensibili alle maiuscole; le varianti ortografiche vengono trattate come categorie diverse (ad esempio, "Colore" e "Color" non vengono combinati).

Quando addestri un modello con una funzionalità con una trasformazione categorica, Vertex AI applica le seguenti trasformazioni dei dati alla funzionalità e utilizza quelle che forniscono un indicatore per l'addestramento:

  • La stringa categorica così com'è, senza modifiche alle maiuscole, alla punteggiatura, alla ortografia, al tempo e così via.
  • Converti il nome della categoria in un indice di ricerca del dizionario e genera un embedding per ogni indice.
  • Le categorie che compaiono meno di 5 volte nel set di dati di addestramento vengono trattate come la categoria "sconosciuto". La categoria "Sconosciuto" ottiene il proprio indice di ricerca speciale e l'embedding risultante.

Le trasformazioni categoriche possono essere applicate ai dati STRING nei file CSV o ai seguenti tipi di dati BigQuery:

  • INT64
  • NUMERIC, BIGNUMERIC
  • FLOAT64
  • BOOL
  • STRING
  • DATA
  • DATETIME
  • TEMPO
  • TIMESTAMP

Testo

Una trasformazione di testo fa sì che la funzionalità venga utilizzata come testo in forma libera, in genere costituito da token di testo.

Ecco alcuni esempi di valori di testo:

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

Per i modelli di previsione, la trasformazione del testo non è supportata per le funzionalità di covariate.

Quando addestri un modello con una funzionalità con una trasformazione di testo, Vertex AI applica le seguenti trasformazioni dei dati alla funzionalità e utilizza quelle che forniscono un indicatore per l'addestramento:

  • Il testo così com'è, senza modifiche alle maiuscole, alla punteggiatura, all'ortografia, al tempo verbale e così via.
  • Tokenizza il testo in parole e genera 1-grammi e 2-grammi dalle parole. Converti ogni n-gramma in un indice di ricerca del dizionario e genera un embedding per ogni indice. Combina l'embedding di tutti gli elementi in un unico embedding utilizzando la media.

    La tokenizzazione si basa sui confini dello script Unicode.

  • I valori mancanti hanno un proprio indice di ricerca e l'embedding risultante.
  • Le parole comuni non vengono trattate in modo speciale e non vengono rimosse.

Le trasformazioni di testo possono essere applicate ai dati STRING nei file CSV o ai seguenti tipi di dati BigQuery:

  • STRING
  • DATETIME

Numerico

Una trasformazione numerica fa sì che una colonna venga utilizzata come numero ordinale o quantitativo. Questi numeri possono essere confrontati. In altre parole, due numeri distinti possono essere minori o maggiori l'uno dell'altro.

Gli spazi vuoti iniziali o finali vengono rimossi.

La tabella seguente mostra tutti i formati compatibili per una trasformazione numerica:

Formato Esempi Note
Stringa numerica "101", 101,5" Il carattere punto (".") è l'unico delimitatore decimale valido. "101,5" e "100.000" non sono stringhe numeriche valide.
Notazione scientifica "1.12345E+11", "1.12345e+11" Consulta la nota relativa alle stringhe numeriche per i delimitatori decimali.
Non è un numero "NAN", "nan", "+NAN" La distinzione tra maiuscole e minuscole non viene presa in considerazione. I caratteri più ("+") o meno ("-") premessi vengono ignorati. Interpretato come valore NULL.
Infinity "INF", "+inf" La distinzione tra maiuscole e minuscole non viene presa in considerazione. I caratteri più ("+") o meno ("-") premessi vengono ignorati. Interpretato come valore NULL.

Se un valore in una colonna con una trasformazione numerica non è conforme a uno di questi formati, l'intera riga viene esclusa dall'addestramento o il valore viene considerato null. Scegli tra questi risultati quando selezioni la trasformazione numerica.

Quando addestri un modello con una funzionalità con una trasformazione numerica, Vertex AI applica le seguenti trasformazioni dei dati alla funzionalità e utilizza quelle che forniscono un indicatore per l'addestramento:

  • Il valore convertito in float32.
  • Il valore z_score del valore.
  • Un indice del bucket del valore basato sui quantili. La dimensione del bucket è 100.
  • log(valore+1) quando il valore è maggiore o uguale a 0. In caso contrario, questa trasformazione non viene applicata e il valore viene considerato mancante.
  • Il valore z_score di log(valore+1) quando il valore è maggiore o uguale a 0. In caso contrario, questa trasformazione non viene applicata e il valore viene considerato mancante.
  • Un valore booleano che indica se il valore è null.
  • Le righe con input numerici non validi (ad esempio una stringa che non può essere analizzata in float32) non sono incluse per l'addestramento e la previsione.
  • I valori estremi/outlier non vengono trattati in modo speciale.

Le trasformazioni numeriche possono essere applicate ai dati STRING nei file CSV o ai seguenti tipi di dati BigQuery:

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

Timestamp

Una trasformazione Timestamp fa sì che un elemento venga utilizzato come un momento specifico, rappresentato come ora civile con fuso orario o come timestamp Unix. Per la colonna Tempo possono essere utilizzate solo le funzionalità con una trasformazione Timestamp.

Se non viene specificato un fuso orario con l'ora civile, per impostazione predefinita viene utilizzato UTC.

La tabella seguente mostra tutti i formati di stringhe di timestamp compatibili:

Formato Esempio Note
%E4Y-%m-%d "2017-01-30" Per una descrizione di questo formato, consulta la documentazione di 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.05+00:00" RFC 3339. Specifica la differenza di fuso orario (z) nel formato: ±HH:MM[:SS[.ffffff]]
Stringa del timestamp Unix in secondi "1541194447" Solo per date comprese tra il 01/01/1990 e il 01/01/2030.
Stringa del timestamp Unix in millisecondi "1541194447000"
Stringa del timestamp Unix in microsecondi "1541194447000000"
Stringa del timestamp Unix in nanosecondi "1541194447000000000"

Se un valore in una colonna con una trasformazione del timestamp non è conforme a uno di questi formati, l'intera riga viene esclusa dall'addestramento o il valore viene considerato null. Scegli tra questi risultati quando selezioni la trasformazione del timestamp.

Quando addestri un modello con una funzionalità con una trasformazione del timestamp, Vertex AI applica le seguenti trasformazioni dei dati alla funzionalità e utilizza quelle che forniscono un indicatore per l'addestramento:

  • Applica le trasformazioni per le colonne Numeriche.
  • Determina l'anno, il mese, il giorno e il giorno della settimana. Tratta ogni valore del timestamp come una colonna Categorica.
  • I valori numerici non validi (ad es. valori che non rientrano in un intervallo di timestamp tipico o valori estremi) non ricevono alcun trattamento speciale e non vengono rimossi.
  • Le righe con input di timestamp non validi (ad esempio una stringa di timestamp non valida) non sono incluse per l'addestramento e la previsione.

Le trasformazioni dei timestamp possono essere applicate ai dati STRING nei file CSV o ai seguenti tipi di dati BigQuery:

  • INT64
  • STRING
  • DATA
  • DATETIME
  • TIMESTAMP

Tipi di dati composti

A volte è necessario includere dati costituiti da più primitive di dati, come un array o uno struct. I tipi di dati composti sono disponibili solo utilizzando BigQuery come origine dati e non sono supportati per i modelli di previsione.

Struct

Una struct può essere utilizzata per rappresentare un gruppo di campi etichettati. Uno struct contiene un elenco di nomi di campi, ciascuno associato a un tipo di dati. L'elenco dei campi e i relativi tipi di dati devono essere gli stessi per tutti i valori della struttura in una colonna.

Ecco alcuni esempi di struct:

  • Pressione sanguigna: {"timestamp": 1535761416, "systolic": 110, "diastolic": 70}
  • Prodotto - {"name": "iPhone", price: 1000}

Utilizza il tipo di dati STRUCT di BigQuery per rappresentare gli struct.

I valori delle strutture vengono appiattiti automaticamente nei campi. Vertex AI applica la trasformazione dei dati ai campi appiattiti in base al loro tipo di trasformazione.

Array

Un array può essere utilizzato per rappresentare un elenco di valori. I valori contenuti devono accettare lo stesso tipo di trasformazione. Puoi includere strutture negli array. Tutte le strutture nell'array devono avere la stessa struttura.

Vertex AI elabora gli array come rappresentativi del peso relativo. In altre parole, gli elementi che appaiono più avanti nell'array hanno un peso maggiore rispetto a quelli che appaiono all'inizio.

Ecco alcuni esempi di array:

  • Categorie di prodotti:

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

  • Acquisti più recenti:

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

  • Record utente:

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

Utilizza il tipo di dati ARRAY di BigQuery per rappresentare gli array.

La trasformazione dei dati applicata da Vertex AI dipende dal tipo di trasformazione applicata all'array:

Tipo di array Trasformazione
Array numerico
  • Tutte le trasformazioni per i tipi Numerico applicate alla media degli ultimi N elementi, dove N = {1, 2, 4, 8, all}. Pertanto, gli elementi maggiormente enfatizzati sono quelli verso la fine dell'array, non all'inizio.
  • La media di array vuoti viene considerata pari a zero.
Array categorico
  • Per ogni elemento nell'array degli ultimi N elementi, dove N = {1, 2, 4, 8, all}, converti il nome della categoria in un indice di ricerca del dizionario e genera un embedding per ogni indice. Combina l'embedding di tutti gli elementi in un unico embedding utilizzando la media.
  • Array vuoti trattati come un embedding di zeri.
Array di testo
  • Concatena tutti i valori di testo nell'array in un unico valore di testo utilizzando uno spazio (" ") come delimitatore e poi tratta il risultato come un singolo valore di testo. Applica le trasformazioni per le colonne di testo.
  • Array vuoti trattati come un embedding di zeri.
Array di timestamp
  • Applica le trasformazioni per le colonne Numeriche alla media degli ultimi N elementi dell'array. N = {1, 2, 4, 8, all}. Ciò significa che gli elementi più enfatizzati sono quelli verso la fine dell'array.
Array di strutture
  • Le strutture nell'array vengono appiattite in singoli campi e messe insieme in array per campo. Viene applicata la trasformazione dell'array (come описано in questa tabella), in base al tipo di campo dell'array.

Come vengono gestiti i valori mancanti o null

Il modo in cui vengono gestiti i valori mancanti dipende scopo del modello e dalla trasformazione applicata per la funzionalità.

Classificazione e regressione

Per i modelli di classificazione e regressione, i valori null generano un embedding per le trasformazioni di testo e categoria; per le altre trasformazioni, il valore null viene lasciato come null.

Previsione

Per i modelli di previsione, i valori nulli vengono imputati dai dati circostanti. Non è possibile lasciare un valore nullo come null. Se preferisci controllare il modo in cui vengono imputati i valori null, puoi imputarli esplicitamente. I valori migliori da utilizzare potrebbero dipendere dai dati e dal problema aziendale.

Sono consentite righe mancanti (ad es. nessuna riga per una data specifica, con una granularità dei dati giornaliera), ma Vertex AI non imputta valori per i dati mancanti. Poiché le righe mancanti possono ridurre la qualità del modello, se possibile devi evitarle. Ad esempio, se manca una riga perché la quantità di vendite per quel giorno era pari a zero, aggiungi una riga per quel giorno e imposta esplicitamente i dati sulle vendite su 0.

Quali valori vengono trattati come valori null

Durante l'addestramento di un modello tabulare AutoML, Vertex AI considera i seguenti valori come null:

  • Un valore NULL BigQuery.

  • Valori numerici NaN o infiniti.

  • Una stringa vuota. Vertex AI non taglia gli spazi dalle stringhe. In altre parole, " " non è considerato un valore null.

  • Una stringa che può essere convertita in NaN o in un valore numerico infinito.

    • Per "NAN": ignora le maiuscole/minuscole, con un segno più o meno facoltativo all'inizio.
    • Per "INF": ignora le maiuscole/minuscole, con un segno più o meno facoltativo all'inizio.
  • Valori mancanti.

  • Valori in una colonna con una trasformazione numerica o di timestamp che non sono in un formato valido per la trasformazione della colonna. In questo caso, se hai specificato che la riga con il valore non valido deve essere utilizzata nell'addestramento, il valore non valido viene considerato nullo.

Formato dei dati per le previsioni

Il formato dei dati utilizzati per la previsione deve corrispondere a quello utilizzato per l'addestramento.

Se hai addestrato il modello con i dati di un file CSV in Cloud Storage, i dati erano di tipo STRING. Se utilizzi un oggetto JSON per inviare la richiesta di previsione, assicurati che anche tutti i valori delle coppie chiave-valore siano di tipo STRING.

Se hai addestrato il modello sui dati archiviati in BigQuery e utilizzi un oggetto JSON per inviare la richiesta di previsione, i tipi di dati dei valori nelle coppie chiave-valore JSON devono seguire la mappatura nella tabella seguente.

Tipo di dati BigQuery Tipo di dati JSON
INT64 Stringa
NUMERIC, BIGNUMERIC Numero
FLOAT64 Numero
BOOL Booleano
STRING Stringa
DATA Stringa
DATETIME Stringa
TEMPO Stringa
TIMESTAMP Stringa
Array Array
STRUCT Oggetto

Ad esempio, se i dati di addestramento contenevano length elementi di tipo FLOAT64, la seguente coppia chiave-valore JSON è corretta:

"length":3.6,

Al contrario, la seguente coppia chiave-valore JSON genera un errore:

"length":"3.6",

Passaggi successivi