ML.EVALUATE 함수

ML.EVALUATE 함수

ML.EVALUATE 함수를 사용하여 모델 측정항목을 평가합니다. 선형 회귀, 로지스틱 회귀, k-평균 모델과 함께 ML.EVALUATE 함수를 사용할 수 있습니다. 또한 ML.ROC_CURVE 함수를 사용하면 로지스틱 회귀 모델을 평가할 수 있지만 멀티클래스 모델에는 ML.ROC_CURVE가 지원되지 않습니다.

ML.EVALUATE 함수 출력에는 단일 행에 지정된 모델 유형에 해당하는 공통 측정항목이 포함되어 있습니다.

ML.EVALUATE는 로지스틱 또는 멀티클래스 회귀 모델에서 다음 열을 반환합니다.

  • precision
  • recall
  • accuracy
  • f1_score
  • log_loss
  • roc_auc

ML.EVALUATE는 선형 회귀 모델에서 다음 열을 반환합니다.

  • mean_absolute_error
  • mean_squared_error
  • mean_squared_log_error
  • median_absolute_error
  • r2_score
  • explained_variance

ML.EVALUATE는 k-평균 모델에서 다음 열을 반환합니다.

ML.EVALUATE 제한사항

ML.EVALUATE 함수에는 다음 제한사항이 적용됩니다.

ML.EVALUATE 구문

ML.EVALUATE(MODEL model_name
           [, {TABLE table_name | (query_statement)}]
           [, STRUCT(<T> AS threshold)])

model_name

model_name은 평가할 모델의 이름입니다. 기본 프로젝트를 구성하지 않았으면 백틱을 포함하여 `[PROJECT_ID].[DATASET].[MODEL]` 형식(예: `myproject.mydataset.mymodel`)으로 모델 이름 앞에 프로젝트 ID를 붙입니다.

table_name

(선택사항) table_name은 평가 데이터가 포함된 입력 테이블의 이름입니다. 기본 프로젝트를 구성하지 않았으면 백틱을 포함하여 `[PROJECT_ID].[DATASET].[TABLE]` 형식(예: `myproject.mydataset.mytable`)으로 테이블 이름 앞에 프로젝트 ID를 붙입니다.

table_name이 지정된 경우 테이블의 입력 열 이름은 모델의 열 이름과 일치해야 하며 이러한 두 유형은 BigQuery 암시적 강제 변환 규칙에 따라 호환되어야 합니다. 입력에는 학습 중에 제공된 라벨 열 이름과 일치하는 열이 있어야 합니다. 이 값은 input_label_cols 옵션을 통해 제공됩니다. input_label_cols가 지정되지 않으면 학습 데이터의 'label' 열이 사용됩니다.

table_name 또는 query_statement가 모두 지정되지 않으면 ML.EVALUATE는 다음과 같이 평가 결과를 계산합니다.

  • 학습 중에 데이터가 분할되면 분할 평가 데이터가 평가 결과를 계산하는 데 사용됩니다.
  • 학습 중에 데이터가 분할되지 않으면 전체 학습 입력이 평가 결과를 계산하는 데 사용됩니다.

query_statement

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

query_statement가 지정된 경우 쿼리의 입력 열 이름은 모델의 열 이름과 일치해야 하며 이러한 두 유형은 BigQuery 암시적 강제 변환 규칙에 따라 호환되어야 합니다. 입력에는 학습 중에 제공된 라벨 열 이름과 일치하는 열이 있어야 합니다. 이 값은 input_label_cols 옵션을 통해 제공됩니다. input_label_cols가 지정되지 않으면 학습 데이터의 'label' 열이 사용됩니다. 추가 열은 무시됩니다.

model_name을 만든 CREATE MODEL 문에 TRANSFORM 절이 있으면 TRANSFORM 절에 있는 입력 열만 query_statement에 나타나야 합니다.

table_name 또는 query_statement가 모두 지정되지 않으면 ML.EVALUATE는 다음과 같이 평가 결과를 계산합니다.

  • 학습 중에 데이터가 분할되면 분할 평가 데이터가 평가 결과를 계산하는 데 사용됩니다.
  • 학습 중에 데이터가 분할되지 않으면 전체 학습 입력이 평가 결과를 계산하는 데 사용됩니다. k-평균 모델은 데이터 분할을 지원하지 않으므로 k-평균 모델에서 query_statement 또는 table_name을 지정하지 않고 ML.EVALUATE를 호출하면 전체 학습 입력을 대상으로 결과가 계산됩니다.

threshold

(선택사항) threshold는 평가에 사용할 로지스틱 회귀 모델의 커스텀 임계값입니다. 기본값은 0.5입니다. 제공되는 임계값은 STRUCT 유형이어야 합니다.

정밀도 또는 재현율의 값이 0인 경우 이는 선택한 임계값이 참양성 라벨을 생성하지 않았음을 나타냅니다. 정밀도 값이 NaN이면 선택한 임계값이 양성 라벨을 생성하지 않았고 참양성도 거짓양성도 아님을 의미합니다.

table_namequery_statement 모두 지정되지 않으면 임계값을 사용할 수 없습니다. 또한 멀티클래스 로지스틱 회귀 모델에서는 threshold를 사용할 수 없습니다.

ML.EVALUATE 예시

ML.EVALUATE(입력 데이터를 지정하지 않는 경우)

다음 쿼리는 지정된 입력 데이터가 없는 모델을 평가하는 데 사용됩니다.

SELECT
  *
FROM
  ML.EVALUATE(MODEL `mydataset.mymodel`)

ML.EVALUATE(커스텀 임계값 및 입력 데이터를 지정한 경우)

다음 쿼리는 입력 데이터와 커스텀 임계값 0.55를 지정하여 모델을 평가합니다.

SELECT
  *
FROM
  ML.EVALUATE(MODEL `mydataset.mymodel`,
    (
    SELECT
      custom_label,
      column1,
      column2
    FROM
      `mydataset.mytable`),
    STRUCT(0.55 AS threshold))
이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

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