ML.WEIGHTS 함수

ML.WEIGHTS 함수

ML.WEIGHTS 함수를 사용하면 예측 중에 모델에서 사용되는 기본 가중치를 확인할 수 있습니다.

대부분의 모델에서 ML.WEIGHTS는 다음 열을 반환합니다.

  • processed_input - 모델 특성 입력의 이름입니다. 이 열의 값은 학습 중에 사용되는 SELECT 문의 열 이름과 일치합니다.
  • weight - 각 특성의 가중치입니다. 숫자 열의 경우 가중치에 값이 포함되고 category_weights 열은 NULL입니다. 원-핫 인코딩으로 변환된 숫자가 아닌 열에서 가중치 열은 NULL이고 category_weights 열은 각 카테고리의 카테고리 이름과 가중치의 ARRAY입니다.
  • category_weights.category - 입력 열이 숫자가 아닌 경우 카테고리 이름입니다.
  • category_weights.weight — 입력 열이 숫자가 아닌 경우 카테고리 가중치입니다.
  • class_label — 멀티클래스 모델에서 class_label은 지정된 가중치의 라벨입니다. 출력에는 <class_label, processed_input> 조합당 하나의 행이 포함됩니다.

model을 만든 CREATE MODEL 문에 TRANSFORM 절이 있으면 ML.WEIGHTSTRANSFORM 출력 특성의 가중치를 출력합니다. 가중치는 TRANSFORM 없이 생성된 모델과 마찬가지로 기본적으로 비정규화되며, 정규화된 가중치를 구할 수 있는 옵션이 함께 제공됩니다.

TIMESTAMPprocessed_input 결과

BigQuery ML은 TIMESTAMP 열을 발견하면 TIMESTAMP에서 구성요소 집합을 추출하고 추출된 구성요소에 표준화 및 원-핫 인코딩을 혼합하여 수행합니다. ML.WEIGHTS 함수를 사용할 때 processed_input 열에서 변환 결과를 확인할 수 있습니다.

다음 표에서는 TIMESTAMP에서 추출된 구성요소와 해당되는 변환 방법을 보여줍니다. processed_input 값에서 [COLUMN_NAME]TIMESTAMP 열의 이름입니다.

TIMESTAMP 구성요소 processed_input 결과 변환 방법
Unix 시간(초 단위) [COLUMN_NAME] 표준화
날짜 _TS_DOM_[COLUMN_NAME] 원-핫 인코딩
요일 _TS_DOW_[COLUMN_NAME] 원-핫 인코딩
_TS_MOY_[COLUMN_NAME] 원-핫 인코딩
시간 _TS_HOD_[COLUMN_NAME] 원-핫 인코딩
_TS_MOH_[COLUMN_NAME] 원-핫 인코딩
1년 기준 주 수(주는 일요일에 시작) _TS_WOY_[COLUMN_NAME] 원-핫 인코딩
연도 _TS_YEAR_[COLUMN_NAME] 원-핫 인코딩

ML.WEIGHTS 권한

ML.WEIGHTS를 실행하려면 bigquery.models.createbigquery.models.getData가 모두 필요합니다.

행렬 분해를 위한 ML.WEIGHTS 함수

행렬 분해에서 ML.WEIGHTS는 다음 열을 반환합니다.

  • processed_input: 사용자 또는 항목 열의 이름입니다. 이 열의 값은 학습 중에 사용되는 SELECT 문의 열 이름과 일치합니다.
  • feature: 학습 중에 사용된 특정 사용자 또는 항목의 이름입니다.
  • factor_weights: 계수의 ARRAY와 각 계수의 가중치입니다.
  • factor_weights.factor: 학습의 잠재 계수입니다. 1에서 NUM_FACTORS까지의 INT64입니다.
  • factor_weights.weight: 해당 계수 및 특성의 가중치입니다.
  • intercept: 특성의 절편(intercept) 또는 편향 항(bias term)입니다.

마지막으로, 테이블에 입력 데이터에서 계산된 global__intercept__가 포함된 추가 행이 있습니다. 이 행에는 processed_inputfactor_weightsNULL 값이 있습니다. 암시적 의견 모델에서 global__intercept__는 항상 0입니다.

ML.WEIGHTS 구문

다음 예시 구문에서 standardize는 모델 가중치를 표준화하여 모든 특성의 평균이 0이고 표준 편차가 1이라고 가정하는지 여부를 결정하는 선택적 매개변수입니다. 가중치를 표준화하면 가중치의 절대적 강도를 서로 비교할 수 있습니다. 기본값은 false입니다. 제공되는 값은 STRUCT의 유일한 필드여야 합니다.

ML.WEIGHTS(MODEL `project-id.dataset.model`)
          [, STRUCT(<T> as standardize)])

다음을 바꾸세요.

  • project-id: 프로젝트 ID
  • dataset: 모델을 포함하는 BigQuery 데이터세트
  • model: 모델의 이름

ML.WEIGHTS 예시

표준화하지 않는 ML.WEIGHTS

다음 예시에서는 mydatasetmymodel에서 가중치 정보를 검색합니다. 데이터세트는 기본 프로젝트에 있습니다.

다음 쿼리는 입력 열 input_col의 각 원-핫 인코딩 카테고리와 연결된 가중치를 반환합니다.

SELECT
  category,
  weight
FROM
  UNNEST((
    SELECT
      category_weights
    FROM
      ML.WEIGHTS(MODEL `mydataset.mymodel`)
    WHERE
      processed_input = 'input_col'))

category_weights 열이 중첩된 반복 열이므로 이 명령어는 UNNEST 함수를 사용합니다.

표준화하는 ML.WEIGHTS

다음 예시에서는 mydatasetmymodel에서 가중치 정보를 검색합니다. 데이터세트는 기본 프로젝트에 있습니다.

쿼리는 모든 특성의 평균이 0이고 표준편차가 1이라고 가정하는 표준화된 가중치를 검색합니다.

SELECT
  *
FROM
  ML.WEIGHTS(MODEL `mydataset.mymodel`,
    STRUCT(true AS standardize))

ML.WEIGHTS 제한사항

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