kmeans

유클리디안 거리를 기반으로 K-평균++(K-Means++) 알고리즘을 사용하여 입력 데이터를 k개의 클러스터로 분류합니다.

명령어 속성

항목설명
명령어 유형가공 쿼리
필요 권한없음
라이선스 사용량해당 없음
병렬 실행미지원
분산 실행미지원

문법

kmeans [k=INT] [iter=INT] FIELD, ...

옵션

k=INT
클러스터 수. 최댓값은 100입니다. (기본값: 3)
iter=INT
계산 반복 횟수 (기본값: 10000)

대상

FIELD, ...
클러스터링에 사용할 필드 목록. 쉼표(,)로 구분하여 여러 필드를 지정할 수 있습니다. 필드 값은 숫자형이어야 하며, 지정한 필드 중 하나라도 숫자가 아닌 레코드는 무시합니다.

출력 필드

필드타입설명
_cluster32비트 정수분류된 클러스터 번호. 1부터 k까지의 값입니다.

오류 코드

파싱 오류
오류 코드메시지설명
40804머신러닝 라이선스가 필요합니다.머신러닝 라이선스가 없는 경우
too-large-k-k 값이 최댓값(100)을 초과하는 경우
missing-kmeans-fields-대상 필드가 지정되지 않은 경우
런타임 오류

해당 사항 없음

설명

kmeans 명령어는 모든 입력 레코드를 수집한 후, 지정한 필드의 숫자 값을 기반으로 K-평균++ 알고리즘을 수행하여 각 레코드를 가장 가까운 클러스터에 할당합니다. 분류 결과는 _cluster 필드에 1부터 시작하는 클러스터 번호로 출력합니다.

지정한 필드 중 하나라도 숫자가 아닌 값을 포함하는 레코드는 클러스터링 대상에서 제외합니다. 최대 100,000건의 입력 레코드를 처리할 수 있으며, 유효한 입력 레코드가 100,000건을 초과하면 쿼리를 종료합니다.

사용 예

이 사용 예에서 조회하는 WEB_APACHE_SAMPLE 테이블을 준비하려면 쿼리 실습용 데이터를 참고하세요.

  1. 웹 접근 로그를 3개의 클러스터로 분류

    table WEB_APACHE_SAMPLE
    | eval bytes = long(bytes)
    | kmeans bytes, status
    | fields _time, src_ip, bytes, status, _cluster
    

    bytesstatus 필드를 기준으로 기본 클러스터 수(3)로 분류합니다.

  2. 클러스터 수와 반복 횟수를 지정하여 분류

    table WEB_APACHE_SAMPLE
    | eval bytes = long(bytes)
    | kmeans k=4 iter=100000 bytes, status
    | fields _time, src_ip, bytes, status, _cluster
    

    4개의 클러스터로 분류하고, 최대 100,000회 반복하여 수렴 정확도를 높입니다.

  3. 출발지 IP별 접근 통계를 클러스터링

    table WEB_APACHE_SAMPLE
    | stats count as req_count, sum(bytes) as total_bytes by src_ip
    | eval total_bytes = long(total_bytes)
    | kmeans k=3 req_count, total_bytes
    | fields src_ip, req_count, total_bytes, _cluster
    

    출발지 IP별 요청 수와 전송 바이트 합계를 기준으로 접근 패턴을 3개의 클러스터로 분류합니다.

호환성

kmeans 명령어는 소나 4.0 이전 버전부터 제공되었습니다.