Die ML.MULTI_HOT_ENCODER-Funktion
In diesem Dokument wird die Funktion ML.MULTI_HOT_ENCODER
beschrieben, mit der Sie einen String-Arrayausdruck mit einem Multi-Hot-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.
Bei Verwendung in der TRANSFORM
-Klausel wird das während des Trainings berechnete Vokabular zusammen mit den von Ihnen angegebenen Top-k- und Häufigkeitsschwellenwerten automatisch für die Vorhersage verwendet.
Syntax
ML.MULTI_HOT_ENCODER(array_expression [, top_k] [, frequency_threshold]) OVER()
Argumente
ML.MULTI_HOT_ENCODER
verwendet die folgenden Argumente:
array_expression
: der zu codierendeARRAY<STRING>
-Ausdruck.top_k
: einINT64
-Wert, der die Anzahl der im Codierungsvokabular enthaltenen Kategorien angibt. Die Funktion wählt dietop_k
am häufigsten vorkommenden Kategorien in den Daten aus und verwendet diese. Kategorien unterhalb dieses Schwellenwerts werden zu0
codiert. Dieser Wert muss kleiner als1,000,000
sein, um Probleme wegen hoher Dimensionalität zu vermeiden. Der Standardwert ist32,000
.frequency_threshold
: EinINT64
-Wert, der die Kategorien im Codierungsvokabular anhand der Kategoriehäufigkeit begrenzt. Die Funktion verwendet Kategorien, deren Häufigkeit größer oder gleichfrequency_threshold
ist. Kategorien unterhalb dieses Schwellenwerts werden mit0
codiert. Der Standardwert ist5
.
Ausgabe
ML.MULTI_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
Das folgende Beispiel führt eine Multi-Hot-Codierung für eine Reihe von String-Arrayausdrücken durch. Es beschränkt das Codierungsvokabular auf die drei Kategorien, die in den Daten am häufigsten vorkommen und die auch ein- oder mehrmals vorkommen.
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)];
Die Ausgabe sieht dann ungefähr so aus:
+------+-----------------------------+ | 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 | +------+-----------------------------+
Nächste Schritte
- Weitere Informationen zur Feature-Vorverarbeitung finden Sie unter Feature-Vorverarbeitung.
- Informationen zu den unterstützten SQL-Anweisungen und -Funktionen für die einzelnen Modelltypen erhalten Sie unter End-to-End-Nutzerpfad für jedes Modell.