La funzione ML.ONE_HOT_ENCODER

Questo documento descrive la funzione ML.ONE_HOT_ENCODER, che consente di codificare un'espressione stringa utilizzando uno schema di codifica one-hot o fittizio.

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. Se utilizzi la codifica fittizia, la categoria rimossa viene codificata con un valore value pari a 0.

Se utilizzati nella clausola TRANSFORM, i valori del vocabolario e della categoria persa calcolati durante l'addestramento, insieme ai valori k principali e alla soglia di frequenza specificati, vengono utilizzati automaticamente nella previsione.

Sintassi

ML.ONE_HOT_ENCODER(string_expression [, drop] [, top_k] [, frequency_threshold]) OVER()

Argomenti

ML.ONE_HOT_ENCODER accetta i seguenti argomenti:

  • string_expression: l'espressione STRING da codificare.
  • drop: un valore STRING che specifica se la funzione ignora una categoria. I valori validi sono:
    • none: conserva tutte le categorie. Questo è il valore predefinito.
    • most_frequent: elimina la categoria più frequente trovata nell'espressione stringa. Se selezioni questo valore, la funzione utilizzerà la codifica fittizia.
  • top_k: un valore INT64 che specifica il numero di categorie incluse nel vocabolario di codifica. La funzione seleziona le top_k categorie più frequenti nei dati e le utilizza; le categorie al di sotto di questa soglia sono codificate come 0. Questo valore deve essere inferiore a 1,000,000 per evitare problemi dovuti all'elevata dimensionalità. Il valore predefinito è 32,000.
  • frequency_threshold: un valore INT64 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 a frequency_threshold; le categorie al di sotto di questa soglia sono codificate in 0. Il valore predefinito è 5.

Output

ML.ONE_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

Nell'esempio seguente viene eseguita la codifica fittizia su un insieme di espressioni di tipo stringa. Limita il vocabolario di codifica alle dieci categorie che ricorrono con maggiore frequenza nei dati e che ricorrono anche zero o più volte.

SELECT f, ML.ONE_HOT_ENCODER(f, 'most_frequent', 10, 0) OVER () AS output
FROM UNNEST([NULL, 'a', 'b', 'b', 'c', 'c', 'c', 'd', 'd']) AS f
ORDER BY f;

L'output è simile al seguente:

+------+-----------------------------+
|  f   | output.index | output.value |
+------+--------------+--------------+
| NULL |  0           |  1.0         |
| a    |  1           |  1.0         |
| b    |  2           |  1.0         |
| b    |  2           |  1.0         |
| c    |  3           |  0.0         |
| c    |  3           |  0.0         |
| c    |  3           |  0.0         |
| d    |  4           |  1.0         |
| d    |  4           |  1.0         |
+------+-----------------------------+

Passaggi successivi