ML.ROC_CURVE 함수

ML.ROC_CURVE 함수

ML.ROC_CURVE 함수를 사용하여 로지스틱 회귀 관련 측정항목을 평가합니다. ML.ROC_CURVE는 로지스틱 회귀 모델만 평가합니다.

출력 ML.ROC_CURVE 함수에는 모델의 다양한 임계값 측정항목이 있는 여러 행이 포함됩니다. 다음과 같은 측정항목이 포함됩니다.

  • threshold
  • recall
  • false_positive_rate
  • true_positives
  • false_positives
  • true_negatives
  • false_negatives

ML.ROC_CURVE 제한사항

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

ML.ROC_CURVE 구문

ML.ROC_CURVE(MODEL model_name
            [, {TABLE table_name | (query_statement)}]
            [, GENERATE_ARRAY(thresholds)])

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_namequery_statement 중에서 어느 것도 지정되지 않으면 ML.ROC_CURVE는 다음과 같이 roc 곡선 결과를 계산합니다.

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

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_namequery_statement 중에서 어느 것도 지정되지 않으면 ML.ROC_CURVE는 다음과 같이 roc 곡선 결과를 계산합니다.

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

thresholds

(선택사항) thresholdsGENERATE_ARRAY 함수를 통해 제공된 예측 출력의 백분위수 값입니다. 제공된 값은 DOUBLE 유형이어야 합니다.

사용할 임계값을 지정하지 않으면 임계값이 근사치 분위수 100(APPROX_QUANTILES(predicted_label, 100))을 통해 예측 출력 값에 따라 자동으로 선택됩니다.

ML.ROC_CURVE 예시

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

로지스틱 회귀 모델의 ROC 곡선 평가

다음 쿼리는 threshold, recall, false_positive_rate, true_positives, false_positives, true_negatives, false_negatives 열을 반환합니다. 재현율 및 거짓양성률을 ROC 곡선의 그래프로 나타낼 수 있습니다. 반환된 임계값은 예측 출력의 백분위수 값에 따라 선택됩니다.

SELECT
  *
FROM
  ML.ROC_CURVE(MODEL `mydataset.mymodel`,
    TABLE `mydataset.mytable`)

커스텀 임계값으로 ROC 곡선 평가

다음 쿼리는 이전 예시와 동일한 열을 반환합니다. 반환된 임계값은 GENERATE_ARRAY 함수의 출력에 따라 선택됩니다.

SELECT
  *
FROM
  ML.ROC_CURVE(MODEL `mydataset.mymodel`,
    TABLE `mydataset.mytable`,
    GENERATE_ARRAY(0.4,0.6,0.01))

정밀도-재현율 곡선 평가

다음 쿼리는 ROC 곡선(재현율 대 거짓양성률) 대신 참양성 및 거짓양성 수의 정밀도를 사용하여 정밀도-재현율 곡선을 계산합니다.

SELECT
  recall,
  true_positives / (true_positives + false_positives) AS precision
FROM
  ML.ROC_CURVE(MODEL `mydataset.mymodel`,
    TABLE `mydataset.mytable`)