Pre-elaborazione automatica delle caratteristiche

BigQuery ML esegue la pre-elaborazione automatica durante l'addestramento utilizzando l'istruzione CREATE MODEL. La pre-elaborazione automatica consiste nell'attribuzione dei valori mancanti e nelle trasformazioni delle caratteristiche.

Per informazioni sul supporto della pre-elaborazione delle funzionalità in BigQuery ML, consulta Panoramica della pre-elaborazione delle funzionalità.

Per informazioni sulle istruzioni e sulle funzioni SQL supportate per ogni tipo di modello, consulta Percorso dell'utente end-to-end per ogni modello.

Imputazione dati mancante

Nelle statistiche, l'attribuzione viene utilizzata per sostituire i dati mancanti con valori sostituiti. Quando addestra un modello in BigQuery ML, i valori NULL vengono trattati come dati mancanti. Quando prevedi i risultati in BigQuery ML, possono verificarsi valori mancanti quando BigQuery ML rileva un valore NULL o non visto in precedenza. BigQuery ML gestisce i dati mancanti in modo diverso, a seconda del tipo di dati nella colonna.

Tipo di colonna Metodo di attribuzione
Numerico Sia nell'addestramento che nella previsione, i valori NULL nelle colonne numeriche vengono sostituiti con il valore medio della colonna specificata, calcolato dalla colonna delle caratteristiche nei dati di input originali.
Codifica one-hot/multi-hot Sia nell'addestramento che nella previsione, i valori NULL nelle colonne codificate vengono mappati a un'ulteriore categoria aggiunta ai dati. Ai dati non visti in precedenza viene assegnata una ponderazione pari a 0 durante la previsione.
TIMESTAMP Le colonne TIMESTAMP utilizzano una combinazione di metodi di assegnazione da colonne standardizzate e con codifica one-hot. Per la colonna temporale Unix generata, BigQuery ML sostituisce i valori con il tempo medio Unix nelle colonne originali. Per gli altri valori generati, BigQuery ML li assegna alla rispettiva categoria NULL per ogni caratteristica estratta.
STRUCT Sia nell'addestramento che nella previsione, ogni campo dell'STRUCT viene attribuito in base al suo tipo.

Trasformazioni delle caratteristiche

Per impostazione predefinita, BigQuery ML trasforma le caratteristiche di input in questo modo:

Tipo di dati di input Metodo di trasformazione Dettagli
INT64
NUMERIC
BIGNUMERIC
FLOAT64
Standardizzazione Per la maggior parte dei modelli, BigQuery ML standardizza e centra le colonne numeriche su zero prima di passarle all'addestramento. Le eccezioni sono i modelli potenziati ad albero e a foresta casuale, per i quali non avviene alcuna standardizzazione, e i modelli K-means, in cui l'opzione STANDARDIZE_FEATURES controlla se le caratteristiche numeriche sono standardizzate.
BOOL
STRING
BYTES
DATE
DATETIME
TIME
Codifica one-hot Per tutte le colonne non numeriche e non array diverse da TIMESTAMP, BigQuery ML esegue una trasformazione di codifica one-hot per tutti i modelli diversi dai modelli ad albero boosted e a foresta casuale. Questa trasformazione genera una caratteristica separata per ogni valore univoco nella colonna. La trasformazione di codifica delle etichette viene applicata per addestrare modelli ad albero potenziato e a foreste casuali per convertire ogni valore univoco in un valore numerico.
ARRAY Codificato multi-hot Per tutte le colonne ARRAY non numeriche, BigQuery ML esegue una trasformazione di codifica multi-hot. Questa trasformazione genera una funzionalità separata per ogni elemento univoco in ARRAY.
TIMESTAMP Trasformazione timestamp Quando un modello di regressione lineare o logistica incontra una colonna TIMESTAMP, estrae un insieme di componenti da TIMESTAMP ed esegue una combinazione di standardizzazione e codifica one-hot sui componenti estratti. Per il componente Tempo in secondi Unix, BigQuery ML utilizza la standardizzazione. Per tutti gli altri componenti, utilizza la codifica one-hot.

Per saperne di più, consulta la tabella di trasformazione delle caratteristiche di timestamp di seguito.
STRUCT Espansione dello struct Quando BigQuery ML rileva una colonna STRUCT, espande i campi all'interno di STRUCT per creare una singola colonna. È necessario che tutti i campi di STRUCT siano denominati. Non sono consentiti STRUCT nidificati. I nomi delle colonne dopo l'espansione sono nel formato {struct_name}_{field_name}.
ARRAY di STRUCT Nessuna trasformazione
ARRAY di NUMERIC Nessuna trasformazione

TIMESTAMP trasformazione delle caratteristiche

La seguente tabella mostra i componenti estratti dalle colonne TIMESTAMP e il metodo di trasformazione corrispondente.

Componente TIMESTAMP processed_input risultato Metodo di trasformazione
Tempo Unix in secondi [COLUMN_NAME] Standardizzazione
Giorno del mese _TS_DOM_[COLUMN_NAME] Codifica one-hot
Giorno della settimana _TS_DOW_[COLUMN_NAME] Codifica one-hot
Mese dell'anno _TS_MOY_[COLUMN_NAME] Codifica one-hot
Ora del giorno _TS_HOD_[COLUMN_NAME] Codifica one-hot
Minuto d'ora _TS_MOH_[COLUMN_NAME] Codifica one-hot
Settimana dell'anno (le settimane iniziano di domenica) _TS_WOY_[COLUMN_NAME] Codifica one-hot
Anno _TS_YEAR_[COLUMN_NAME] Codifica one-hot

Codifica degli elementi di categoria

Per le caratteristiche con codifica one-hot, puoi specificare un diverso metodo di codifica predefinito utilizzando l'opzione di modello CATEGORY_ENCODING_METHOD. Per i modelli lineari generici (GLM), puoi impostare CATEGORY_ENCODING_METHOD su uno dei seguenti valori:

Codifica one-hot

La codifica one-hot mappa ogni categoria di cui una caratteristica dispone alla sua caratteristica binaria, dove 0 rappresenta l'assenza della caratteristica e 1 rappresenta la presenza (nota come variabile fittizia). Questa mappatura crea N nuove colonne di funzionalità, dove N è il numero di categorie univoche per la funzionalità nella tabella di addestramento.

Ad esempio, supponi che la tua tabella di addestramento abbia una colonna delle funzionalità denominata fruit con le categorie Apple, Banana e Cranberry, come seguente:

Riga frutta
1 Apple
2 Banana
3 Mirtillo rosso

In questo caso, l'opzione CATEGORY_ENCODING_METHOD='ONE_HOT_ENCODING' trasforma la tabella nella seguente rappresentazione interna:

Riga fruit_Apple fruit_Banana fruit_Cranberry
1 1 0 0
2 0 1 0
3 0 0 1

La codifica one-hot è supportata dai modelli di regressione lineare e logistica e albero potenziato.

Codifica fittizia

La codifica fittizia è simile alla codifica one-hot, in cui una caratteristica categorica viene trasformata in un insieme di variabili segnaposto. La codifica fittizia utilizza le variabili segnaposto N-1 anziché N per rappresentare le categorie N per una funzionalità. Ad esempio, se imposti CATEGORY_ENCODING_METHOD su 'DUMMY_ENCODING' per la stessa colonna di caratteristiche fruit mostrata nell'esempio di codifica one-hot precedente, la tabella viene trasformata nella seguente rappresentazione interna:

Riga fruit_Apple fruit_Banana
1 1 0
2 0 1
3 0 0

Viene eliminata la categoria con il maggior numero di occorrenze nel set di dati di addestramento. Quando più categorie hanno il maggior numero di occorrenze, viene eliminata una categoria casuale all'interno dell'insieme.

L'insieme finale di ponderazioni di ML.WEIGHTS include ancora la categoria eliminata, ma la sua ponderazione è sempre 0.0. Per ML.ADVANCED_WEIGHTS, l'errore standard e il valore p della variabile eliminata sono NaN.

Se warm_start viene utilizzata su un modello addestrato inizialmente con 'DUMMY_ENCODING', la stessa variabile segnaposto viene eliminata dalla prima esecuzione di addestramento. I modelli non possono modificare i metodi di codifica tra le esecuzioni di addestramento.

La codifica fittizia è supportata dai modelli di regressione lineare e logistica.

Codifica etichetta

La codifica dell'etichetta trasforma il valore di una caratteristica categorica in un valore INT64 in [0, <number of categories>].

Ad esempio, se avessi un set di dati dei libri simile al seguente:

Titolo Genere
Libro 1 Fantasy
Libro 2 Cucina
Libro 3 Cronologia
Libro 4 Cucina

I valori codificati dell'etichetta potrebbero essere simili ai seguenti:

Titolo Genere (testo) Genere (numerico)
Libro 1 Fantasy 1
Libro 2 Cucina 2
Libro 3 Cronologia 3
Libro 4 Cucina 2

Il vocabolario di codifica è in ordine alfabetico. I valori e le categorie NULL che non sono nel vocabolario sono codificati in 0.

La codifica delle etichette è supportata dai modelli ad albero potenziato.

Codifica di destinazione

La codifica target sostituisce il valore delle caratteristiche categoriche con la probabilità del target per i modelli di classificazione o con il valore previsto del target per i modelli di regressione.

Le funzionalità codificate come target potrebbero essere simili al seguente esempio:

# Classification model
+------------------------+----------------------+
| original value         | target encoded value |
+------------------------+----------------------+
| (category_1, target_1) |     0.5              |
| (category_1, target_2) |     0.5              |
| (category_2, target_1) |     0.0              |
+------------------------+----------------------+

# Regression model
+------------------------+----------------------+
| original value         | target encoded value |
+------------------------+----------------------+
| (category_1, 2)        |     2.5              |
| (category_1, 3)        |     2.5              |
| (category_2, 1)        |     1.5              |
| (category_2, 2)        |     1.5              |
+------------------------+----------------------+

La codifica della destinazione è supportata dai modelli ad albero potenziato.