ML.CONFUSION_MATRIX 함수

ML.CONFUSION_MATRIX 함수

ML.CONFUSION_MATRIX 함수를 사용하여 특정 로지스틱 회귀 모델과 입력 데이터의 혼동 행렬을 반환합니다. ML.CONFUSION_MATRIX 함수는 로지스틱 회귀와 멀티클래스 로지스틱 회귀 모델 모두에서 사용될 수 있습니다. ML.CONFUSION_MATRIX는 선형 회귀 모델을 지원하지 않습니다.

ML.CONFUSION_MATRIX 함수의 출력 열은 모델에 따라 다릅니다. 첫 번째 출력 열은 항상 expected_label입니다. 학습된 모델의 각 클래스당 하나씩 추가 열 N개가 있습니다. 추가 열의 이름은 모델 학습에 사용된 클래스 라벨에 따라 다릅니다.

학습 클래스 라벨이 모두 BigQuery 열 명명 규칙에 부합하면 라벨이 열 이름으로 사용됩니다. 명명 규칙에 부합하지 않는 열은 열 명명 규칙에 부합하고 고유하도록 변경됩니다. 예를 들어 라벨이 01이면 출력 열 이름은 _0_1입니다.

열은 클래스 라벨에 따라 오름차순으로 정렬됩니다. 평가 데이터의 라벨이 학습 데이터의 라벨과 일치하는 경우 왼쪽 상단에서 오른쪽 하단 방향으로 대각선으로 참양성이 표시됩니다. 예상(또는 실제) 라벨은 행당 하나씩 나열되며 예측된 라벨은 열당 하나씩 나열됩니다.

expected_label 열의 값은 평가 데이터 라벨 열의 ML.CONFUSION_MATRIX로 전달된 정확한 값과 유형입니다. 학습 시 사용된 값 또는 유형과 정확하게 일치하지 않는 경우에도 마찬가지입니다.

ML.CONFUSION_MATRIX 구문

ML.CONFUSION_MATRIX(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_namequery_statement 중에서 어느 것도 지정되지 않은 경우 ML.CONFUSION_MATRIX는 다음과 같이 혼동 행렬 결과를 계산합니다.

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

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.CONFUSION_MATRIX는 다음과 같이 혼동 행렬 결과를 계산합니다.

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

threshold

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

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

ML.CONFUSION_MATRIX 예시

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

다음 쿼리는 로지스틱 회귀 모델의 혼동 행렬을 반환하는 데 사용됩니다.

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

ML.CONFUSION_MATRIX 제한사항

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