ML 명령어

ML 명령어

ml 명령어는 ML Commons 플러그인의 머신러닝(ML) 알고리즘을 PPL 명령어가 반환한 검색 결과에 적용해요. 이상 탐지와 클러스터링을 포함한 다양한 ML 작업을 지원해요.

출처: 문서

본문

ml 명령어는 ML Commons 플러그인의 머신러닝(ML) 알고리즘을 PPL 명령어가 반환한 검색 결과에 적용해요. 이상 탐지와 클러스터링을 포함한 다양한 ML 작업을 지원해요. 알고리즘과 지정된 action에 따라 train, predict 또는 결합된 train-and-predict 작업을 수행할 수 있어요.

ml 명령어를 사용하려면 plugins.calcite.enabled를 false로 설정해야 해요.

ml 명령어는 다음 알고리즘을 지원해요:

구문 (Syntax)

ml 명령어는 알고리즘에 따라 다른 구문 옵션을 지원해요.

시계열(time-series) 데이터 이상 탐지

이 구문을 사용해 시계열 데이터의 이상을 탐지할 수 있어요. 이 방식은 순차 데이터 패턴에 최적화된 RCF 알고리즘을 사용해요:

ml action='train' algorithm='rcf' <number_of_trees> <shingle_size> <sample_size> <output_after> <time_decay> <anomaly_rate> <time_field> <date_format> <time_zone>

매개변수

고정 시간(fixed-in-time) RCF 알고리즘은 다음 매개변수를 지원해요.

매개변수 필수/선택 설명
number_of_trees 선택 포리스트(forest)의 트리 수예요. 기본값은 30이에요.
shingle_size 선택 shingle의 레코드 수예요. shingle은 가장 최근 레코드의 연속된 시퀀스예요. 기본값은 8이에요.
sample_size 선택 이 포리스트의 스트림 샘플러가 사용하는 샘플 크기예요. 기본값은 256이에요.
output_after 선택 결과가 반환되기 전에 스트림 샘플러가 필요로 하는 포인트 수예요. 기본값은 32예요.
time_decay 선택 이 포리스트의 스트림 샘플러가 사용하는 감쇠(decay) 계수예요. 기본값은 0.0001이에요.
anomaly_rate 선택 이상 비율이에요. 기본값은 0.005이에요.
time_field 필수 RCF가 시계열 데이터로 사용할 시간 필드예요.
date_format 선택 time_field의 형식이에요. 기본값은 yyyy-MM-dd HH:mm:ss예요.
time_zone 선택 time_field의 시간대예요. 기본값은 UTC예요.
category_field 선택 입력 값을 그룹화하는 데 사용되는 카테고리 필드예요. predict 작업은 각 카테고리에 독립적으로 적용돼요.

비시계열(non-time-series) 데이터 이상 탐지

이 구문을 사용해 순서가 중요하지 않은 데이터의 이상을 탐지할 수 있어요. 이 방식은 독립 데이터 포인트에 최적화된 RCF 알고리즘을 사용해요:

ml action='train' algorithm='rcf' <number_of_trees> <sample_size> <output_after> <training_data_size> <anomaly_score_threshold>

매개변수

배치(batch) RCF 알고리즘은 다음 매개변수를 지원해요.

매개변수 필수/선택 설명
number_of_trees 선택 포리스트의 트리 수예요. 기본값은 30이에요.
sample_size 선택 훈련 데이터셋에서 각 트리에 제공되는 무작위 샘플 수예요. 기본값은 256이에요.
output_after 선택 결과가 반환되기 전에 스트림 샘플러가 필요로 하는 포인트 수예요. 기본값은 32예요.
training_data_size 선택 훈련 데이터셋의 크기예요. 기본값은 전체 데이터셋 크기예요.
anomaly_score_threshold 선택 이상 점수 임계값이에요. 기본값은 1.0이에요.
category_field 선택 입력 값을 그룹화하는 데 사용되는 카테고리 필드예요. predict 작업은 각 카테고리에 독립적으로 적용돼요.

K-means 클러스터링

이 구문을 사용해 유사성에 따라 데이터 포인트를 클러스터로 그룹화해요:

ml action='train' algorithm='kmeans' <centroids> <iterations> <distance_type>

매개변수

K-means 클러스터링 알고리즘은 다음 매개변수를 지원해요.

매개변수 필수/선택 설명
centroids 선택 데이터 포인트를 그룹화할 클러스터 수예요. 기본값은 2예요.
iterations 선택 반복 횟수예요. 기본값은 10이에요.
distance_type 선택 거리 타입이에요. 유효한 값은 COSINE, L1, EUCLIDEAN이에요. 기본값은 EUCLIDEAN이에요.

예제 1: 시계열 이상 탐지

이 예제는 RCF 모델을 훈련하고 시계열 이용량(tridership) 데이터의 이상을 탐지하는 데 사용해요:

source=nyc_taxi
| fields value, timestamp
| ml action='train' algorithm='rcf' time_field='timestamp'
| where value=10844.0

쿼리는 다음과 같은 결과를 반환해요:

value timestamp score anomaly_grade
10844.0 2014-07-01 00:00:00 0.0 0.0

예제 2: 카테고리별 시계열 이상 탐지

이 예제는 RCF 모델을 훈련하고 여러 카테고리 값에 걸친 시계열 이용량 데이터의 이상을 탐지하는 데 사용해요:

source=nyc_taxi
| fields category, value, timestamp
| ml action='train' algorithm='rcf' time_field='timestamp' category_field='category'
| where value=10844.0 or value=6526.0

쿼리는 다음과 같은 결과를 반환해요:

category value timestamp score anomaly_grade
night 10844.0 2014-07-01 00:00:00 0.0 0.0
day 6526.0 2014-07-01 06:00:00 0.0 0.0

예제 3: 비시계열 이상 탐지

이 예제는 RCF 모델을 훈련하고 비시계열 이용량 데이터의 이상을 탐지하는 데 사용해요:

source=nyc_taxi
| fields value
| ml action='train' algorithm='rcf'
| where value=10844.0

쿼리는 다음과 같은 결과를 반환해요:

value score anomalous
10844.0 0.0 False

예제 4: 카테고리별 비시계열 이상 탐지

이 예제는 RCF 모델을 훈련하고 여러 카테고리 값에 걸친 비시계열 이용량 데이터의 이상을 탐지하는 데 사용해요:

source=nyc_taxi
| fields category, value
| ml action='train' algorithm='rcf' category_field='category'
| where value=10844.0 or value=6526.0

쿼리는 다음과 같은 결과를 반환해요:

category value score anomalous
night 10844.0 0.0 False
day 6526.0 0.0 False

예제 5: Iris 데이터셋의 K-means 클러스터링

이 예제는 k-means 클러스터링을 사용해 각 샘플에서 측정한 네 가지 특징(꽃받침과 꽃잎의 길이와 너비)의 조합을 기준으로 세 가지 Iris 종(Iris setosa, Iris virginica, Iris versicolor)을 분류해요:

source=iris_data
| fields sepal_length_in_cm, sepal_width_in_cm, petal_length_in_cm, petal_width_in_cm
| ml action='train' algorithm='kmeans' centroids=3

쿼리는 다음과 같은 결과를 반환해요:

sepal_length_in_cm sepal_width_in_cm petal_length_in_cm petal_width_in_cm ClusterID
5.1 3.5 1.4 0.2 1
5.6 3.0 4.1 1.3 0
6.7 2.5 5.8 1.8 2

더 알아보기 (Learn more)