前処理関数

前処理関数には、スカラー関数と分析関数の 2 種類があります。

  • スカラー関数は単一の行で動作します(たとえば、ML.BUCKETIZE)。
  • 分析関数はすべての行(たとえば、ML.QUANTILE_BUCKETIZE)で動作し、すべての行で収集された統計に基づいて各行の結果を出力します。

ML 分析関数は、常に空の OVER() 句とともに使用するという点で、通常の分析関数とは異なります。

トレーニング中に TRANSFORM 句内で ML 分析関数を使用すると、予測の入力には同じ統計が自動的に適用されます。

ML.BUCKETIZE

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

説明

array_split_points によって numerical_expression がバケットに分割された後、バケット名として STRING を返します。

返されたバケット名は bin_<bucket_index> 形式で、bucket_index は 1 から始まります。各バケットの範囲は、[lower_bound, upper_bound) です。

入力

  • numerical_expression: バケット化する数値式。
  • array_split_points: numerical_expression を分割するポイントでソートされた数値配列。
  • exclude_boundaries: オプションの BOOL。TRUE の場合、2 つの境界は array_split_points から削除されます。デフォルト値は FALSE です。

戻りデータの型

STRING

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])

説明

元の特徴を含む、渡された次数以下の次数を持つ数値入力特徴のすべての多項式の組み合わせが含まれた STRUCT を返します。出力 STRUCT のフィールド名は、元の特徴名を連結したものです。

入力

  • struct_numerical_features: 展開される STRUCT にラップされた数値特徴。STRUCT の入力特徴の最大数は 10 です。名前のない特徴は struct_numerical_features では使用できません。重複する値は使用できません。
  • degree: オプションの INT64。[1, 4] の範囲内のすべての組み合わせの最高次数。デフォルト値は 2 です。

戻りデータの型

STRUCT of DOUBLE

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])

説明

元の特徴を含む、渡された次数以下の次数を持つ交差カテゴリ特徴のすべての組み合わせが含まれた STRUCT を返します。これには、1 度のアイテム(元の特徴)と自己交差アイテムは含まれません。出力 STRUCT のフィールド名は、元の特徴名を連結したものです。

入力

  • struct_categorical_features: 交差される STRUCT にラップされたカテゴリ特徴。STRUCT の入力特徴の最大数は 10 です。名前のない特徴は struct_numerical_features では使用できません。重複する値は使用できません。
  • degree: オプションの INT64。[2, 4] の範囲内のすべての組み合わせの最高次数。デフォルト値は 2 です。

戻りデータの型

STRUCT of STRING

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])

説明

array_input 内の隣接するトークンをマージして STRING の ARRAY を n-gram として返します。

入力

  • array_input: STRING の ARRAY。文字列は、マージされるトークンです。
  • range: 2 つの INT64 要素の配列。これらの 2 つのソートされた INT64 要素は、返される n-gram サイズの範囲です。
  • separator: オプションの文字列。出力内の 2 つの隣接するトークンを接続する区切り文字。デフォルト値は空白 です。

戻りデータの型

STRING の ARRAY

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()

説明

分位に基づいた値としてバケット名を使用して、連続数値特徴を文字列にバケット化します。

返されたバケット名は bin_<bucket_index> 形式で、bucket_index は 1 から始まります。

TRANSFORM 句で使用すると、同じ分位が自動的に予測に使用されます。

入力

  • numerical_expression: バケット化する数値式。
  • num_buckets: INT64。numerical_expression を分割するバケットの数。

戻りデータの型

STRING

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()

説明

numerical_expression を [0, 1] にスケーリングし、すべての行で MIN と MAX を上限とします。

TRANSFORM 句で使用すると、同じ MIN と MAX が自動的に予測に使用されます。予測データが [MIN、MAX] の範囲外の場合は、0 または 1 に制限されます。

入力

  • numerical_expression: スケーリングする数値式。

戻りデータの型

DOUBLE

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()

説明

numerical_expression を標準化します。

TRANSFORM 句で使用すると、同じ STDDEV と MEAN が自動的に予測に使用されます。

入力

  • numerical_expression: スケーリングする数値式。

戻りデータの型

DOUBLE

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