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 particolare 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 l'origine dati è BigQuery e stai eseguendo la classificazione o regressione, puoi includere dati composti da più primitive di dati. Questi tipi di dati composti devono essere pre-elaborati prima che le trasformazioni possano essere applicati. 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, vedi Modalità di gestione dei 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

Categorico

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 usare i numeri per rappresentare i valori categorici, ma 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 categorici sono sensibili alle maiuscole; varianti ortografiche vengono trattate come categorie diverse (ad es. "Colore" e "Colore" non vengono combinate).

Quando addestri un modello con una caratteristica con una trasformazione categorica, Vertex AI applica le seguenti trasformazioni dei dati e utilizza quelli che forniscono indicatori per l'addestramento:

  • La stringa categorica così com'è: nessuna modifica a maiuscole/minuscole, punteggiatura, ortografia, tempo e così via.
  • Converti il nome della categoria in un indice di ricerca nel dizionario e genera un incorporamento per ogni indice.
  • Categorie che compaiono meno di 5 volte nel set di dati di addestramento vengono trattate come "sconosciute" categoria. Lo "sconosciuto" categoria ottiene il proprio indice di ricerca speciale e l'incorporamento risultante.

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

  • INT64
  • NUMERICO, BIGNUMERICO
  • FLOAT64
  • BOOL
  • STRINGA
  • 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 caratteristica con una trasformazione del testo, Vertex AI applica le seguenti trasformazioni dei dati e utilizza quelli 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 da parole. Converti ogni n-grammi in un indice di ricerca nel dizionario e genera un incorporamento per ogni indice. Combinare l'incorporamento di tutti gli elementi in un singolo incorporamento 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:

  • STRINGA
  • 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 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. Vengono anteposti i caratteri più ("+") o meno ("-") ignorato. Interpretato come valore NULL.
Infinito "INF", "+inf" Le maiuscole/minuscole vengono ignorate. Vengono anteposti i caratteri più ("+") o meno ("-") ignorato. 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 e utilizza quelli 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.
  • Righe con input numerici non validi (ad esempio, una stringa che può non vengano analizzati in float32) non vengono inclusi per l'addestramento 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 alla seguenti tipi di dati BigQuery:

  • INT64
  • NUMERICO, BIGNUMERICO
  • FLOAT64
  • STRINGA
  • TIMESTAMP

Timestamp

Una trasformazione Timestamp fa sì che una caratteristica venga utilizzata come momento specifico, rappresentato come ora civile con fuso orario o timestamp Unix. Solo le caratteristiche con una trasformazione Timestamp possono essere usate 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 "30-01-2017" Vedi la documentazione di Abseil per una descrizione di questo formato.
%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 la differenza di fuso orario (z) nel campo 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 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 da il timestamp come 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.
  • Righe con input di timestamp non validi (ad esempio, un valore non valido timestamp) 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
  • STRINGA
  • 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

Uno struct può essere utilizzato 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 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 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 alla loro e il 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. Nella 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 tipo di trasformazione applicato all'array:

Tipo di array Trasformazione
Matrice numerica
  • 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 degli array vuoti viene trattata come 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 il incorporamento di tutti gli elementi in un unico 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 unico valore di testo utilizzando uno spazio (" ") come delimitatore, quindi tratta il risultato come valore di testo singolo. Applicare le trasformazioni per Testo colonne.
  • 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, tutti}. Ciò significa che gli elementi più enfatizzati sono quelli verso alla fine dell'array.
Struct array
  • Gli struct nell'array sono suddivisi in singoli campi, e assemblati 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 nulli generano un incorporamento. per le trasformazioni categoriche e testuali; per le altre trasformazioni, il valore è lasciato nullo.

Previsione

Per i modelli di previsione, I valori null vengono attribuiti dai dati circostanti. (non esiste un'opzione lascia un valore nullo.) Se preferisci controllare il modo in cui null , puoi imputarli in modo esplicito. I valori migliori da utilizzare potrebbe dipendere dai tuoi dati e dal tuo 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 se possibile, dovresti evitare di perdere righe. 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 impostare esplicitamente i dati di vendita su 0.

Quali valori vengono trattati come valori nulli

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

  • Un modello BigQuery Valore NULL.

  • NaN o valori numerici infiniti.

  • Una stringa vuota. Vertex AI non taglia gli spazi dalle stringhe. Vale a dire: " ". non viene considerato un valore nullo.

  • Una stringa che può essere convertiti in NaN o in 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.

  • I 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 specificato che la riga con il valore non valido deve essere usata 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 richiesta di previsione, controlla che tutti i valori nelle coppie chiave-valore siano anch'essi di tipo STRING.

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

Tipo di dati BigQuery Tipo di dati JSON
INT64 Stringa
NUMERICO, BIGNUMERICO Numero
FLOAT64 Numero
BOOL Booleano
STRINGA Stringa
DATA Stringa
DATETIME Stringa
TEMPO Stringa
TIMESTAMP Stringa
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