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 particolare caratteristica dei dati.

Sono supportate le seguenti trasformazioni:

Se l'origine dati è un file CSV in Cloud Storage, è necessario utilizzare le virgole (",") come delimitatore. Vertex AI utilizza il formato CSV RFC 4180.

Se l'origine dati è BigQuery e stai eseguendo classificazione o regressione, puoi includere dati composti da più primitive di dati. Questi tipi di dati composti 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 caratteristica. Per maggiori dettagli, consulta Come vengono gestiti i valori mancanti o nulli.

Previsione

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

Trasformazioni di Vertex AI

Categorico

L'applicazione di una trasformazione categorica fa sì che la caratteristica rappresenti i valori in una categoria. Cioè, un livello nominale. I valori differiscono solo in base al nome, senza ordine. Puoi utilizzare i numeri per rappresentare i valori categorici, ma questi non hanno relazioni numeriche tra loro. Ciò significa che una categoria 1 non è "maggiore" di uno 0.

Ecco alcuni esempi di valori categorici:

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

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

Quando addestra un modello con una caratteristica con una trasformazione categorica, Vertex AI applica le seguenti trasformazioni di dati alla caratteristica e utilizza quelle che forniscono indicatori per l'addestramento:

  • La stringa categorica è: non cambia in maiuscole e minuscole, la punteggiatura, l'ortografia, il tempo 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 appaiono meno di 5 volte nel set di dati di addestramento vengono trattate come categoria "sconosciuto". La categoria "sconosciuto" riceve il proprio indice di ricerca speciale e l'incorporamento risultante.

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

  • INT64
  • NUMERICO, GRANDE NUMERO
  • FLOAT64
  • BOOL
  • STRING
  • DATA
  • DATETIME
  • TEMPO
  • TIMESTAMP

Testo

Una trasformazione di testo fa sì che la caratteristica venga utilizzata come testo in formato libero, solitamente 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 caratteristiche covariate.

Quando addestra un modello con una caratteristica con una trasformazione del testo, Vertex AI applica le seguenti trasformazioni di dati alla caratteristica e ne utilizza quelle che forniscono indicatori per l'addestramento:

  • Il testo così com'è: nessuna modifica a maiuscole e minuscole, alla punteggiatura, all'ortografia, al tempo e così via.
  • Tokenizza il testo in parole e genera 1 e 2 grammi di parole dalle parole. Converti ogni n-grammo in un indice di ricerca del dizionario e genera un incorporamento per ogni indice. Combina l'incorporamento di tutti gli elementi in un singolo elemento utilizzando la media.

    La tokenizzazione si basa sui limiti degli script Unicode.

  • I valori mancanti ricevono il proprio indice di ricerca e l'incorporamento risultante.
  • Le stopword non ricevono un 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. In altre parole, due numeri distinti possono essere inferiori o superiori.

Gli spazi vuoti iniziali o finali vengono tagliati.

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

Formato Esempi Note
Stringa numerica "101", 101,5" Il punto (".") è l'unico delimitatore decimale valido. "101,5" e "100.000" non sono stringhe numeriche valide.
Notazione scientifica "1.12345E+11", "1.12345e+11" Vedi la nota per le stringhe numeriche relative ai delimitatori decimali.
Non è un numero "NAN", "nan", "+NAN" Vengono ignorate le maiuscole e le minuscole. I caratteri più anteposti ("+") o meno ("-") vengono ignorati. Interpretato come valore NULL.
Infinito "INF", "+inf" Vengono ignorate le maiuscole e le minuscole. I caratteri più anteposti ("+") o meno ("-") 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 trattato come null. Puoi scegliere tra questi risultati quando selezioni la trasformazione numerica.

Quando addestra un modello con una caratteristica con una trasformazione numerica, Vertex AI applica le seguenti trasformazioni di dati alla caratteristica e ne utilizza quelle che forniscono indicatori per l'addestramento:

  • Il valore convertito in float32.
  • Il punteggio z 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 è considerato un valore mancante.
  • z_score del log(valore+1) quando il valore è maggiore o uguale a 0. In caso contrario, questa trasformazione non viene applicata e il valore è considerato un valore mancante.
  • Un valore booleano che indica se il valore è nullo.
  • Le righe con input numerici non validi (ad esempio, una stringa che non può essere analizzata in base a float32) non vengono incluse per l'addestramento e la previsione.
  • Ai valori estremi/outlier non viene dato alcun trattamento speciale.

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

  • INT64
  • NUMERICO, GRANDE NUMERO
  • FLOAT64
  • STRING
  • TIMESTAMP

Timestamp

Una trasformazione timestamp fa sì che una caratteristica venga utilizzata come momento specifico, rappresentato come ora civile con un fuso orario o come timestamp Unix. Per la colonna Ora è possibile utilizzare solo le caratteristiche con una trasformazione Timestamp.

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

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

Formato Esempio Note
%E4Y-%m-%d "30/01/2017" Per una descrizione di questo formato, consulta la documentazione di Abseil.
%E4Y/%m/%d "30/01/2017"
%Y/%m/%d %H:%M:%E*S "30/01/2017 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.05Z" RFC 3339
Stringa timestamp Unix in secondi "1541194447" Solo per periodi compresi tra 01/Gen/1990 e 01/Gen/2030.
Stringa timestamp Unix in millisecondi "1541194447000"
Stringa timestamp Unix in microsecondi "1541194447000000"
Stringa timestamp Unix in nanosecondi "1541194447000000000"

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

Quando addestra un modello con una caratteristica con una trasformazione timestamp, Vertex AI applica le seguenti trasformazioni di dati alla caratteristica e utilizza quelle che forniscono indicatori 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, i valori che non rientrano in un intervallo di timestamp tipico o sono valori estremi) non ricevono un trattamento speciale e non vengono rimossi.
  • Le righe con input di timestamp non validi (ad esempio, una stringa del timestamp non valida) non vengono incluse per l'addestramento e la previsione.

Le trasformazioni del 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 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

È possibile utilizzare uno struct per rappresentare un gruppo di campi etichettati. Uno struct ha un elenco di nomi di campi, ciascuno associato a un tipo di dati. L'elenco dei campi e dei relativi tipi di dati deve essere lo stesso per tutti i valori dello struct in una colonna.

Ecco alcuni esempi di struct:

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

Per rappresentare gli struct, utilizzerai il tipo di dati BigQuery STRUCT.

I valori struttura vengono suddivisi automaticamente in campi. Vertex AI applica la trasformazione dei dati ai campi suddivisi in base al tipo di trasformazione.

Array

È possibile utilizzare un array per rappresentare un elenco di valori. I valori contenuti devono accettare lo stesso tipo di trasformazione. Puoi includere gli struct negli array; tutti gli struct nell'array devono avere la stessa struttura.

Vertex AI elabora gli array come rappresentanti del peso relativo. In altre parole, gli elementi che appaiono più avanti nell'array hanno un peso maggiore rispetto a quelli che appaiono verso l'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}, ...]

Per rappresentare gli array, devi utilizzare il tipo di dati ARRAY di BigQuery.

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

Tipo di array Trasformazione
Array numerico
  • Tutte le trasformazioni per i tipi Numerici applicate alla media degli ultimi N elementi in cui N = {1, 2, 4, 8, tutti}. Quindi gli elementi più in evidenza sono quelli verso la fine dell'array, non l'inizio.
  • La media degli array vuoti viene trattata come zero.
Array categoriale
  • Per ogni elemento dell'array degli ultimi N elementi in cui N = {1, 2, 4, 8, all}, converti il nome della categoria in un indice di ricerca del dizionario e genera un incorporamento per ogni indice. Combina l'incorporamento di tutti gli elementi in un singolo elemento di incorporamento utilizzando la media.
  • Matrici vuote trattate come un incorporamento di zeri.
Array di testo
  • Concatena tutti i valori di testo nell'array in un singolo valore di testo utilizzando uno spazio (" ") come delimitatore, quindi considera il risultato come un singolo valore di testo. Applica le trasformazioni per le colonne Testo.
  • Matrici vuote trattate come un incorporamento di zeri.
Array timestamp
  • Applica le trasformazioni per le colonne Numeriche alla media degli ultimi N elementi dell'array. N = {1, 2, 4, 8, tutti}. Ciò significa che gli elementi più in evidenza sono quelli verso la fine dell'array.
Array di struct
  • Gli struct nell'array vengono suddivisi in singoli campi e assemblati in array per campo. La trasformazione dell'array (come descritta in questa tabella) viene applicata, in base al tipo di campo per quell'array.

Come vengono gestiti i valori mancanti o nulli

Il modo in cui vengono gestiti i valori mancanti dipende dall'obiettivo del modello e dalla trasformazione applicata per quella caratteristica.

Classificazione e regressione

Per i modelli di classificazione e regressione, i valori null generano un incorporamento per le trasformazioni categoriche e di testo; per altre trasformazioni, il valore null viene lasciato nullo.

Previsione

Per i modelli di previsione, i valori null vengono attribuiti ai dati circostanti. Non è possibile lasciare nullo un valore. Se preferisci controllare la modalità di assegnazione dei valori null, puoi imputarli esplicitamente. I valori migliori da utilizzare possono dipendere dai dati e dal problema aziendale.

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

Quali valori vengono trattati come valori nulli

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

  • Un valore NULL BigQuery.

  • Valori numerici infiniti o NAN.

  • Una stringa vuota. Vertex AI non taglia gli spazi dalle stringhe. Ciò significa che " " non è considerato un valore null.

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

    • Per "NAN": ignora maiuscole e minuscole, con un segno più o meno facoltativo anteposto.
    • Per "INF": ignora maiuscole e minuscole, con un segno più o meno facoltativo anteposto.
  • Valori mancanti.

  • Valori in una colonna con 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 per l'addestramento, il valore non valido viene considerato nullo.

Formato dei dati per le previsioni

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

Se hai addestrato il tuo 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 tutti i valori nelle coppie chiave-valore siano anche di tipo STRING.

Se hai addestrato il tuo 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 la mappatura nella tabella seguente.

Tipo di dati BigQuery Tipo di dati JSON
INT64 Stringa
NUMERICO, GRANDE NUMERO 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 funzionalità length 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