ML.MULTI_HOT_ENCODER 함수

이 문서에서는 멀티 핫 인코딩 스키마를 사용하여 문자열 배열 표현식을 인코딩할 수 있는 ML.MULTI_HOT_ENCODER 함수를 설명합니다.

인코딩 어휘는 알파벳순으로 정렬됩니다. 어휘에 없는 NULL 값과 카테고리는 0index 값으로 인코딩됩니다.

TRANSFORM에 사용될 때 학습 중에 계산된 어휘와 지정한 상위 k 및 빈도 임곗값은 예측에 자동으로 사용됩니다.

구문

ML.MULTI_HOT_ENCODER(array_expression [, top_k] [, frequency_threshold]) OVER()

인수

ML.MULTI_HOT_ENCODER는 다음 인수를 사용합니다.

  • array_expression: 인코딩할 ARRAY<STRING> 표현식입니다.
  • top_k: 인코딩 어휘에 포함된 카테고리 수를 지정하는 INT64 값입니다. 이 함수는 데이터에서 top_k의 가장 빈번한 카테고리를 선택하고 사용합니다. 이 임곗값 아래의 카테고리는 0으로 인코딩됩니다. 높은 측정기준으로 인한 문제를 방지하려면 이 값이 1,000,000보다 작아야 합니다. 기본값은 32,000입니다.
  • frequency_threshold: 카테고리 빈도를 기준으로 인코딩 어휘에 포함되는 카테고리를 제한하는 INT64 값입니다. 이 함수는 빈도가 frequency_threshold보다 크거나 같은 카테고리를 사용합니다. 이 임곗값 미만의 카테고리는 0으로 인코딩됩니다. 기본값은 5입니다.

출력

ML.MULTI_HOT_ENCODERARRAY<STRUCT<INT64, FLOAT64>> 형식의 구조체 값 배열을 반환합니다. 구조체의 첫 번째 요소는 인코딩된 문자열 표현식의 색인을 제공하고, 두 번째 요소는 인코딩된 문자열 표현식의 값을 제공합니다.

다음 예시에서는 문자열 배열 표현식 집합에서 멀티-핫 인코딩을 수행합니다. 인코딩 어휘를 데이터에서 가장 자주 발생하고 한 번 이상 발생하는 세 개의 카테고리로 제한합니다.

SELECT f[OFFSET(0)] AS f0, ML.MULTI_HOT_ENCODER(f, 3, 1) OVER () AS output
FROM
  (
    SELECT ['a', 'b', 'b', 'c', NULL] AS f
    UNION ALL
    SELECT ['c', 'c', 'd', 'd', NULL] AS f
  )
ORDER BY f[OFFSET(0)];

결과는 다음과 유사합니다.

+------+-----------------------------+
|  f0  | output.index | output.value |
+------+--------------+--------------+
|  a   |  1           |  1.0         |
|      |  2           |  1.0         |
|      |  3           |  1.0         |
|      |  0           |  1.0         |
|  c   |  3           |  1.0         |
|      |  0           |  1.0         |
+------+-----------------------------+

다음 단계