ML.ONE_HOT_ENCODER 함수

이 문서에서는 원-핫 또는 더미 인코딩 스키마를 사용하여 문자열 표현식을 인코딩할 수 있는 ML.ONE_HOT_ENCODER 함수를 설명합니다.

인코딩 어휘는 알파벳순으로 정렬됩니다. 어휘에 없는 NULL 값과 카테고리는 0index 값으로 인코딩됩니다. dummy 인코딩을 사용하는 경우 삭제된 카테고리가 value 0으로 인코딩됩니다.

TRANSFORM에 사용될 때 학습 중에 계산된 어휘 및 삭제된 카테고리 값은 지정한 상위 k 및 빈도 임곗값과 함께 예측에 자동으로 사용됩니다.

구문

ML.ONE_HOT_ENCODER(string_expression [, drop] [, top_k] [, frequency_threshold]) OVER()

인수

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

  • string_expression: 인코딩할 STRING 표현식입니다.
  • drop: 함수가 카테고리를 삭제하는지 여부를 지정하는 STRING 값입니다. 유효한 값은 다음과 같습니다.
    • none: 모든 카테고리를 보존합니다. 이 값이 기본값입니다.
    • most_frequent: 문자열 표현식에서 가장 자주 발견된 범주를 삭제합니다. 이 값을 선택하면 함수에 dummy 인코딩이 사용됩니다.
  • top_k: 인코딩 어휘에 포함된 카테고리 수를 지정하는 INT64 값입니다. 이 함수는 데이터에서 top_k의 가장 빈번한 카테고리를 선택하고 사용합니다. 이 임곗값 아래의 카테고리는 0으로 인코딩됩니다. 높은 측정기준으로 인한 문제를 방지하려면 이 값이 1,000,000보다 작아야 합니다. 기본값은 32,000입니다.
  • frequency_threshold: 카테고리 빈도를 기준으로 인코딩 어휘에 포함되는 카테고리를 제한하는 INT64 값입니다. 이 함수는 빈도가 frequency_threshold보다 크거나 같은 카테고리를 사용합니다. 이 임곗값 미만의 카테고리는 0으로 인코딩됩니다. 기본값은 5입니다.

출력

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

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

SELECT f, ML.ONE_HOT_ENCODER(f, 'most_frequent', 10, 0) OVER () AS output
FROM UNNEST([NULL, 'a', 'b', 'b', 'c', 'c', 'c', 'd', 'd']) AS f
ORDER BY f;

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

+------+-----------------------------+
|  f   | output.index | output.value |
+------+--------------+--------------+
| NULL |  0           |  1.0         |
| a    |  1           |  1.0         |
| b    |  2           |  1.0         |
| b    |  2           |  1.0         |
| c    |  3           |  0.0         |
| c    |  3           |  0.0         |
| c    |  3           |  0.0         |
| d    |  4           |  1.0         |
| d    |  4           |  1.0         |
+------+-----------------------------+

다음 단계