BigQuery ML でのトレーニングでは、次の 2 種類のデータ前処理を行います。
- 自動前処理。BigQuery ML はトレーニング中に自動前処理を行います。詳細については、
CREATE MODEL
ステートメントをご覧ください。 - 手動前処理。BigQuery ML では、このページの前処理関数を使用してカスタム前処理を定義する
TRANSFORM
句を使用できます。これらの関数は、TRANSFORM
句の外でも使用できます。
BigQuery ML には、モデルのエクスポートでの自動前処理が含まれていますが、手動前処理は含まれません。
前処理関数には、スカラー関数と分析関数の 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 |
+---+---------------------+