kmeans
유클리디안 거리를 기반으로 K-평균++(K-Means++) 알고리즘을 사용하여 입력 데이터를 k개의 클러스터로 분류합니다.
명령어 속성
| 항목 | 설명 |
|---|---|
| 명령어 유형 | 가공 쿼리 |
| 필요 권한 | 없음 |
| 라이선스 사용량 | 해당 없음 |
| 병렬 실행 | 미지원 |
| 분산 실행 | 미지원 |
문법
kmeans [k=INT] [iter=INT] FIELD, ...
옵션
k=INT- 클러스터 수. 최댓값은 100입니다. (기본값:
3) iter=INT- 계산 반복 횟수 (기본값:
10000)
대상
FIELD, ...- 클러스터링에 사용할 필드 목록. 쉼표(
,)로 구분하여 여러 필드를 지정할 수 있습니다. 필드 값은 숫자형이어야 하며, 지정한 필드 중 하나라도 숫자가 아닌 레코드는 무시합니다.
출력 필드
| 필드 | 타입 | 설명 |
|---|---|---|
| _cluster | 32비트 정수 | 분류된 클러스터 번호. 1부터 k까지의 값입니다. |
오류 코드
파싱 오류
| 오류 코드 | 메시지 | 설명 |
|---|---|---|
| 40804 | 머신러닝 라이선스가 필요합니다. | 머신러닝 라이선스가 없는 경우 |
| too-large-k | - | k 값이 최댓값(100)을 초과하는 경우 |
| missing-kmeans-fields | - | 대상 필드가 지정되지 않은 경우 |
런타임 오류
해당 사항 없음
설명
kmeans 명령어는 모든 입력 레코드를 수집한 후, 지정한 필드의 숫자 값을 기반으로 K-평균++ 알고리즘을 수행하여 각 레코드를 가장 가까운 클러스터에 할당합니다. 분류 결과는 _cluster 필드에 1부터 시작하는 클러스터 번호로 출력합니다.
지정한 필드 중 하나라도 숫자가 아닌 값을 포함하는 레코드는 클러스터링 대상에서 제외합니다. 최대 100,000건의 입력 레코드를 처리할 수 있으며, 유효한 입력 레코드가 100,000건을 초과하면 쿼리를 종료합니다.
사용 예
이 사용 예에서 조회하는 WEB_APACHE_SAMPLE 테이블을 준비하려면 쿼리 실습용 데이터를 참고하세요.
-
웹 접근 로그를 3개의 클러스터로 분류
table WEB_APACHE_SAMPLE | eval bytes = long(bytes) | kmeans bytes, status | fields _time, src_ip, bytes, status, _clusterbytes와status필드를 기준으로 기본 클러스터 수(3)로 분류합니다. -
클러스터 수와 반복 횟수를 지정하여 분류
table WEB_APACHE_SAMPLE | eval bytes = long(bytes) | kmeans k=4 iter=100000 bytes, status | fields _time, src_ip, bytes, status, _cluster4개의 클러스터로 분류하고, 최대 100,000회 반복하여 수렴 정확도를 높입니다.
-
출발지 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 이전 버전부터 제공되었습니다.