ML.TRANSFORM 関数

このドキュメントでは、特徴データの前処理に使用できる ML.TRANSFORM 関数について説明します。この関数は、既存のモデルの TRANSFORMでキャプチャされたデータ変換を適用して、入力データを処理します。モデルのトレーニング中にデータ変換のために計算された統計値は、関数の入力データに適用されます。

特徴の前処理をサポートするモデルの詳細については、各モデルのエンドツーエンドのユーザー ジャーニーをご覧ください。

構文

ML.TRANSFORM(
  MODEL `project_id.dataset.model`,
  { TABLE `project_id.dataset.table` | (query_statement) }
)

引数

ML.TRANSFORM は次の引数を取ります。

  • project_id: プロジェクト ID。
  • dataset: モデルを含む BigQuery データセットを指定する STRING 値。
  • model: モデルの名前。モデルは、特徴データを手動で前処理するための TRANSFORMを含む CREATE MODEL ステートメントを使用して作成する必要があります。モデルが TRANSFORM 句を使用しているかどうかを確認するには、bq show コマンドを使用して、モデルのメタデータを確認します。モデルが TRANSFORM 句を使用してトレーニングされた場合、モデル メタデータには変換列に関するセクションが含まれます。TRANSFORM 句なしでトレーニングされたモデルを指定すると、この関数はエラーを返します。
  • table: 前処理する特徴データを含む入力テーブルの名前。

    table が指定されている場合、テーブルの入力列名はモデルの TRANSFORM 句の入力列名と一致する必要があります。また、型は BigQuery の暗黙の強制型変換ルールに従って互換性がある必要があります。 入力列名とデータ型は、特徴列に関するセクションでモデルのメタデータから取得できます。

  • query_statement: 前処理する特徴データを生成するクエリ。query_statement 句でサポートされる SQL 構文については、GoogleSQL クエリ構文をご覧ください。

    query_statement が指定されている場合、クエリからの入力列名はモデルの TRANSFORM 句の入力列名と一致する必要があります。また、型は BigQuery の暗黙の強制型変換ルールに従って互換性がある必要があります。 入力列名とデータ型は、特徴列に関するセクションでモデルのメタデータから取得できます。

出力

ML.TRANSFORM は、モデルの TRANSFORM 句で指定された列を返します。

次の例では、デフォルト プロジェクトの mydataset.mymodel という名前のモデルに含まれる TRANSFORM 句を使用して前処理された特徴データを返します。

TRANSFORM 句を含むモデルを作成します。

CREATE OR REPLACE MODEL `mydataset.mymodel`
  TRANSFORM(
    species,
    island,
    ML.MAX_ABS_SCALER(culmen_length_mm) OVER () AS culmen_length_mm,
    ML.MAX_ABS_SCALER(flipper_length_mm) OVER () AS flipper_length_mm,
    sex,
    body_mass_g)
  OPTIONS (
    model_type = 'linear_reg',
    input_label_cols = ['body_mass_g'])
AS (
  SELECT *
  FROM `bigquery-public-data.ml_datasets.penguins`
  WHERE body_mass_g IS NOT NULL
);

モデルの TRANSFORM 句で前処理された特徴データを返します。

SELECT
  *
FROM
  ML.TRANSFORM(
    MODEL `mydataset.mymodel`,
    TABLE `bigquery-public-data.ml_datasets.penguins`);

次のような結果になります。

+-------------------------------------+--------+---------------------+---------------------+--------+-----------------+-------------+
| species                             | island | culmen_length_mm    | flipper_length_mm   | sex    | culmen_depth_mm | body_mass_g |
--------------------------------------+--------+ ------------------- +---------------------+--------+-----------------+-------------+
| Adelie Penguin (Pygoscelis adeliae) | Dream  | 0.61409395973154368 | 0.79653679653679654 | Female | 18.4            | 3475.0      |
| Adelie Penguin (Pygoscelis adeliae) | Dream  | 0.66778523489932884 | 0.79653679653679654 | Male   | 19.1            | 4650.0      |
+-------------------------------------+--------+---------------------+---------------------+--------+-----------------+-------------+

次のステップ