Tipi di dati e trasformazioni

Questa pagina descrive come funziona 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, devi utilizzare le virgole (",") per il 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 del tipo risulta mancante o nullo, Vertex AI lo gestisce in base all'obiettivo del modello e alla trasformazione applicata alla caratteristica. Per maggiori dettagli, consulta Come vengono gestiti i valori mancanti o nulli.

Previsione

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

Trasformazioni di Vertex AI

Valori categorici

L'applicazione di una trasformazione categorica fa sì che la caratteristica rappresenti i valori in una categoria. Vale a dire a livello nominale. I valori variano 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. In altre parole, un 1 categorico non è "maggiore" di uno 0 categorico.

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 variazioni ortografiche vengono trattate come categorie diverse (ad esempio, "Colore" e "Colore" non vengono combinate).

Quando addestri 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 così come è: nessuna modifica a maiuscole/minuscole, punteggiatura, ortografia, tempi e così via.
  • Converti il nome della categoria in un indice di ricerca nei dizionari e genera un incorporamento per ogni indice.
  • Le categorie che compaiono meno di 5 volte nel set di dati di addestramento vengono trattate come la categoria "sconosciuta". La categoria "sconosciuto" riceve il proprio indice di ricerca speciale e, di conseguenza, l'incorporamento.

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

  • INT64
  • NUMERICO, BIGNUMERICO
  • FLOAT64
  • BOOL
  • STRING
  • DATA
  • DATETIME
  • TEMPO
  • TIMESTAMP

Testo

Una trasformazione del 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 addestri un modello con una caratteristica con una trasformazione di testo, Vertex AI applica le seguenti trasformazioni di dati alla caratteristica e utilizza quelle che forniscono indicatori per l'addestramento:

  • Il testo così com'è, senza modificare maiuscole e minuscole, punteggiatura, ortografia, tempi e così via.
  • Tokenizza il testo in parole e genera 1 grammi e 2 grammi dalle parole. Converti ogni n-grammi in un indice di ricerca nel 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 ottengono un proprio indice di ricerca e l'incorporamento risultante.
  • Le stopword non ricevono trattamenti speciali 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 maggiori o minori l'uno dell'altro.

Gli spazi vuoti iniziali o finali vengono tagliati.

La seguente tabella 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" Consulta la nota per le stringhe numeriche relative ai delimitatori decimali.
Non è un numero "NAN", "nan", "+NAN" Le maiuscole/minuscole vengono ignorate. I caratteri più ("+") o meno ("-") anteposti vengono ignorati. Interpretato come valore NULL.
Infinito "INF", "+inf" Le maiuscole/minuscole vengono ignorate. 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 nullo. Puoi scegliere tra questi risultati quando selezioni la trasformazione numerica.

Quando addestri un modello con una caratteristica con una trasformazione numerica, Vertex AI applica le seguenti trasformazioni dei dati alla caratteristica e 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 di 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 float32) non vengono incluse per l'addestramento e la previsione.
  • I valori estremi/outlier non ricevono alcun trattamento speciale.

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

  • INT64
  • NUMERICO, BIGNUMERICO
  • FLOAT64
  • STRING
  • TIMESTAMP

Timestamp

Una trasformazione Timestamp fa sì che una caratteristica venga utilizzata come momento, rappresentata come ora civile con fuso orario o timestamp Unix. Per la colonna Ora 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 il fuso orario UTC.

La seguente tabella mostra tutti i formati di stringa con 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.05+00:00" RFC 3339. Specifica l'offset del fuso orario (z) nel formato: ±HH:MM[:SS[.ffffff]]
Stringa timestamp Unix in secondi "1541194447" Solo per periodi compresi tra il 01/gennaio/1990 e il 01/gennaio/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 di timestamp non è conforme a uno di questi formati, l'intera riga viene esclusa dall'addestramento oppure il valore viene considerato nullo. Puoi scegliere tra questi risultati quando selezioni la trasformazione del timestamp.

Quando addestri un modello con una caratteristica con una trasformazione di timestamp, Vertex AI applica le seguenti trasformazioni dei 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 colonna Categorica.
  • I valori numerici non validi (ad esempio, valori che non rientrano in un intervallo di timestamp tipico o sono valori estremi) non ricevono trattamento speciale e non vengono rimossi.
  • Le righe con input di timestamp non validi (ad esempio, una stringa timestamp non valida) non vengono 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, ad esempio 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

Uno struct può essere utilizzato per rappresentare un gruppo di campi etichettati. Uno struct ha un elenco di nomi di campi, ognuno dei quali è associato a un tipo di dati. L'elenco dei campi e i relativi tipi di dati devono essere uguali 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 gli struct, devi usare il tipo di dati STRUCT di BigQuery.

I valori struct vengono suddivisi automaticamente in campi. Vertex AI applica la trasformazione dei dati ai campi bidimensionali 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 in modo da rappresentare il peso relativo. In altre parole, agli elementi visualizzati più avanti nell'array viene assegnato un peso maggiore rispetto agli elementi visualizzati 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
Matrice numerica
  • Tutte le trasformazioni per i tipi Numerici vengono applicate alla media degli ultimi N elementi dove N = {1, 2, 4, 8, tutti}. Quindi gli elementi più enfatizzati sono quelli verso la fine dell'array, non l'inizio.
  • La media degli array vuoti viene trattata come 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 nei dizionari e genera un incorporamento per ogni indice. Combina l'incorporamento di tutti gli elementi in un singolo incorporamento utilizzando la media.
  • Array vuoti trattati 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 tratta il risultato come un singolo valore di testo. Applica le trasformazioni per le colonne Testo.
  • Array vuoti trattati 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ù enfatizzati sono quelli verso la fine dell'array.
Struct array
  • 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 l'array in questione.

Come vengono gestiti i valori mancanti o nulli

La gestione dei valori mancanti dipende dall'obiettivo del modello e dalla trasformazione applicata alla caratteristica.

Classificazione e regressione

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

Previsione

Per i modelli di previsione, i valori nulli vengono attribuiti dai dati circostanti. (non è possibile lasciare un valore nullo come null). Se preferisci controllare il modo in cui vengono attribuiti i valori null, puoi imputarli in modo esplicito. I valori migliori da utilizzare possono dipendere dai tuoi dati e dal problema aziendale.

Sono consentite righe mancanti (ad esempio, nessuna riga per una data specifica, con una granularità dei dati giornaliera), ma Vertex AI non attribuisce i valori per i dati mancanti. Poiché le righe mancanti possono diminuire la qualità del modello, dovresti evitare di perdere righe, ove possibile. Ad esempio, se manca una riga perché la quantità delle vendite per quel giorno era zero, aggiungi una riga per quel giorno e imposta esplicitamente i dati di vendita 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 in BigQuery.

  • NaN o valori numerici infiniti.

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

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

    • Per "NAN": ignora maiuscole/minuscole, anteponendo il segno più o meno facoltativo.
    • Per "INF": ignora maiuscole/minuscole, anteponendo il segno più o meno facoltativo.
  • 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 è considerato nullo.

Formato dei dati per le previsioni

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

Se hai addestrato il tuo modello con i dati di un file CSV in Cloud Storage, i dati erano del 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 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 String
NUMERICO, BIGNUMERICO Numero
FLOAT64 Numero
BOOL Booleano
STRING String
DATA String
DATETIME String
TEMPO String
TIMESTAMP String
Array Array
STRUCT Oggetto

Ad esempio, se i dati di addestramento contenevano length caratteristiche 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