변환 전용 모델의 CREATE MODEL 문

이 문서에서는 BigQuery에서 변환 전용 모델을 만드는 CREATE MODEL 문을 설명합니다. 변환 전용 모델은 TRANSFORM을 사용하여 입력 데이터에 전처리 함수를 적용하고 전처리된 데이터를 반환합니다. 변환 전용 모델은 데이터 전처리를 모델 학습에서 분리하므로 데이터 전처리 규칙 집합을 더 쉽게 캡처하고 재사용할 수 있습니다.

변환 전용 모델을 ML.TRANSFORM 함수와 함께 사용하여 사전 처리된 데이터를 다른 모델에 제공할 수 있습니다.

  • 변환된 데이터를 해당 모델의 학습 데이터로 사용하기 위해 다른 모델을 만들 때 쿼리 문에서 사용할 수 있습니다.
  • 대상 모델 예측 방식으로 처리되는 예측 데이터를 제공하기 위해 ML.PREDICT 함수의 query statement 인수에서 사용할 수 있습니다.

일괄 특성 변환의 경우 변환 전용 모델을 사용하는 것이 좋습니다. 짧은 시간에 대량의 데이터를 처리할 수 있기 때문입니다. 온라인 특성 변환의 경우에는 Vertex AI Feature Store를 사용하는 것이 더 좋습니다. 지연 시간이 짧은 응답을 제공하기 때문입니다.

또한 모델의 특성 변환에 대한 정보를 반환하기 위해 ML.FEATURE_INFO 함수와 함께 변환 전용 모델을 사용할 수 있습니다.

각 모델 유형에 지원되는 SQL 문과 함수에 대한 자세한 내용은 각 모델의 엔드 투 엔드 사용자 경험을 참조하세요.

CREATE MODEL 구문

{CREATE MODEL | CREATE MODEL IF NOT EXISTS | CREATE OR REPLACE MODEL} model_name
TRANSFORM (select_list)
OPTIONS(MODEL_TYPE = 'TRANSFORM_ONLY')
AS query_statement

CREATE MODEL

지정된 데이터 세트에서 새 모델을 만들고 학습시킵니다. 모델 이름이 있으면 CREATE MODEL은 오류를 반환합니다.

CREATE MODEL IF NOT EXISTS

지정된 데이터 세트에 모델이 없는 경우에만 새 모델을 만들고 학습시킵니다.

CREATE OR REPLACE MODEL

모델을 만들어 학습시키고, 지정된 데이터 세트에서 이름이 같은 기존 모델을 대체합니다.

model_name

만들거나 바꾸려는 모델의 이름입니다. 모델 이름은 데이터 세트 내에서 고유해야 합니다. 다른 모델이나 테이블에서 같은 이름을 사용할 수 없습니다. 모델 이름은 BigQuery 테이블과 같은 이름 지정 규칙을 따라야 합니다. 다음과 같은 모델 이름을 사용할 수 있습니다.

  • 최대 1,024자 포함
  • 문자(대소문자), 숫자, 밑줄 포함

model_name은 대소문자를 구분하지 않습니다.

기본 프로젝트를 구성하지 않았으면 백틱을 포함하여 다음 형식으로 모델 이름 앞에 프로젝트 ID를 추가해야 합니다.

`[PROJECT_ID].[DATASET].[MODEL]`

예를 들면 `myproject.mydataset.mymodel`입니다.

select_list

*, * EXCEPT()를 사용하거나 열 이름을 직접 나열하여 변환하지 않고 query_statement에서 모델 학습으로 열을 전달할 수 있습니다.

query_statement의 모든 열이 TRANSFORM 절에 나타날 필요가 없으므로 TRANSFORM 절에서 생략하여 query_statement에 나타나는 열을 삭제할 수 있습니다.

select_list의 표현식을 사용하여 query_statement의 입력을 변환할 수 있습니다. select_list는 일반 SELECT 문과 비슷합니다. select_list는 다음 구문을 지원합니다.

  • *
  • * EXCEPT()
  • * REPLACE()
  • expression
  • expression.*

다음은 select_list에 포함될 수 없습니다.

  • 집계 함수
  • 비BigQuery ML 분석 함수. 지원되는 함수에 대한 자세한 내용은 수동 특성 전처리를 참조하세요.
  • UDF
  • 서브 쿼리
  • 익명 열. 예를 들어 a + b as c는 허용되지만 a + b는 허용되지 않습니다.

select_list의 출력 열은 BigQuery에서 지원되는 임의의 데이터 유형일 수 있습니다.

있는 경우 변환 없이 다음 열이 select_list에 나타나야 합니다.

  • label
  • data_split_col
  • kmeans_init_col
  • instance_weight_col

이러한 열이 query_statement에서 반환되면 select_list에서 표현식 외부의 열 이름으로 또는 *를 사용하여 열을 참조해야 합니다. 이러한 열에서는 별칭을 사용할 수 없습니다.

MODEL_TYPE

구문

MODEL_TYPE = 'TRANSFORM_ONLY'

설명

모델 유형을 지정합니다. 이 옵션은 필수입니다.

query_statement

사전 처리할 데이터가 포함된 GoogleSQL 쿼리입니다. 이 데이터를 변환할 때 계산되는 통계는 모델을 사용하는 모든 함수의 입력 데이터에 적용됩니다.

예시

다음 예시에서는 변환 전용 모델을 만들고 사용하는 방법을 보여줍니다.

예시 1

다음 예시에서는 기본 프로젝트의 mydatasetmymodel라는 모델을 만듭니다. 모델은 BigQuery 공개 테이블 bigquery-public-data.ml_datasets.penguins에서 열 여러 개를 변환합니다.

CREATE MODEL `mydataset.transform_model`
  TRANSFORM(
    species,
    island,
    ML.MAX_ABS_SCALER(culmen_length_mm) OVER () AS culmen_length_mm,
    ML.MAX_ABS_SCALER(culmen_depth_mm) OVER () AS culmen_depth_mm,
    ML.MAX_ABS_SCALER(flipper_length_mm) OVER () AS flipper_length_mm,
    sex,
    body_mass_g)
  OPTIONS (
    model_type = 'transform_only')
AS (
  SELECT *
  FROM `bigquery-public-data.ml_datasets.penguins`
);

예시 2

다음 예시에서는 기본 프로젝트의 mydatasetmymodel라는 모델을 만듭니다. 모델은 변환 전용 모델을 통해 사전 처리된 데이터로 학습됩니다.

CREATE MODEL `mydataset.mymodel`
OPTIONS
  ( MODEL_TYPE = 'LINEAR_REG',
    MAX_ITERATIONS = 5,
    INPUT_LABEL_COLS = ['body_mass_g'] ) AS
SELECT
  *
FROM
  ML.TRANSFORM(
    MODEL `mydataset.transform_model`,
    TABLE `bigquery-public-data.ml_datasets.penguins`)
WHERE body_mass_g IS NOT NULL;