Funktion ML.ONE_HOT_ENCODER

In diesem Dokument wird die Funktion ML.ONE_HOT_ENCODER beschrieben, mit der Sie einen Stringausdruck mit einem One-Hot- oder Dummy-Codierungsschema codieren können.

Das Codierungsvokabular ist alphabetisch angeordnet. NULL-Werte und Kategorien, die nicht im Vokabular enthalten sind, werden mit dem index-Wert 0 codiert. Wenn Sie eine Dummy-Codierung verwenden, wird die verworfene Kategorie mit einem value von 0 codiert.

Bei Verwendung in der TRANSFORM-Klausel werden das während des Trainings berechnete Vokabular und die verworfenen Kategoriewerte zusammen mit den obersten k Werten und den von Ihnen angegebenen Häufigkeitsschwellenwerten automatisch für die Vorhersage genutzt.

Syntax

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

Argumente

ML.ONE_HOT_ENCODER verwendet die folgenden Argumente:

  • string_expression: der zu codierende STRING-Ausdruck.
  • drop: ein STRING-Wert, der angibt, ob die Funktion eine Kategorie verwirft. Gültige Werte:
    • none: Behält alle Kategorien bei. Dies ist der Standardwert.
    • most_frequent: Verwirft die häufigste Kategorie im Stringausdruck. Wenn Sie diesen Wert auswählen, verwendet die Funktion die Dummy-Codierung.
  • top_k: ein INT64-Wert, der die Anzahl der im Codierungsvokabular enthaltenen Kategorien angibt. Die Funktion wählt die top_k am häufigsten vorkommenden Kategorien in den Daten aus und verwendet diese. Kategorien unterhalb dieses Schwellenwerts werden zu 0 codiert. Dieser Wert muss kleiner als 1,000,000 sein, um Probleme wegen hoher Dimensionalität zu vermeiden. Der Standardwert ist 32,000.
  • frequency_threshold: Ein INT64-Wert, der die Kategorien im Codierungsvokabular anhand der Kategoriehäufigkeit begrenzt. Die Funktion verwendet Kategorien, deren Häufigkeit größer oder gleich frequency_threshold ist. Kategorien unterhalb dieses Schwellenwerts werden mit 0 codiert. Der Standardwert ist 5.

Ausgabe

ML.ONE_HOT_ENCODER gibt ein Array von Strukturwerten im Format ARRAY<STRUCT<INT64, FLOAT64>> zurück. Das erste Element in der Struktur enthält den Index des codierten Stringausdrucks und das zweite Element den Wert des codierten Stringausdrucks.

Beispiel

Im folgenden Beispiel wird eine Dummy-Codierung für eine Reihe von Stringausdrücken ausgeführt. Sie beschränkt das Codierungsvokabular auf die zehn Kategorien, die in den Daten am häufigsten und die auch gar nicht oder mehrmals vorkommen.

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;

Die Ausgabe sieht dann ungefähr so aus:

+------+-----------------------------+
|  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         |
+------+-----------------------------+

Nächste Schritte