Supported algorithms
출처: 문서
본문
지원되는 알고리즘
OpenSearch는 클러스터 내에서 기본적으로 실행되는 내장 기계 학습(ML) 알고리즘을 제공해요. 이 알고리즘들은 이상 탐지, 클러스터링, 예측 분석과 같은 작업에 사용할 수 있어요. 외부 ML 모델이나 서비스 없이 OpenSearch에서 직접 데이터를 분석할 수 있게 해 주죠. 각 알고리즘은 메트릭에서 비정상 패턴을 감지하거나 유사한 데이터 포인트를 그룹화하는 등 특정 사용 사례에 최적화되어 있어요.
일반적인 제한 사항
Localization 알고리즘을 제외하고, 다음 알고리즘들은 모두 인덱스에서 10,000개의 문서만 입력으로 검색할 수 있어요.
K-means
K-means는 Tribuo 라이브러리를 기반으로 구축된 간단하고 널리 사용되는 비지도 클러스터링 ML 알고리즘이에요. K-means는 무작위로 중심을 선택한 다음, 각 관측치가 가장 가까운 평균을 가진 클러스터에 속할 때까지 반복적으로 계산하여 중심 위치를 최적화해요.
파라미터
| 파라미터 | 타입 | 설명 | 기본값 |
|---|---|---|---|
centroids |
integer | 생성된 데이터를 그룹화할 클러스터의 수 | 2 |
iterations |
integer | 평균이 생성될 때까지 데이터에 대해 수행할 반복 횟수 | 10 |
distance_type |
enum, such as EUCLIDEAN, COSINE, or L1 |
중심 간 거리를 측정하는 측정 유형 | EUCLIDEAN |
지원되는 API
예제
다음 예제는 Iris Data 인덱스를 사용하여 k-means를 동기식으로 학습해요.
POST /_plugins/_ml/_train/kmeans
{
"parameters": {
"centroids": 3,
"iterations": 10,
"distance_type": "COSINE"
},
"input_query": {
"_source": ["petal_length_in_cm", "petal_width_in_cm"],
"size": 10000
},
"input_index": [
"iris_data"
]
}
제한 사항
학습 과정은 멀티스레딩을 지원하지만, 스레드 수는 CPU 수의 절반 미만이어야 해요.
Linear regression
Linear regression은 입력과 출력 간의 선형 관계를 매핑해요. ML Commons에서 linear regression 알고리즘은 공개 기계 학습 라이브러리인 Tribuo에서 채택되었으며, 다차원 선형 회귀 모델을 제공해요. 이 모델은 Linear Decay, SQRT_DECAY, ADA, ADAM, RMS_PROP와 같은 널리 사용되는 접근 방식을 포함한 선형 최적화 학습을 지원해요.
지원되는 최적화 도구: SIMPLE_SGD, LINEAR_DECAY_SGD, SQRT_DECAY_SGD, ADA_GRAD, ADA_DELTA, ADAM, and RMS_PROP.
지원되는 목적 함수: ABSOLUTE_LOSS, HUBER, and SQUARED_LOSS.
지원되는 momentum_type: STANDARD and NESTEROV.
파라미터
| 파라미터 | 타입 | 설명 | 기본값 |
|---|---|---|---|
target |
String | 예측할 대상 변수의 이름. 학습 중에 모델이 예측하도록 학습할 특성을 식별해요. | NA |
learning_rate |
Double | 반복 최적화 알고리즘에서 사용되는 초기 단계 크기. | 0.01 |
momentum_factor |
Double | 가중치가 조정되는 속도를 가속화하는 추가 가중치 요소. 최소화 루틴이 지역 최소값에서 벗어나도록 도와줘요. | 0 |
epsilon |
Double | 그래디언트 역전을 안정화하는 값. | 1.00E-06 |
beta1 |
Double | 모멘트 추정을 위한 지수 감쇠율. | 0.9 |
beta2 |
Double | 모멘트 추정을 위한 지수 감쇠율. | 0.99 |
decay_rate |
Double | RMSProp(Root Mean Squared Propagation). | 0.9 |
momentum_type |
String | 정의된 SGD(Stochastic Gradient Descent) 모멘텀 유형으로, 그래디언트 벡터를 올바른 방향으로 가속화하여 빠른 수렴을 유도해요. | STANDARD |
optimiser |
String | 모델에 사용되는 최적화 도구. | ADA_GRAD |
objective |
String | 사용되는 목적 함수. | SQUARED_LOSS |
epochs |
Integer | 반복 횟수. | 5 |
batch_size |
Integer | 최소 배치 크기. | 1 |
logging_interval |
Integer | 학습 반복 중 로깅 빈도. 로깅을 비활성화하려면 -1로 설정해요. |
-1 |
seed |
Long | 재현 가능한 결과를 위한 난수 시드. 난수 생성기의 초기화를 제어해요. | 12345 |
지원되는 API
예제
다음 예제는 이전에 학습된 linear regression 모델을 기반으로 새로운 예측을 생성해요.
예제 요청
POST _plugins/_ml/_predict/LINEAR_REGRESSION/ROZs-38Br5eVE0lTsoD9
{
"parameters": {
"target": "price"
},
"input_data": {
"column_metas": [
{
"name": "A",
"column_type": "DOUBLE"
},
{
"name": "B",
"column_type": "DOUBLE"
}
],
"rows": [
{
"values": [
{
"column_type": "DOUBLE",
"value": 3
},
{
"column_type": "DOUBLE",
"value": 5
}
]
}
]
}
}
예제 응답
{
"status": "COMPLETED",
"prediction_result": {
"column_metas": [
{
"name": "price",
"column_type": "DOUBLE"
}
],
"rows": [
{
"values": [
{
"column_type": "DOUBLE",
"value": 17.25701855310131
}
]
}
]
}
}
제한 사항
ML Commons는 선형 확률적 경사 학습기 또는 최적화 도구만 지원하며, 이는 학습된 데이터의 비선형 관계를 효과적으로 매핑할 수 없어요. 복잡한 데이터셋과 함께 사용하면 선형 확률적 학습기가 수렴 문제와 부정확한 결과를 초래할 수 있어요.
RCF
Random Cut Forest(RCF)는 주로 비지도 이상 탐지에 사용되는 확률적 데이터 구조예요. 또한 밀도 추정 및 예측에도 사용돼요. OpenSearch는 이상 탐지를 위해 RCF를 활용해요. ML Commons는 다양한 사용 사례를 위해 두 가지 새로운 RCF 변형을 지원해요:
- Batch RCF: 시계열이 아닌 데이터에서 이상을 탐지해요.
- FIT(Fixed in time) RCF: 시계열 데이터에서 이상을 탐지해요.
파라미터
RCF는 다음 파라미터를 지원해요.
Batch RCF
| 파라미터 | 타입 | 설명 | 기본값 |
|---|---|---|---|
number_of_trees |
integer | 포레스트의 트리 수. | 30 |
sample_size |
integer | 포레스트의 스트림 샘플러에서 사용하는 샘플 크기. | 256 |
output_after |
integer | 결과가 반환되기 전에 스트림 샘플러에 필요한 포인트 수. | 32 |
training_data_size |
integer | 학습 데이터의 크기. | 데이터셋 크기 |
anomaly_score_threshold |
double | 이상 점수의 임계값. | 1.0 |
Fit RCF
time_field를 제외한 모든 파라미터는 선택 사항이에요.
| 파라미터 | 타입 | 설명 | 기본값 |
|---|---|---|---|
number_of_trees |
integer | 포레스트의 트리 수. | 30 |
shingle_size |
integer | 최근 레코드의 연속 시퀀스인 싱글(shingle). | 8 |
sample_size |
integer | 포레스트의 스트림 샘플러에서 사용하는 샘플 크기. | 256 |
output_after |
integer | 결과가 반환되기 전에 스트림 샘플러에 필요한 포인트 수. | 32 |
time_decay |
double | 포레스트의 스트림 샘플러에서 사용되는 감쇠 계수. | 0.0001 |
anomaly_rate |
double | 이상 비율. | 0.005 |
time_field |
string | (필수) RCF가 시계열 데이터로 사용할 시간 필드. | N/A |
date_format |
string | time_field 필드의 날짜 및 시간 형식. |
yyyy-MM-ddHH:mm:ss |
time_zone |
string | time_field 필드의 시간대. |
UTC |
지원되는 API
제한 사항
FIT RCF의 경우, 과거 데이터로 모델을 학습하고 학습된 모델을 인덱스에 저장할 수 있어요. Predict API를 사용하면 모델이 역직렬화되어 새로운 데이터 포인트를 예측해요. 하지만 인덱스의 모델은 시간에 고정되어 있기 때문에 새 데이터로 갱신되지 않아요.
RCF Summarize
RCF Summarize는 CURE(Clustering Using Representatives) 알고리즘을 기반으로 한 클러스터링 알고리즘이에요. 무작위 반복을 사용하여 클러스터링하는 k-means와 달리, RCF Summarize는 계층적 클러스터링 기법을 사용해요. 이 알고리즘은 실제 중심 분포보다 더 큰 무작위로 선택된 중심 집합으로 시작해요. 반복 중에 너무 가까운 중심 쌍은 자동으로 병합돼요. 따라서 중심의 수(max_k)는 고정된 k 클러스터 수와 달리 실제 분포에 맞는 합리적인 클러스터 수로 수렴해요.
파라미터
| 파라미터 | 타입 | 설명 | 기본값 |
|---|---|---|---|
max_k |
Integer | 허용되는 최대 중심 수. | 2 |
distance_type |
String. Valid values are EUCLIDEAN, L1, L2, and LInfinity |
중심 간 거리를 측정하는 데 사용되는 측정 유형. | EUCLIDEAN |
지원되는 API
예제: 학습 및 예측
다음 예제는 주어진 데이터 프레임에서 클러스터 중심을 추정하고 각 샘플에 대한 클러스터 레이블을 제공해요.
예제 요청
POST _plugins/_ml/_train_predict/RCF_SUMMARIZE
{
"parameters": {
"centroids": 3,
"max_k": 15,
"distance_type": "L2"
},
"input_data": {
"column_metas": [
{
"name": "d0",
"column_type": "DOUBLE"
},
{
"name": "d1",
"column_type": "DOUBLE"
}
],
"rows": [
{
"values": [
{
"column_type": "DOUBLE",
"value": 6.2
},
{
"column_type": "DOUBLE",
"value": 3.4
}
]
}
]
}
}
예제 응답
예측 결과의 rows 파라미터는 길이를 위해 수정되었어요. 응답 본문에는 더 많은 행과 열이 포함될 수 있어요.
{
"status": "COMPLETED",
"prediction_result": {
"column_metas": [
{
"name": "ClusterID",
"column_type": "INTEGER"
}
],
"rows": [
{
"values": [
{
"column_type": "DOUBLE",
"value": 0
}
]
}
]
}
}
Localization
Localization 알고리즘은 집계 데이터(예: 시간별 집계)에서 스파이크, 하락, 변화 또는 이상과 같은 관심 활동을 보여주는 하위 집합 수준의 정보를 찾아요. Localization은 데이터 탐색이나 근본 원인 분석과 같은 다양한 시나리오에 적용되어 집계 데이터에서 관심 활동을 유발하는 기여자를 노출할 수 있어요.
파라미터
filter_query와 anomaly_start를 제외한 모든 파라미터는 필수예요.
| 파라미터 | 타입 | 설명 | 기본값 |
|---|---|---|---|
index_name |
String | 분석할 데이터 컬렉션. | N/A |
attribute_field_names |
List | 엔터티 키의 필드. | N/A |
aggregations |
List | 값에 대한 필드 및 집계. | N/A |
time_field_name |
String | 타임스탬프 필드. | null |
start_time |
Long | 시간 범위의 시작. | 0 |
end_time |
Long | 시간 범위의 끝. | 0 |
min_time_interval |
Long | 분석을 위한 최소 시간 간격/스케일. | 0 |
num_outputs |
Integer | 로컬라이제이션/슬라이싱에서 얻는 최대 값 수. | 0 |
filter_query |
Long | (선택 사항) 분석을 위한 데이터 컬렉션을 줄여요. | N/A |
anomaly_star |
Time units | (선택 사항) 데이터가 분석될 이후의 시간. | N/A |
예제: Localization 실행
다음 예제는 RCA 인덱스에 대해 Localization을 실행해요.
예제 요청
POST /_plugins/_ml/_execute/anomaly_localization
{
"index_name": "rca-index",
"attribute_field_names": [
"attribute"
],
"aggregations": [
{
"sum": {
"sum": {
"field": "value"
}
}
}
],
"time_field_name": "timestamp",
"start_time": 1620630000000,
"end_time": 1621234800000,
"min_time_interval": 86400000,
"num_outputs": 10
}
예제 응답
API는 지정된 시간 간격에서 알고리즘이 실행될 때마다 집계별 기여도와 기본 값의 합계를 응답해요.
{
"results" : [
{
"name" : "sum",
"result" : {
"buckets" : [
{
"start_time" : 1620630000000,
"end_time" : 1620716400000,
"overall_aggregate_value" : 65.0
},
{
"start_time" : 1620716400000,
"end_time" : 1620802800000,
"overall_aggregate_value" : 75.0,
"entities" : [
{
"key" : [
"attr0"
],
"contribution_value" : 1.0,
"base_value" : 2.0,
"new_value" : 3.0
},
{
"key" : [
"attr1"
],
"contribution_value" : 1.0,
"base_value" : 3.0,
"new_value" : 4.0
},
{
...
},
{
"key" : [
"attr8"
],
"contribution_value" : 6.0,
"base_value" : 10.0,
"new_value" : 16.0
},
{
"key" : [
"attr9"
],
"contribution_value" : 6.0,
"base_value" : 11.0,
"new_value" : 17.0
}
]
}
]
}
}
]
}
제한 사항
Localization 알고리즘은 직접 실행만 가능해요. 따라서 ML Commons Train 및 Predict API와 함께 사용할 수 없어요.
로지스틱 회귀
분류 알고리즘인 로지스틱 회귀는 입력 변수가 주어졌을 때 이산 결과의 확률을 모델링해요. ML Commons에서 이러한 분류는 이진 분류와 다중 클래스 분류를 모두 포함해요. 가장 일반적인 것은 두 가지 값(예: '참/거짓' 또는 '예/아니오')을 취하고 지정된 값을 기반으로 결과를 예측하는 이진 분류예요. 또는 다중 클래스 출력은 유형에 따라 다양한 입력을 분류할 수 있어요. 따라서 로지스틱 회귀는 입력이 지정된 범주에 가장 잘 맞는 방식을 결정하려는 상황에서 가장 유용해요.
지원되는 최적화 도구: SIMPLE_SGD, LINEAR_DECAY_SGD, SQRT_DECAY_SGD, ADA_GRAD, ADA_DELTA, ADAM, RMS_PROP.
지원되는 목적 함수: HINGE and LOGMULTICLASS.
지원되는 모멘텀 유형: STANDARD and NESTEROV.
매개변수
| 매개변수 | 유형 | 설명 | 기본값 |
|---|---|---|---|
learning_rate |
Double | 반복 최적화 알고리즘에서 사용되는 초기 단계 크기예요. | 1 |
momentum_factor |
Double | 가중치가 조정되는 속도를 가속화하는 추가 가중치 요소예요. 이는 최소화 루틴이 지역 최소값에서 벗어나도록 도와줘요. | 0 |
epsilon |
Double | 기울기 반전을 안정화하기 위한 값이에요. | 0.1 |
beta1 |
Double | 모멘트 추정을 위한 지수 감쇠율이에요. | 0.9 |
beta2 |
Double | 모멘트 추정을 위한 지수 감쇠율이에요. | 0.99 |
decay_rate |
Double | RMSProp(Root Mean Squared Propagation)이에요. | 0.9 |
momentum_type |
String | 기울기 벡터를 올바른 방향으로 가속화하여 빠른 수렴을 이끄는 SGD(Stochastic Gradient Descent) 모멘텀이에요. | STANDARD |
optimiser |
String | 모델에서 사용되는 최적화 도구예요. | ADA_GRAD |
target |
String | 대상 필드예요. | null |
objective |
String | 목적 함수 유형이에요. | LOGMULTICLASS |
epochs |
Integer | 반복 횟수예요. | 5 |
batch_size |
Integer | 최소 배치 크기예요. | 1 |
logging_interval |
Integer | 여러 반복 후 손실 로그의 간격이에요. 알고리즘에 로그가 없으면 간격은 1이에요. |
1000 |
지원되는 API
예제: Iris 데이터로 학습/예측
다음 예제는 OpenSearch에서 Iris 데이터셋으로 인덱스를 생성한 다음 로지스틱 회귀를 사용하여 데이터를 학습해요. 마지막으로 학습된 모델을 사용하여 행별로 구분된 Iris 유형을 예측해요.
Iris 인덱스 생성
이 요청을 사용하기 전에 Iris 데이터를 다운로드했는지 확인하세요.
PUT /iris_data
{
"mappings": {
"properties": {
"sepal_length_in_cm": {
"type": "double"
},
"sepal_width_in_cm": {
"type": "double"
},
"petal_length_in_cm": {
"type": "double"
},
"petal_width_in_cm": {
"type": "double"
},
"class": {
"type": "keyword"
}
}
}
}
IRIS_data.txt에서 데이터 수집
POST _bulk
{ "index" : { "_index" : "iris_data" } }
{"sepal_length_in_cm":5.1,"sepal_width_in_cm":3.5,"petal_length_in_cm":1.4,"petal_width_in_cm":0.2,"class":"Iris-setosa"}
{ "index" : { "_index" : "iris_data" } }
{"sepal_length_in_cm":4.9,"sepal_width_in_cm":3.0,"petal_length_in_cm":1.4,"petal_width_in_cm":0.2,"class":"Iris-setosa"}
...
...
로지스틱 회귀 모델 학습
이 예제는 다중 클래스 로지스틱 회귀 분류 방법론을 사용해요. 여기서는 target 매개변수에 표시된 대로 class를 기준으로 중심점을 분류하도록 모델을 학습하기 위해 꽃받침과 꽃잎의 길이 및 너비 입력이 사용돼요.
요청
{
"parameters": {
"target": "class"
},
"input_query": {
"query": {
"match_all": {}
},
"_source": [
"sepal_length_in_cm",
"sepal_width_in_cm",
"petal_length_in_cm",
"petal_width_in_cm",
"class"
],
"size": 200
},
"input_index": [
"iris_data"
]
}
응답 예시
model_id는 Iris의 클래스를 예측하는 데 사용돼요.
{
"model_id" : "TOgsf4IByBqD7FK_FQGc",
"status" : "COMPLETED"
}
결과 예측
학습된 Iris 데이터셋의 model_id를 사용하여 로지스틱 회귀는 입력 데이터를 기반으로 Iris의 클래스를 예측해요.
POST _plugins/_ml/_predict/logistic_regression/SsfQaoIBEoC4g4joZiyD
{
"parameters": {
"target": "class"
},
"input_data": {
"column_metas": [
{
"name": "sepal_length_in_cm",
"column_type": "DOUBLE"
},
{
"name": "sepal_width_in_cm",
"column_type": "DOUBLE"
},
{
"name": "petal_length_in_cm",
"column_type": "DOUBLE"
},
{
"name": "petal_width_in_cm",
"column_type": "DOUBLE"
}
],
"rows": [
{
"values": [
{
"column_type": "DOUBLE",
"value": 6.2
},
{
"column_type": "DOUBLE",
"value": 3.4
},
{
"column_type": "DOUBLE",
"value": 5.4
},
{
"column_type": "DOUBLE",
"value": 2.3
}
]
},
{
"values": [
{
"column_type": "DOUBLE",
"value": 5.9
},
{
"column_type": "DOUBLE",
"value": 3.0
},
{
"column_type": "DOUBLE",
"value": 5.1
},
{
"column_type": "DOUBLE",
"value": 1.8
}
]
}
]
}
}
응답 예시
{
"status" : "COMPLETED",
"prediction_result" : {
"column_metas" : [
{
"name" : "result",
"column_type" : "STRING"
}
],
"rows" : [
{
"values" : [
{
"column_type" : "STRING",
"value" : "Iris-virginica"
}
]
},
{
"values" : [
{
"column_type" : "STRING",
"value" : "Iris-virginica"
}
]
}
]
}
}
제한 사항
수렴 메트릭은 Tribuo의 트레이너에 내장되어 있지 않아요. 따라서 ML Commons는 ML Commons API를 통해 수렴 상태를 표시할 수 없어요.
메트릭 상관관계
The metrics correlation feature is an experimental feature released in OpenSearch 2.7. It can't be used in a production environment. To leave feedback on improving the feature, create an issue in the ML Commons repository. {: .warning }
메트릭 상관관계 알고리즘은 메트릭 데이터 집합에서 이벤트를 찾아요. 알고리즘은 여러 메트릭이 동시에 비정상적인 동작을 보이는 시간 창을 이벤트로 정의해요. 메트릭 집합이 주어지면 알고리즘은 발생한 이벤트 수, 각 이벤트가 발생한 시점을 계산하고 각 이벤트에 관련된 메트릭을 결정해요.
메트릭 상관관계 알고리즘을 활성화하려면 다음 클러스터 설정을 업데이트하세요:
PUT /_cluster/settings
{
"persistent" : {
"plugins.ml_commons.enable_inhouse_python_model": true
}
}
매개변수
메트릭 상관관계 알고리즘을 사용하려면 다음 매개변수를 포함하세요.
| 매개변수 | 유형 | 설명 | 기본값 |
|---|---|---|---|
metrics |
Array | 시계열 내에서 비정상적인 동작과 상관관계를 가질 수 있는 메트릭 목록이에요. | N/A |
입력
메트릭 상관관계 입력은 M x T 메트릭 데이터 배열이에요. 여기서 M은 메트릭 수이고 T는 각 개별 메트릭 값 시퀀스의 길이예요.
알고리즘에 메트릭을 입력할 때 다음을 가정해요:
- 각 메트릭에 대해 입력 시퀀스의 길이는 T로 동일해요.
- 모든 입력 메트릭은 동일한 해당 타임스탬프 집합을 가져야 해요.
- 총 데이터 포인트 수는 M * T <= 10000이에요.
예제: 간단한 메트릭 상관관계
다음 예제는 메트릭 수(M)를 3으로, 시간 단계 수(T)를 128로 입력해요:
POST /_plugins/_ml/_execute/METRICS_CORRELATION
{"metrics": [[-1.1635416, -1.5003631, 0.46138194, 0.5308311, -0.83149344, -3.7009873, -3.5463789, 0.22571462, -5.0380244, 0.76588845, 1.236113, 1.8460795, 1.7576948, 0.44893077, 0.7363948, 0.70440894, 0.89451003, 4.2006273, 0.3697659, 2.2458954, -2.302939, -1.7706926, 1.7445002, -1.5246059, 0.07985192, -2.7756078, 1.0002468, 1.5977372, 2.9152713, 1.4172368, -0.26551363, -2.2883027, 1.5882446, 2.0145164, 3.4862874, -1.2486862, -2.4811826, -0.17609037, -2.1095612, -1.2184235, 0.63118523, -1.8909532, 2.039797, -0.5317177, -2.2922578, -2.0179775, -0.07992507, -0.12554549, -0.2553092, 1.1450123, -0.4640453, -2.190223, -4.671612, -1.5076426, 1.635445, -1.1394824, -0.7503817, 0.98424894, -0.38896716, 1.0328646, 1.9543738, -0.5236269, 0.14298044, 3.2963762, 8.1641035, 5.717064, 7.4869685, 2.5987444, 11.018798, 9.151356, 5.7354255, 6.862203, 3.0524514, 4.431755, 5.1481285, 7.9548607, 7.4519925, 6.09533, 7.634116, 8.898271, 3.898491, 9.447067, 8.197385, 5.8284273, 5.804283, 7.7688456, 10.574343, 7.5679493, 7.1888094, 7.1107903, 8.454468, 8.066334, 8.83665, 7.11204, 4.4898267, 8.614764, 6.336754, 11.577503, 3.3998494, 9.501525, 13.17289, 6.1116023, 5.143777, 2.7813284, 3.7917604, 7.1683135, 7.627272, 7.290255, 3.1299121, 7.089733, 9.140584, 8.844729, 9.403275, 10.220029, 8.039719, 8.85549, 4.034555, 4.412663, 7.54451, 7.2116737, 4.6346946, 7.0044127, 9.7557, 10.982841, 5.897937, 6.870126, 3.5638695, 5.7872133], [1.3037996, 2.7976995, -0.12042701, 1.3688855, 1.6955005, -2.2575269, 0.080582514, 3.011721, -0.4320283, 3.2440786, -1.0321085, 1.2346085, -2.3152106, -0.9783513, 0.6837618, 1.5320586, -1.6148578, -0.94538075, 0.55978125, -4.7430468, 3.466028, 2.3792691, 1.3269067, -0.35359794, -1.5547276, 0.5202475, 1.0269136, -1.7531714, 0.43987304, -0.18845831, 2.3086758, 2.519588, 2.0116413, 0.019745048, -0.010070452, 2.496933, 1.1557871, 0.08433053, 1.375894, -1.2135965, -1.2588277, -0.31454003, 0.045949124, -1.7518936, -2.3533764, -2.0125146, 0.10255043, 1.1782314, 2.4579153, -0.8780899, -4.1442213, 3.8300152, 2.772975, 2.6803262, 0.9867382, 0.77618766, 0.46541777, 3.8959959, -2.1713195, 0.10609512, -0.26438138, -2.145317, 3.6734529, 1.4830295, -5.3445525, -10.6427765, -8.300354, -1.9608921, -6.6779685, -10.019544, -8.341513, -9.607174, -7.2441607, -3.411102, -6.180552, -8.318714, -6.060591, -7.790343, -5.9695, -7.9429936, -3.775652, -5.2827606, -3.7168224, -6.729588, -9.761094, -7.4683576, -7.2595067, -6.6790915, -9.832726, -8.352172, -6.936336, -8.252518, -6.787475, -9.091013, -11.465944, -6.712504, -8.987438, -6.946672, -8.877166, -6.7854185, -3.6417139, -6.1036086, -5.360772, -4.0435786, -4.5864973, -6.971063, -10.522461, -6.3692527, -4.387658, -9.723745, -4.7020173, -5.097396, -9.903703, -4.882414, -4.1999683, -6.7829437, -6.2555966, -8.121125, -5.334131, -9.174302, -3.9752126, -4.179469, -8.335524, -9.359406, -6.4938803, -6.794677, -8.382997, -9.879416], [1.8792984, -3.1561708, -0.8443318, -1.998743, -0.6319316, 2.4614046, -0.44511616, 0.82785237, 1.7911717, -1.8172283, 0.46574894, -1.8691323, 3.9586513, 0.8078605, 0.9049874, 5.4086914, -0.7425967, -0.20115769, -1.197923, 2.741789, 0.85432875, -1.1688408, -1.7771784, 1.615249, -4.1103697, 0.4721327, -2.75669, -0.38393462, -3.1137516, -2.2572582, 0.9580673, -3.7139492, -0.68303126, 1.6007807, 0.6313973, -2.5115106, 0.703251, 2.4844077, -1.7405633, -3.007687, 2.372802, 2.4684637, 0.6443977, -3.1433117, 0.05976736, -1.9809214, 3.514713, 2.1880944, 1.242541, 1.8236228, 0.8642841, -0.17313614, 1.7042321, 0.8298376, 4.2443194, 0.13983983, 1.1940852, 2.5076652, 39.285202, 82.73858, 44.707516, -4.267148, 0.25930226, 0.20799652, -3.7213502, 1.475217, -1.2394199, -0.0034497892, 1.1413965, 55.18923, -2.2969518, -4.1400924, -2.4707043, 43.193188, -0.19258368, 3.471275, 1.1374166, 1.2147579, 4.13017, -2.0576499, 2.1529694, -0.28360432, 0.8477302, -0.63012695, 1.2569811, 1.943168, 0.17070436, 3.2358394, -2.3737662, 0.77060974, 4.99065, 3.1079204, 3.6347675, 0.6801177, -2.2205186, 1.0961101, -2.4445753, -2.0919478, -2.895031, 2.5458927, 0.38599384, 1.0492333, -0.081834644, -7.4079595, -2.1785216, -0.7277175, -2.7413428, -3.2083786, 3.2958643, -1.1839997, 5.4849496, 2.0259023, 5.607272, -1.0125756, 3.721461, 2.5715313, 0.7741753, -0.55034757, 0.7526307, -2.6758716, -2.964664, -0.57379586, -0.28817406, -3.2334063, -0.22387607, -2.0793931, -6.4562697, 0.80134094]]}
응답 예시
API는 다음 정보를 반환해요:
event_window: 이벤트 간격event_pattern: 시간 창 전체의 강도 점수와 이벤트의 전체 심각도suspected_metrics: 관련된 메트릭 집합
다음 응답 예시에서 각 항목은 메트릭 데이터에서 발견된 이벤트에 해당해요. 알고리즘은 요청의 입력 데이터에서 하나의 이벤트를 찾아요. 이는 event_pattern 출력의 길이가 1인 것으로 표시돼요. event_window는 이벤트가 시간 지점 $t$ = 52와 $t$ = 72 사이에 발생했음을 보여줘요. 마지막으로 suspected_metrics는 이벤트에 세 가지 메트릭이 모두 관련되었음을 보여줘요.
{
"function_name": "METRICS_CORRELATION",
"output": {
"inference_results": [
{
"event_window": [
52,
72
],
"event_pattern": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.99625e-05, 0.0001052875, 0.0002605894, 0.00064648513, 0.0014303402, 0.002980127, 0.005871893, 0.010885878, 0.01904726, 0.031481907, 0.04920215, 0.07283493, 0.10219432, 0.1361888, 0.17257516, 0.20853643, 0.24082609, 0.26901975, 0.28376183, 0.29364157, 0.29541212, 0.2832976, 0.29041746, 0.2574534, 0.2610143, 0.22938538, 0.19999361, 0.18074994, 0.15539801, 0.13064545, 0.10544432, 0.081248805, 0.05965102, 0.041305058, 0.027082501, 0.01676033, 0.009760197, 0.005362286, 0.0027713624, 0.0013381141, 0.0006126331, 0.0002634901, 0.000106459476, 4.0407333e-05, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
"suspected_metrics": [0,1,2]
}
]
}
}