Questa pagina descrive come Vertex AI funziona 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 particolare caratteristica dei dati.
Sono supportate le seguenti trasformazioni:
Se l'origine dati è un file CSV in Cloud Storage, le virgole (",") devono essere utilizzate come delimitatore. Vertex AI utilizza il formato CSV RFC 4180.
Se l'origine dati è BigQuery e stai eseguendo una classificazione o una regressione, puoi includere dati composti da più primitive di dati. Questi tipi di dati compositi devono essere pre-elaborati prima di poter applicare le trasformazioni. Sono supportati i seguenti tipi di dati composti:
Se un valore di tipo è mancante o nullo, Vertex AI lo gestisce in base all'obiettivo del modello e alla trasformazione applicata per quella funzionalità. Per maggiori dettagli, vedi Come vengono gestiti i valori mancanti o nulli.
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
Categorico
L'applicazione di una trasformazione categorica fa sì che la funzionalità rappresenti i valori in una categoria. ovvero un livello nominale. I valori differiscono solo in base al nome senza ordine. Puoi utilizzare i numeri per rappresentare i valori categorici, ma i valori non hanno alcuna relazione numerica tra loro. ovvero, 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.
Per i valori categorici viene fatta distinzione tra maiuscole e minuscole; le varianti ortografiche vengono trattate come categorie diverse (ad esempio, "Colore" e "Colour" non vengono combinate).
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 segnale per l'addestramento:
- La stringa categorica così com'è, senza modifiche a maiuscole, punteggiatura, ortografia, tempo verbale e così via.
- Converti il nome della categoria in un indice di ricerca del dizionario e genera un incorporamento per ogni indice.
- Le categorie che compaiono meno di 5 volte nel set di dati di addestramento vengono trattate come categoria "sconosciuta". La categoria "Sconosciuti" ha un proprio indice di ricerca speciale e un incorporamento 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 formato libero, in genere composto 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à covariate.
Quando addestri un modello con una funzionalità con una trasformazione del testo, Vertex AI applica le seguenti trasformazioni dei dati alla funzionalità e utilizza quelle che forniscono un segnale per l'addestramento:
- Il testo così com'è, senza modifiche a maiuscole, punteggiatura, ortografia, 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 incorporamento per ogni indice. Combina l'incorporamento di tutti gli elementi in un unico incorporamento utilizzando la media.
La tokenizzazione si basa sui limiti degli script Unicode.
- I valori mancanti hanno un proprio indice di ricerca e un proprio embedding risultante.
- Le stop word non ricevono alcun trattamento speciale e non vengono rimosse.
Le trasformazioni del 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. ovvero 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 in merito ai delimitatori decimali. |
Non è un numero | "NAN", "nan", "+NAN" | La distinzione tra maiuscole e minuscole non viene presa in considerazione. I caratteri più ("+") o meno ("-") anteposti 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 ("-") anteposti 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 oppure 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 segnale per l'addestramento:
- Il valore convertito in float32.
- Lo z-score del valore.
- Un indice del bucket del valore basato sui quantili. La dimensione del bucket è 100.
- log(value+1) quando il valore è maggiore o uguale a 0. In caso contrario, questa trasformazione non viene applicata e il valore viene considerato un valore mancante.
- z-score di log(value+1) quando il valore è maggiore o uguale a 0. In caso contrario, questa trasformazione non viene applicata e il valore viene considerato un valore 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 nell'addestramento e nella previsione.
- Ai valori estremi/anomali non viene riservato alcun trattamento 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 una funzionalità venga utilizzata come punto nel tempo, rappresentato come ora civile con fuso orario o come timestamp Unix. Solo le caratteristiche con una trasformazione timestamp possono essere utilizzate per la colonna Ora.
Se non viene specificato un fuso orario con l'ora civile, viene utilizzato il fuso orario UTC per impostazione predefinita.
La seguente tabella mostra tutti i formati di stringa 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-novembre-2018" | |
%Y-%m-%dT%H:%M:%E*S%Ez |
"2019-05-17T23:56:09.05+00:00" | RFC 3339. Specifica l'offset del fuso orario (z ) nel
formato: ±HH:MM[:SS[.ffffff]]
|
Stringa del timestamp Unix in secondi | "1541194447" | Solo per periodi compresi tra il 1° gennaio 1990 e il 1° gennaio 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 oppure il valore viene trattato come 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 segnale 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 esempio, valori che non rientrano in un intervallo di timestamp tipico o valori estremi) non ricevono un 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 devi includere dati composti 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 ha un elenco di nomi di campi, ognuno associato a un tipo di dati. L'elenco dei campi e i relativi tipi di dati devono essere gli stessi per tutti i valori struct in una colonna.
Ecco alcuni esempi di struct:
- Pressione sanguigna -
{"timestamp": 1535761416, "systolic": 110, "diastolic": 70}
- Prodotto -
{"name": "iPhone", price: 1000}
Per rappresentare le struct, utilizzi il tipo di dati STRUCT di BigQuery.
I valori di Struct vengono automaticamente convertiti in campi. Vertex AI applica la trasformazione dei dati ai campi appiattiti in base al 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 struct negli array; tutti gli struct nell'array devono avere la stessa struttura.
Vertex AI elabora gli array come rappresentazione 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 prodotto:
["Clothing", "Women", "Dress", ...]
Acquisti più recenti:
["iPhone", "Laptop", "Suitcase", ...]
Record utente:
[{"name": "Joelle", ID: 4093}, {"name": "Chloe", ID: 2047}, {"name": "Neko", ID: 3432}, ...]
Utilizzi il tipo di dati ARRAY di BigQuery per rappresentare gli array.
La trasformazione dei dati applicata da Vertex AI dipende dal tipo di trasformazione applicato all'array:
Tipo di array | Trasformazione |
---|---|
Array numerico |
|
Array categorico |
|
Array di testo |
|
Array di timestamp |
|
Struct array |
|
Come vengono gestiti i valori mancanti o null
Il modo in cui vengono gestiti i valori mancanti dipende dall'obiettivo del modello e dalla trasformazione applicata a quella funzionalità.
Classificazione e regressione
Per i modelli di classificazione e regressione, i valori null generano un embedding per le trasformazioni categoriche e di testo; per le altre trasformazioni, il valore null rimane null.
Previsione
Per i modelli di previsione, i valori nulli vengono imputati dai dati circostanti. (Non è possibile lasciare un valore nullo come nullo.) Se preferisci controllare il modo in cui vengono imputati i valori nulli, puoi imputarli in modo esplicito. I valori migliori da utilizzare potrebbero dipendere dai dati e dal problema aziendale.
Le righe mancanti (ad esempio, nessuna riga per una data specifica, con una granularità dei dati giornaliera) sono consentite, ma Vertex AI non imputa valori per i dati mancanti. Poiché le righe mancanti possono ridurre la qualità del modello, dovresti evitarle, se possibile. 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 di vendita su 0.
Quali valori vengono trattati come valori null
Durante l'addestramento di un modello tabulare AutoML, Vertex AI considera i seguenti valori come valori nulli:
Un valore NULL di BigQuery.
Valori numerici NaN o infiniti.
Una stringa vuota. Vertex AI non taglia gli spazi dalle stringhe. ovvero " " non è considerato un valore nullo.
Una stringa che può essere convertita in NaN o in un valore numerico infinito.
- Per "NAN": ignora maiuscole/minuscole, con un segno più o meno facoltativo anteposto.
- Per "INF": ignora maiuscole/minuscole, con un segno più o meno facoltativo anteposto.
Valori mancanti.
Valori in una colonna con una trasformazione numerica o 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 su dati in un file CSV in Cloud Storage, i tuoi dati erano di tipo STRING. Se utilizzi un oggetto JSON per inviare la richiesta di previsione, assicurati che anche tutti i valori nelle coppie chiave-valore siano di tipo STRING.
Se hai addestrato il modello su 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 il mapping 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
funzionalità di tipo
FLOAT64, la seguente coppia chiave-valore JSON è corretta:
"length":3.6,
Al contrario, la seguente coppia chiave-valore JSON genererà un errore:
"length":"3.6",
Passaggi successivi
- Scopri di più sui tipi di dati di BigQuery.
- Scopri come preparare i dati di addestramento tabulari
- Scopri le best practice per la creazione di dati di addestramento tabulari.