Vorverarbeitungsfunktionen

Es gibt zwei Arten von Vorverarbeitungsfunktionen, skalare und analytische:

  • Skalare Funktionen werden in einer einzigen Zeile ausgeführt (z. B. ML.BUCKETIZE).
  • Die Analysefunktionen werden in allen Zeilen ausgeführt (z. B. ML.QUANTILE_BUCKETIZE) und geben das Ergebnis für jede Zeile basierend auf den gesammelten Statistiken für alle Zeilen aus.

ML-Analysefunktionen unterscheiden sich von normalen Analysefunktionen dadurch, dass sie immer mit einer leeren OVER()-Klausel verwendet werden.

Wenn ML-Analysefunktionen innerhalb der TRANSFORM-Klausel für das Training verwendet werden, gelten die gleichen Statistiken automatisch für die Eingabe in der Vorhersage.

ML.BUCKETIZE

ML.BUCKETIZE(numerical_expression, array_split_points[, exclude_boundaries])

Beschreibung

Gibt einen STRING als Bucket-Namen zurück, nachdem numerical_expression durch array_split_points in Buckets aufgeteilt wurde.

Die zurückgegebenen Bucket-Namen haben das Format bin_<bucket_index>. bucket_index beginnt bei 1. Der Bereich jedes Buckets ist [lower_bound, outer_bound].

Eingabe

  • numerical_expression: Zu kategorisierender numerischer Ausdruck.
  • array_split_points: Sortiertes numerisches Array mit Punkten zur Unterteilung von numerical_expression
  • exclude_boundaries: Optionales BOOL. Bei TRUE werden die beiden Grenzen der array_split_points entfernt. Der Standardwert ist FALSE.

Rückgabedatentyp

STRING

Beispiel

SELECT
  ML.BUCKETIZE(2.5, [1, 2, 3]) AS bucket,
  ML.BUCKETIZE(2.5, [1, 2, 3], TRUE) AS bucket_without_boundaries;

+---------+----------------------------+
| bucket  | bucket_without_boundaries  |
+---------+----------------------------+
| bin_3   | bin_2                      |
+---------+----------------------------+

ML.POLYNOMIAL_EXPAND

ML.POLYNOMIAL_EXPAND(struct_numerical_features[, degree])

Beschreibung

Gibt ein STRUCT mit allen Polynomkombinationen der numerischen Eingabemerkmale mit einem Grad zurück, der nicht größer ist als der übergebene Grad einschließlich der ursprünglichen Features. Die Feldnamen der STRUCT-Ausgabe sind Verkettungen der ursprünglichen Feature-Namen.

Eingabe

  • struct_numerical_features: Numerische Features, die zur Erweiterung in ein STRUCT eingebettet sind. Die maximale Anzahl von Eingabe-Features in ein STRUCT beträgt 10. Unbenannte Features sind in struct_numerical_features nicht zulässig. Doppelte Einträge sind nicht zulässig.
  • degree: Optionales INT64. Die größtmögliche Anzahl von Kombinationen im Bereich von [1, 4]. Der Standardwert liegt bei 2.

Rückgabedatentyp

STRUCT von DOUBLE

Beispiel

SELECT
  ML.POLYNOMIAL_EXPAND(STRUCT(2 AS f1, 3 AS f2)) AS output;

+-------------------------------------------------------------------+
|                              output                               |
+-------------------------------------------------------------------+
| {"f1":"2.0","f1_f1":"4.0","f1_f2":"6.0","f2":"3.0","f2_f2":"9.0"} |
+-------------------------------------------------------------------+

ML.FEATURE_CROSS

ML.FEATURE_CROSS(struct_categorical_features[, degree])

Beschreibung

Gibt ein STRUCT mit allen Kombinationen gekreuzter kategorischer Merkmale zurück, deren Grad nicht größer als der übergebene Grad ist, mit Ausnahme der 1-Grad-Elemente (ursprünglichen Features) und der sich selbst kreuzenden Elemente. Die Feldnamen der STRUCT-Ausgabe sind Verkettungen der ursprünglichen Feature-Namen.

Eingabe

  • struct_categorical_features: Kategorische Features, die für die Kreuzung in ein STRUCT eingebettet sind. Die maximale Anzahl von Eingabe-Features in ein STRUCT beträgt 10. Unbenannte Funktionen sind in struct_numerical_features nicht zulässig. Duplikate sind nicht zulässig.
  • degree: Optionales INT64. Die größtmögliche Anzahl von Kombinationen im Bereich von [2, 4]. Der Standardwert liegt bei 2.

Rückgabedatentyp

STRUCT von STRING

Beispiel

SELECT
  ML.FEATURE_CROSS(STRUCT('a' AS f1, 'b' AS f2, 'c' AS f3)) AS output;

+---------------------------------------------+
|                   output                    |
+---------------------------------------------+
| {"f1_f2":"a_b","f1_f3":"a_c","f2_f3":"b_c"} |
+---------------------------------------------+

ML.NGRAMS

ML.NGRAMS(array_input, range[, separator])

Beschreibung

Gibt einen ARRAY von STRING als N-Gramme zurück, da benachbarte Token in array_input zusammengeführt werden.

Eingabe

  • array_input: ARRAY von STRING. Die Strings sind die Token, die zusammengeführt werden sollen.
  • range: ARRAY von 2 INT64-Elementen. Die beiden sortierten INT64-Elemente sind der Bereich von N-Gramm-Größen, die zurückgegeben werden sollen.
  • separator: Optionaler STRING Das Trennzeichen zur Verbindung zweier benachbarter Token in der Ausgabe. Der Standardwert ist ein Leerzeichen .

Rückgabedatentyp

ARRAY von STRING

Beispiel

SELECT
  ML.NGRAMS(['a', 'b', 'c'], [2,3], '#') AS output;

+-----------------------+
|        output         |
+-----------------------+
| ["a#b","a#b#c","b#c"] |
+-----------------------+

ML.QUANTILE_BUCKETIZE

ML.QUANTILE_BUCKETIZE(numerical_expression, num_buckets) OVER()

Beschreibung

Packt ein fortlaufendes numerisches Feature in einen STRING mit dem Bucket-Namen als Wert, der auf Quantilen basiert.

Die zurückgegebenen Bucket-Namen haben das Format bin_<bucket_index>. bucket_index beginnt bei 1.

Bei Verwendung in einer TRANSFORM-Klausel werden für die Vorhersage automatisch die gleichen Quantile verwendet.

Eingabe

  • numerical_expression: Zu kategorisierender numerischer Ausdruck.
  • num_buckets: INT64. Die Anzahl der Buckets, auf die numerical_expression aufgeteilt werden soll.

Rückgabedatentyp

STRING

Beispiel

SELECT
  f, ML.QUANTILE_BUCKETIZE(f, 3) OVER() AS bucket
FROM
  UNNEST([1,2,3,4,5]) AS f;

+---+--------+
| f | bucket |
+---+--------+
| 3 | bin_2  |
| 5 | bin_3  |
| 2 | bin_2  |
| 1 | bin_1  |
| 4 | bin_3  |
+---+--------+

ML.MIN_MAX_SCALER

ML.MIN_MAX_SCALER(numerical_expression) OVER()

Beschreibung

Skaliert die Werte von numerical_expression bis [0, 1] mit MIN und MAX für alle Zeilen.

Bei Verwendung in der TRANSFORM-Klausel werden für die Vorhersage automatisch die gleichen MIN- und MAX-Werte verwendet. Wenn die Vorhersagedaten außerhalb des [MIN-, MAX]-Bereichs liegen, wird entweder auf 0 oder 1 begrenzt.

Eingabe

  • numerical_expression: Zu skalierender numerischer Ausdruck.

Rückgabedatentyp

DOUBLE

Beispiel

SELECT
  f, ML.MIN_MAX_SCALER(f) OVER() AS output
FROM
  UNNEST([1,2,3,4,5]) AS f;

+---+--------+
| f | output |
+---+--------+
| 4 |   0.75 |
| 2 |   0.25 |
| 1 |    0.0 |
| 3 |    0.5 |
| 5 |    1.0 |
+---+--------+

ML.STANDARD_SCALER

ML.STANDARD_SCALER(numerical_expression) OVER()

Beschreibung

Standardisiert numerical_expression.

Bei Verwendung in der TRANSFORM-Klausel werden für die Vorhersage automatisch die gleichen STDDEV- und MEAN-Werte verwendet.

Eingabe

  • numerical_expression: Zu skalierender numerischer Ausdruck.

Rückgabedatentyp

DOUBLE

Beispiel

SELECT
  f, ML.STANDARD_SCALER(f) OVER() AS output
FROM
  UNNEST([1,2,3,4,5]) AS f;

+---+---------------------+
| f |       output        |
+---+---------------------+
| 1 | -1.2649110640673518 |
| 5 |  1.2649110640673518 |
| 2 | -0.6324555320336759 |
| 4 |  0.6324555320336759 |
| 3 |                 0.0 |
+---+---------------------+