Pre-elaborazione automatica delle funzionalità

BigQuery ML esegue la pre-elaborazione automatica durante l'addestramento utilizzando la istruzione CREATE MODEL. La preelaborazione automatica consiste nell'imputazione dei valori mancanti e nelle trasformazioni degli elementi.

Per informazioni sul supporto della preelaborazione delle funzionalità in BigQuery ML, consulta Panoramica della preelaborazione delle funzionalità.

Per informazioni sugli statement e sulle funzioni SQL supportati per ogni tipo di modello, consulta Percorso utente end-to-end per ogni modello.

Imputazione dei dati mancanti

In statistica, l'imputation viene utilizzata per sostituire i dati mancanti con valori sostituiti. Quando addestri un modello in BigQuery ML, i valori NULL vengono trattati come dati mancanti. Quando prevedi gli esiti in BigQuery ML, i valori mancanti possono verificarsi quando BigQuery ML incontra un valore NULL o un valore non visto in precedenza. BigQuery ML gestisce i dati mancanti in modo diverso, in base al tipo di dati nella colonna.

Tipo di colonna Metodo di imputazione
Numerico Sia nell'addestramento che nella previsione, i valori NULL nelle colonne numeriche vengono sostituiti con il valore medio della colonna specificata, come calcolato dalla colonna delle funzionalità nei dati di input originali.
Codifica one-hot/multi-hot Sia durante l'addestramento che durante la previsione, i valori NULL nelle colonne codificate vengono mappati a una categoria aggiuntiva che viene aggiunta ai dati. Ai dati non ancora noti viene assegnato un peso pari a 0 durante la previsione.
TIMESTAMP Le colonne TIMESTAMP utilizzano una combinazione di metodi di imputazione sia da colonne standardizzate sia da colonne con codifica one-hot. Per la colonna dell'ora Unix generata, BigQuery ML sostituisce i valori con l'ora Unix media nelle colonne originali. Per gli altri valori generati, BigQuery ML li assegna alla rispettiva NULL categoria per ogni caratteristica estratta.
STRUCT Sia nell'addestramento che nella previsione, ogni campo di STRUCT viene imputato in base al tipo.

Trasformazioni delle caratteristiche

Per impostazione predefinita, BigQuery ML trasforma le funzionalità di input come segue:

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 trasmetterle all'addestramento. Le eccezioni sono i modelli ad albero e foresta casuale con boost, per i quali non viene eseguita alcuna standardizzazione, e i modelli k-means, in cui l'opzione STANDARDIZE_FEATURES controlla se le funzionalità 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 da gli alberi di boosting e i modelli di foresta casuale. Questa trasformazione genera una caratteristica separata per ogni valore univoco della colonna. La trasformazione di codifica delle etichette viene applicata per addestrare i modelli di albero con boosting e foresta casuale al fine di convertire ogni valore univoco in un valore numerico.
ARRAY Codifica 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 del 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 della data e dell'ora Unix in secondi, BigQuery ML utilizza la standardizzazione. Per tutti gli altri componenti, utilizza la codifica one-hot.

Per ulteriori informazioni, consulta la tabella di trasformazione della funzionalità timestamp di seguito.
STRUCT Espansione di struct Quando BigQuery ML incontra una colonna STRUCT, espande i campi all'interno di STRUCT per creare una singola colonna. Richiede che tutti i campi di STRUCT siano denominati. I STRUCT nidificati non sono consentiti. 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 funzionalità

La tabella seguente 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 dell'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 delle funzionalità di categoria

Per le funzionalità con codifica one-hot, puoi specificare un metodo di codifica predefinito diverso utilizzando l'opzione del modello CATEGORY_ENCODING_METHOD. Per i modelli di regressione lineare generalizzata (GLM), puoi impostare CATEGORY_ENCODING_METHOD su uno dei seguenti valori:

Codifica one-hot

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

Ad esempio, supponiamo che la tabella di addestramento abbia una colonna di funzionalità denominata fruit con le categorie Apple, Banana e Cranberry, come la tabella 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 con boosting.

Codifica fittizia

La codifica dummy è 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 instead of N per rappresentare le categorie N per una funzionalità. Ad esempio, se imposti CATEGORY_ENCODING_METHOD su 'DUMMY_ENCODING' per la stessa colonna di funzionalità 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

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

L'insieme finale di pesi di ML.WEIGHTS include ancora la categoria eliminata, ma il suo peso è sempre 0.0. Per ML.ADVANCED_WEIGHTS, l'errore standard e il valore p per la variabile eliminata sono NaN.

Se warm_start viene utilizzato in un modello inizialmente addestrato con 'DUMMY_ENCODING', la stessa variabile segnaposto viene eliminata dalla prima esecuzione dell'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 delle etichette

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

Ad esempio, se hai un set di dati di libri come il 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 presenti nel vocabolario vengono codificati in 0.

La codifica delle etichette è supportata dai modelli ad albero con boosting.

Codifica target

La codifica del target sostituisce il valore della caratteristica categorica con la probabilità del target per i modelli di classificazione o con il valore previsto del target per i modelli di regressione.

Le funzionalità sottoposte a codifica per il target potrebbero avere un aspetto simile all'esempio riportato di seguito:

# 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 target è supportata dai modelli ad albero con boosting.