La funzione ML.MULTI_HOT_ENCODER
Questo documento descrive la funzione ML.MULTI_HOT_ENCODER
, che consente di
codificare un'espressione array di stringhe utilizzando uno schema di codifica
multi-hot.
Il vocabolario della codifica è in ordine alfabetico. I valori e le categorie di NULL
non presenti nel vocabolario sono codificati con un valore index
di 0
.
Quando utilizzato nella clausola TRANSFORM
, il vocabolario calcolato durante l'addestramento, insieme ai valori k di punta e soglia di frequenza specificati, vengono utilizzati automaticamente nella previsione.
Sintassi
ML.MULTI_HOT_ENCODER(array_expression [, top_k] [, frequency_threshold]) OVER()
Argomenti
ML.MULTI_HOT_ENCODER
accetta i seguenti argomenti:
array_expression
: l'espressioneARRAY<STRING>
da codificare.top_k
: un valoreINT64
che specifica il numero di categorie incluse nel vocabolario di codifica. La funzione seleziona letop_k
categorie più frequenti nei dati e le utilizza; le categorie al di sotto di questa soglia sono codificate come0
. Questo valore deve essere inferiore a1,000,000
per evitare problemi dovuti all'elevata dimensionalità. Il valore predefinito è32,000
.frequency_threshold
: un valoreINT64
che limita le categorie incluse nel vocabolario di codifica in base alla frequenza della categoria. La funzione utilizza categorie la cui frequenza è maggiore o uguale afrequency_threshold
; le categorie al di sotto di questa soglia sono codificate in0
. Il valore predefinito è5
.
Output
ML.MULTI_HOT_ENCODER
restituisce un array di valori di struct nel formato ARRAY<STRUCT<INT64, FLOAT64>>
. Il primo elemento dello struct fornisce l'indice dell'espressione di stringa codificata, mentre il secondo fornisce il valore dell'espressione di stringa codificata.
Esempio
L'esempio seguente esegue la codifica multi-hot su un insieme di espressioni array di stringhe. Limita il vocabolario di codifica alle tre categorie che si verificano più spesso nei dati e che ricorrono anche una o più volte.
SELECT f[OFFSET(0)] AS f0, ML.MULTI_HOT_ENCODER(f, 3, 1) OVER () AS output FROM ( SELECT ['a', 'b', 'b', 'c', NULL] AS f UNION ALL SELECT ['c', 'c', 'd', 'd', NULL] AS f ) ORDER BY f[OFFSET(0)];
L'output è simile al seguente:
+------+-----------------------------+ | f0 | output.index | output.value | +------+--------------+--------------+ | a | 1 | 1.0 | | | 2 | 1.0 | | | 3 | 1.0 | | | 0 | 1.0 | | c | 3 | 1.0 | | | 0 | 1.0 | +------+-----------------------------+
Passaggi successivi
- Per informazioni sulla pre-elaborazione delle funzionalità, 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.