Pre-elaborazione automatica delle funzionalità
BigQuery ML esegue la pre-elaborazione automatica durante l'addestramento utilizzando
l'istruzione CREATE MODEL
.
La pre-elaborazione automatica consiste nell'attribuzione del valore mancante e nelle trasformazioni delle caratteristiche.
Per informazioni sul supporto della pre-elaborazione delle caratteristiche in BigQuery ML, consulta Panoramica della pre-elaborazione delle caratteristiche.
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 dei dati mancante
In statistica, l'imputazione viene utilizzata per sostituire i dati mancanti con valori sostituiti. Quando addestri un modello in BigQuery ML, i valori NULL
vengono considerati come dati mancanti. Quando prevedi i risultati in BigQuery ML, è possibile che si verifichino valori mancanti quando BigQuery ML rileva un valore NULL
o un valore non rilevato in precedenza. 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 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 una categoria aggiuntiva che viene aggiunta
ai dati. Ai dati non 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 con codifica one-hot. Per la colonna temporale 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 dell'elemento STRUCT
viene attribuito in base al tipo. |
Trasformazioni delle caratteristiche
Per impostazione predefinita, BigQuery ML trasforma le caratteristiche di input nel modo seguente:
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 ad albero potenziato e le foreste casuali, per i quali non è prevista 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, eccetto i modelli ad albero potenziato e i modelli di foresta casuali. Questa trasformazione genera una caratteristica separata per ogni valore univoco della colonna. La trasformazione della codifica delle etichette viene applicata per addestrare modelli ad albero potenziato e foresta casuale per convertire ogni valore unico 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 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 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 delle caratteristiche timestamp di seguito. |
STRUCT |
Espansione struttura | 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. I valori 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 seguente tabella mostra i componenti estratti dalle colonne TIMESTAMP
e il metodo di trasformazione corrispondente.
TIMESTAMP componente |
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 | _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 caratteristiche della 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 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 fittizia). Questa mappatura crea N
nuove colonne
delle caratteristiche, dove N
è il numero di categorie univoche per la caratteristica
nella tabella di addestramento.
Ad esempio, supponiamo che la tua tabella di addestramento abbia una colonna di caratteristiche 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 da 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é le variabili segnaposto N
per rappresentare le categorie N
per una caratteristica.
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 |
La categoria con il maggior numero di occorrenze nel set di dati di addestramento viene eliminata. Quando più categorie contengono il maggior numero di occorrenze, viene eliminata una categoria casuale all'interno di questo insieme.
Il set finale di pesi di ML.WEIGHTS
include comunque la categoria eliminata, ma la sua ponderazione è 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 di addestramento. I modelli non possono cambiare i metodi di codifica tra le esecuzioni di addestramento.
La codifica fittizia è supportata dai modelli di regressione lineare e logistica.
Codifica etichetta
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 delle etichette potrebbero avere il seguente aspetto:
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 di NULL
che non sono nel vocabolario sono codificati come 0
.
La codifica delle etichette è supportata dai modelli ad albero potenziati.
Codifica di destinazione
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 caratteristiche che sono state codificate nel 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 della destinazione è supportata dai modelli ad albero potenziato.