ML.PREDICT 함수

ML.PREDICT 함수

ML.PREDICT 함수는 모델을 사용하여 결과를 예측하는 데 사용할 수 있습니다. 모델을 만드는 중, 모델을 만든 후 또는 실패 후(최소 1회 반복이 완료된 경우) 예측을 수행할 수 있습니다. ML.PREDICT는 항상 마지막으로 성공한 반복의 모델 가중치를 사용합니다.

ML.PREDICT 함수의 출력에는 입력 테이블과 같은 행 수가 있으며 입력 테이블의 모든 열과 모델의 모든 출력 열이 포함됩니다. 모델의 출력 열 이름은 predicted_<label_column_name>이고 로지스틱 회귀 모형의 경우 predicted_<label_column_name>_probs입니다. 두 열 모두에서 label_column_name은 학습 중 사용된 입력 라벨 열의 이름입니다.

  • 로지스틱 회귀 모델:

    • predicted_<label_column_name>_probs 출력 열은 각 라벨의 예측된 가능성이 포함된 [<label, prob>] 유형의 STRUCT 배열입니다.
    • predicted_<label_column_name> 출력 열은 어느 라벨의 예측 가능성이 더 높은지를 기준으로 두 입력 라벨 중 하나입니다.
  • 다중 클래스 로지스틱 회귀 모델:

    • predicted_<label_column_name>_probs 출력 열은 softmax 함수를 사용하여 계산되는 각 클래스 라벨의 가능성입니다.
    • predicted_<label_column_name> 출력 열은 예측된 가능성 점수가 가장 높은 라벨입니다.
  • 선형 회귀 모델:

    • predicted_<label_column_name> 출력 열은 라벨의 예측된 값입니다.
  • k-평균 모델:

    • 라벨이 centroid_idnearest_centroids_distance인 열을 반환합니다. nearest_centroids_distance에는 이름이 nearest_centroids_distance인 STRUCT 배열이 포함되며, 이 배열에는 가장 가까운 k 클러스터까지의 거리가 포함됩니다. 여기서 knum_clusters 또는 5 중에 더 작은 값과 같습니다. standardize_features 옵션을 TRUE로 설정하여 이 모델을 만든 경우 모델은 표준화된 특징을 사용하여 이러한 거리를 계산하며, 그렇지 않은 경우 표준화되지 않은 특징을 사용하여 이러한 거리를 계산합니다.
  • TensorFlow 모델:

    • 입력은 모델에 의해 예상되는 유형으로 변환 가능해야 합니다.
    • 출력은 TensorFlow 모델 예측 메서드의 출력입니다.

ML.PREDICT 구문

ML.PREDICT(MODEL model_name,
          {TABLE table_name | (query_statement)}
          [, STRUCT<threshold FLOAT64> settings)])

model_name

model_name은 평가할 모델의 이름입니다. 기본 프로젝트를 구성하지 않은 경우 프로젝트 ID를 모델 이름 앞에 `[PROJECT_ID].[DATASET].[MODEL]`(백틱 포함) 형식으로 추가합니다. 예를 들어 `myproject.mydataset.mymodel`과 같은 형식입니다.

table_name

table_name은 평가 데이터가 포함된 입력 테이블의 이름입니다. 기본 프로젝트를 구성하지 않은 경우 프로젝트 ID를 테이블 이름 앞에 `[PROJECT_ID].[DATASET].[TABLE]`(백틱 포함) 형식으로 추가합니다. 예를 들어 `myproject.mydataset.mytable`과 같은 형식입니다.

테이블의 입력 열 이름에는 모델의 열 이름이 포함되어야 하며 유형은 BigQuery 암시적 강제 규칙에 따라 호환되어야 합니다.

테이블에 사용되지 않는 열이 있는 경우 출력 열로 전달됩니다.

query_statement

query_statement 절은 평가 데이터를 생성하는 데 사용되는 표준 SQL 쿼리를 지정합니다. query_statement 절의 지원되는 SQL 구문은 표준 SQL 쿼리 구문을 참조하세요.

쿼리의 입력 열 이름에는 모델의 열 이름이 포함되어야 하며 유형은 BigQuery 암시적 강제 규칙에 따라 호환되어야 합니다.

쿼리에 사용되지 않는 열이 있는 경우 출력 열로 전달됩니다.

threshold

(선택사항) threshold는 바이너리 로지스틱 회귀 모델의 커스텀 임계값이며 두 라벨 사이의 컷오프로 사용됩니다. 임계값 위의 예측은 긍정적 예측으로 취급됩니다. 임계값 아래의 예측은 부정적 예측입니다. threshold 값은 FLOAT64 유형이며 설정 STRUCT의 일부입니다. 기본값은 0.5입니다.

대치

통계에서 대치는 누락된 값을 대체된 값으로 바꾸는 데 사용됩니다. BigQuery ML에서 모델을 학습시킬 때 NULL 값은 누락된 데이터로 취급됩니다. BigQuery ML에서 결과를 예측하면서 BigQuery ML이 NULL 값 또는 이전에 본 적이 없는 값을 발견하는 경우 누락된 값이 발생할 수 있습니다. BigQuery ML은 열이 숫자인지, 원-핫 인코딩인지, 타임스탬프인지에 따라 누락된 값을 처리합니다.

숫자 열

학습과 예측에서 숫자 열의 NULL 값은 원본 입력 데이터의 특징 열에 의해 계산되는 평균 값으로 대체됩니다.

원-핫 인코딩 열

학습과 예측에서 원-핫 인코딩 열의 NULL 값은 데이터에 추가되는 부가 카테고리에 매핑됩니다. 이전에 본 적이 없는 데이터에는 예측 중 가중치 0이 할당됩니다.

타임스탬프 열

TIMESTAMP 열은 표준화된 열과 원-핫 인코딩 열의 대치 방법을 혼합하여 사용합니다. 생성된 unix 시간 열의 경우 BigQuery ML은 원본 열 전반에서 값을 평균 unix 시간으로 대체합니다. 다른 생성된 값의 경우 BigQuery ML은 추출된 각 특징에 대해 각각의 NULL 카테고리에 값을 할당합니다.

ML.PREDICT 예시

다음 예에서는 모델과 입력 테이블이 기본 프로젝트에 있다고 가정합니다.

결과 예측

다음 쿼리는 ML.PREDICT 함수를 사용하여 결과를 예측합니다. 쿼리는 다음 열을 반환합니다.

  • predicted_label
  • label
  • column1
  • column2
SELECT
  *
FROM
  ML.PREDICT(MODEL `mydataset.mymodel`,
    (
    SELECT
      label,
      column1,
      column2
    FROM
      `mydataset.mytable`))

다른 두 모델의 예측 비교

이 예에서 다음 쿼리는 첫 번째 모델을 만드는 데 사용됩니다.

CREATE MODEL
  `mydataset.mymodel1`
OPTIONS
  (model_type='linear_reg',
    input_label_cols=['label'],
  ) AS
SELECT
  label,
  input_column1
FROM
  `mydataset.mytable`

다음 쿼리는 두 번째 모델을 만드는 데 사용됩니다.

CREATE MODEL
  `mydataset.mymodel2`
OPTIONS
  (model_type='linear_reg',
    input_label_cols=['label'],
  ) AS
SELECT
  label,
  input_column2
FROM
  `mydataset.mytable`

다음 쿼리는 ML.PREDICT 함수를 사용하여 두 모델의 출력을 비교합니다.

SELECT
  label,
  predicted_label1,
  predicted_label AS predicted_label2
FROM
  ML.PREDICT(MODEL `mydataset.mymodel2`,
    (
    SELECT
      * EXCEPT (predicted_label),
          predicted_label AS predicted_label1
    FROM
      ML.PREDICT(MODEL `mydataset.mymodel1`,
        TABLE `mydataset.mytable`)))

커스텀 임계값 지정

다음 쿼리는 입력 데이터와 커스텀 임계값 0.55를 지정하여 ML.PREDICT 함수를 사용해서 결과를 예측합니다.

SELECT
  *
FROM
  ML.PREDICT(MODEL `mydataset.mymodel`,
    (
    SELECT
      custom_label,
      column1,
      column2
    FROM
      `mydataset.mytable`),
    STRUCT(0.55 AS threshold))

가져온 TensorFlow 모델로 결과 예측

다음 쿼리는 가져온 TensorFlow 모델을 사용하여 ML.PREDICT 함수 예측 결과를 사용합니다. input_data 테이블에는 my_model이 예상하는 스키마의 입력이 포함됩니다. 자세한 내용은 TensorFlow 모델의 CREATE MODEL 문을 참조하세요.

SELECT *
FROM ML.PREDICT(MODEL `my_project`.my_dataset.my_model,
               (SELECT * FROM input_data))
이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...