Pre-elaborazione automatica delle funzionalità
BigQuery ML esegue la pre-elaborazione automatica durante l'addestramento, utilizzando
CREATE MODEL
.
La pre-elaborazione automatica è composta da
imputazione del valore mancante
e trasformazioni delle caratteristiche.
Per informazioni sul supporto della pre-elaborazione delle caratteristiche in BigQuery ML, consulta Panoramica della pre-elaborazione delle funzionalità.
Per informazioni sulle istruzioni e sulle funzioni SQL supportate per ogni 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
e i relativi valori. Quando addestri un modello in BigQuery ML, i valori di NULL
vengono
considerati come dati mancanti. Quando prevedi i risultati in BigQuery ML,
quando BigQuery ML rileva un NULL
o un valore non rilevato in precedenza. Handle BigQuery ML 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, NULL valori in valori numerici
le colonne vengono sostituite 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, NULL valori nel
le colonne codificate vengono mappate a una categoria aggiuntiva che viene aggiunta
i dati. Ai dati non visti in precedenza viene assegnata una ponderazione pari a 0 durante
la previsione. |
TIMESTAMP |
TIMESTAMP colonne utilizzano una combinazione di metodi di imputazione
da colonne standardizzate e con codifica one-hot. Per il file Unix generato
colonna data e ora, BigQuery ML sostituisce i valori con la colonna Unix medio
tempo nelle colonne originali. Per gli altri valori generati,
BigQuery ML li assegna al rispettivo NULL
per ogni caratteristica estratta. |
STRUCT |
Sia nell'addestramento che nella previsione, ogni campo dell'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
colonne numeriche pari a zero prima di passarle per l'addestramento. Le eccezioni
sono modelli di alberi potenziati e di foreste casuali, per i quali non è possibile
e i modelli K-means, in cui 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 da
modelli di alberi potenziati e foreste casuali. Questa trasformazione genera
una caratteristica separata per ogni valore univoco nella colonna. Codifica etichetta
la trasformazione viene applicata per addestrare modelli di alberi potenziati e foreste casuali
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 unico in ARRAY . |
TIMESTAMP |
Trasformazione timestamp | Quando una regressione lineare o logistica
rileva una colonna TIMESTAMP , estrae
un insieme di componenti da TIMESTAMP ed esegue una combinazione
standardizzazione e codifica one-hot sui componenti estratti. Per
Componente tempo Unix in secondi, BigQuery ML utilizza
standardizzazione. Per tutti gli altri componenti, utilizza la codifica one-hot.Per ulteriori informazioni, consulta 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 un singolo
colonna. Richiede che tutti i campi di STRUCT siano denominati. Nidificati
Non sono consentiti STRUCT . 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 valore predefinito diverso
di codifica utilizzando l'opzione del modello CATEGORY_ENCODING_METHOD
. Per
modelli lineari generalizzati (GLM), puoi impostare CATEGORY_ENCODING_METHOD
con uno dei seguenti valori:
Codifica one-hot
La codifica one-hot mappa ogni categoria di una caratteristica al proprio file binario.
caratteristica, dove 0
rappresenta l'assenza della caratteristica e 1
rappresenta la
(nota come variabile fittizia). Questa mappatura crea N
nuova funzionalità
colonne, dove N
è il numero di categorie uniche per l'elemento in
nella tabella di addestramento.
Ad esempio, supponiamo che la tabella di addestramento abbia una colonna di caratteristiche chiamata
fruit
con le categorie Apple
, Banana
e Cranberry
, come
seguenti:
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 da regressione lineare e logistica e albero potenziato di machine learning.
Codifica fittizia
La codifica fittizia è
in modo simile alla codifica one-hot, in cui una caratteristica categorica viene trasformata in un
insieme di variabili segnaposto. La codifica fittizia utilizza N-1
variabili segnaposto
anziché N
variabili segnaposto 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 nel precedente esempio 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 in viene eliminato il set di dati di addestramento. Quando più categorie hanno più occorrenze, viene eliminata una categoria casuale all'interno di quell'insieme.
L'ultimo set di pesi
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 è NaN
.
Se warm_start
viene utilizzato su un modello inizialmente addestrato con
'DUMMY_ENCODING'
, la stessa variabile segnaposto viene eliminata dalla prima
durante l'addestramento. I modelli non possono cambiare i metodi di codifica tra le esecuzioni di addestramento.
La codifica fittizia è supportata modelli di regressione lineare e logistica.
Codifica etichetta
La codifica delle etichette trasforma il valore di una caratteristica categorica in un valore INT64
nel mese di [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 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. NULL
valori e categorie
che non sono nel vocabolario sono codificati in 0
.
La codifica delle etichette è supportata da modelli di albero potenziati.
Codifica di destinazione
La codifica target sostituisce il valore della caratteristica categorica con la probabilità di il target per i modelli di classificazione o con il valore previsto per i modelli di regressione.
Le caratteristiche codificate come target potrebbero avere il seguente aspetto: 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 di destinazione è supportata da modelli di albero potenziati.