Tipi di dati e trasformazioni

Questa pagina descrive come funziona Vertex AI con i diversi tipi dei 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, devi utilizzare le virgole (",") come delimitatore. Vertex AI utilizza 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 del tipo manca o è nullo, Vertex AI lo gestisce in base ai tuoi l'obiettivo del modello e la trasformazione applicata a quella caratteristica. Per maggiori dettagli, consulta Come vengono gestiti i valori mancanti o null.

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 Vertex AI

Categorico

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, il valore 1 categorico non "maggiore" di uno 0 categorico.

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 nel 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 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
  • 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, in genere costituiti 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 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-grammi in un indice di ricerca nel dizionario e genera un incorporamento per ogni indice. Combina l'embedding di tutti gli elementi in un unico embedding utilizzando la media.

    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 nessun trattamento speciale e non vengono rimosse.

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

  • STRING
  • DATETIME

Numerico

Una trasformazione numerica fa sì che una colonna venga utilizzata come ordinale o numero quantitativo. Questi numeri possono essere confrontati. ovvero due distinti i numeri possono essere maggiori o minori di uno rispetto all'altro.

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 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 per le stringhe numeriche relative ai delimitatori decimali.
Non è un numero "NAN", "nan", "+NAN" Le maiuscole/minuscole vengono ignorate. Vengono anteposti i caratteri più ("+") o meno ("-") ignorato. 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. Puoi scegliere 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 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 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 è considerato un valore mancante.
  • Un valore booleano che indica se il valore è nullo.
  • Righe con input numerici non validi (ad esempio, una stringa che può non vengano analizzati in float32) non sono inclusi per l'addestramento e la previsione.
  • I valori estremi/outlier non vengono trattati in modo speciale.

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

  • INT64
  • NUMERICO, BIGNUMERICO
  • 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. Solo le caratteristiche con una trasformazione Timestamp possono essere usate per Colonna Data/Ora.

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 "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 "30/01/2017 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 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 del 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 del timestamp, Vertex AI applica le seguenti trasformazioni dei dati e utilizza quelli 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.
  • Valori numerici non validi (ad esempio, valori che non rientrano in un intervallo di timestamp tipico o sono valori estremi) non ricevono informazioni e non verranno 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 timestamp possono essere applicate ai dati STRING nei file CSV o al 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 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}

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

I valori delle strutture vengono appiattiti automaticamente nei campi. Vertex AI applica la trasformazione dei dati ai campi bidimensionali in base alla loro 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 Numerici applicate alla media degli ultimi N elementi dove N = {1, 2, 4, 8, all}. Quindi gli articoli enfatizzati sono quelli verso la fine dell'array, non partendo da zero.
  • La media di array vuoti viene considerata pari a zero.
Array categorico
  • Per ogni elemento nella matrice degli ultimi N elementi in cui N = {1, 2, 4, 8, all}, converti il nome della categoria in un dizionario indice di ricerca e generare un incorporamento per ogni indice. Combina l'embedding di tutti gli elementi in un unico embedding utilizzando la media.
  • Array vuoti trattati come un incorporamento di zeri.
Array di testo
  • Concatena tutti i valori di testo nell'array in un unico valore di testo utilizzando uno spazio (" ") come delimitatore, quindi tratta il risultato come valore di testo singolo. Applica le trasformazioni per le colonne di testo.
  • Array vuoti trattati come un incorporamento di zeri.
Array timestamp
  • Applica le trasformazioni per le colonne Numeriche alla 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. La trasformazione dell'array (come descritti in questa tabella) viene applicata, in base al tipo di campo per quell'array.

Come vengono gestiti i valori mancanti o nulli

La modalità di gestione dei valori mancanti dipende l'obiettivo del modello e la trasformazione applicata a quella caratteristica.

Classificazione e regressione

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

Previsione

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

Righe mancanti (ad esempio, nessuna riga per una data specifica, con un dato granularità giornaliera) sono consentite, ma Vertex AI attribuire i valori ai 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, tratta i seguenti valori come valori nulli:

  • 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 maiuscole/minuscole, anteponendo il segno più o meno facoltativo.
    • 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 richiesta di previsione, assicurati che tutti i valori nelle coppie chiave-valore siano anch'essi 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