Pre-elaborazione automatica delle funzionalità
BigQuery ML esegue la pre-elaborazione automatica durante l'addestramento utilizzando l'istruzione
CREATE MODEL
.
Il pre-elaborazione automatica consiste nell'imputazione dei valori mancanti e nelle trasformazioni delle funzionalità.
Per informazioni sul supporto della pre-elaborazione delle funzionalità in BigQuery ML, consulta la Panoramica della pre-elaborazione delle funzionalità.
Imputazione dei dati mancanti
In statistica, l'imputazione viene utilizzata per sostituire i dati mancanti con valori
sostitutivi. Quando addestri un modello in BigQuery ML, i valori NULL
vengono
trattati come dati mancanti. Quando prevedi i risultati in BigQuery ML, i valori mancanti possono verificarsi quando BigQuery ML rileva un valore NULL
o un valore mai visto prima. BigQuery ML gestisce i dati mancanti in modo diverso, a seconda del 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, calcolato
dalla colonna della funzionalità 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 una categoria aggiuntiva che viene aggiunta
ai dati. Ai dati mai visti in precedenza viene assegnato un peso pari a 0 durante la previsione. |
TIMESTAMP |
Le colonne TIMESTAMP utilizzano una combinazione di metodi di imputazione
da colonne standardizzate e codificate one-hot. Per la colonna del tempo Unix generata, BigQuery ML sostituisce i valori con il tempo Unix medio 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 di STRUCT
viene imputato in base al tipo. |
Trasformazioni delle caratteristiche
Per impostazione predefinita, BigQuery ML trasforma le funzionalità di input nel seguente 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 a zero prima di passarle all'addestramento. Le eccezioni
sono i modelli ad albero potenziato e foresta casuale, per i quali non viene eseguita alcuna standardizzazione, e i modelli k-means, in cui l'opzione STANDARDIZE_FEATURES
controlla se le funzionalità numeriche vengono standardizzate. |
BOOL STRING BYTES DATE DATETIME TIME |
Codificato one-hot | Per tutte le colonne non numeriche e non di array diverse da
TIMESTAMP , BigQuery ML
esegue una trasformazione di codifica one-hot per tutti i modelli diversi da
quelli di alberi potenziati e foreste casuali. Questa trasformazione genera
una caratteristica separata per ogni valore unico della colonna. La trasformazione
dell'encoding delle etichette viene applicata per addestrare i modelli di alberi potenziati e di foresta casuale
per 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 caratteristica separata per ogni elemento univoco in ARRAY . |
TIMESTAMP |
Trasformazione del timestamp | Quando un modello di regressione lineare o logistica
rileva 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
dell'ora Unix in secondi, BigQuery ML utilizza
la standardizzazione. Per tutti gli altri componenti, utilizza la codifica one-hot.Per saperne di più, consulta la seguente tabella di trasformazione delle funzionalità di timestamp. |
STRUCT |
Espansione di Struct | Quando BigQuery ML rileva una colonna STRUCT ,
espande i campi all'interno di STRUCT per creare una singola
colonna. Richiede che tutti i campi di STRUCT siano denominati. 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 epoch 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à della 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 lineari generalizzati (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
rappresenta la
presenza (nota come variabile dummy). Questa mappatura crea N
nuove colonne di caratteristiche, dove N
è il numero di categorie uniche per la caratteristica nella tabella di addestramento.
Ad esempio, supponiamo che la tabella di addestramento abbia una colonna delle funzionalità denominata
fruit
con le categorie Apple
, Banana
e Cranberry
, come
la 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 dummy è
simile alla codifica one-hot, in cui una caratteristica categorica viene trasformata in un
insieme di variabili segnaposto. La codifica fittizia utilizza variabili segnaposto N-1
anziché variabili segnaposto N
per rappresentare le categorie N
di una funzionalità.
Ad esempio, se imposti CATEGORY_ENCODING_METHOD
su 'DUMMY_ENCODING'
per la stessa colonna di caratteristiche fruit
mostrata nell'esempio precedente di codifica one-hot, 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 di questo insieme.
Il set 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 su 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 dummy è 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 avevi un set di dati sui 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 è ordinato alfabeticamente. I valori e le categorie di NULL
che non sono presenti nel vocabolario vengono codificati in 0
.
La codifica delle etichette è supportata dai modelli ad albero potenziati.
Codifica target
La codifica target sostituisce il valore della funzionalità categorica con la probabilità del target per i modelli di classificazione o con il valore atteso del target per i modelli di regressione.
Le funzionalità codificate come target potrebbero avere un aspetto simile 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 target è supportata dai modelli ad albero potenziato.
Passaggi successivi
Per saperne di più sulle istruzioni e sulle funzioni SQL supportate per i modelli che supportano il pre-elaborazione automatica delle funzionalità, consulta i seguenti documenti:
- Percorsi utente end-to-end per i modelli ML
- Percorsi utente end-to-end per modelli di previsione di serie temporali