데이터 분석 및 학습

[ES/KIBANA] Multi-bucket Anomaly

모카롤 2022. 4. 8. 22:38

해당 게시글은 Elastic Search 공식 Blog의 글인 Interpreting multi-bucket impact anomalies using elastic machine learning features을 번역 및 정리했습니다. 

 


What is Multi-bucket Anomaly and Why?

 

하나의 time bucket에 대한 이상치를 아는 것뿐만 아니라 더 크게 보면서 흐름(trend)에 대한 이상치를 확인할 필요도 있다. 이에 따라서 ES에서는 기본적으로 multi bucket anomaly를 제공한다.

Multi-bucket anomaly란 말 그대로 여러 bucket을 기준으로 채용한 anomaly로 지난 12개의 bucket의 흐름을 기준으로 anomaly를 탐지한다.

 

How to interpret multi-bucket anomalies

아래에서 파란색 음영 부분은 모델을 의미하며, 현재 value들이 파란 선으로 나타나 있다. 

여기서 볼 수 있듯이, 금요일 값이 예측과 다르게 떨어졌음을 알 수 있다.

 

위 이상치 부분을 확대해보면 아래와 같으며, 검은 점선은 이상치가 발견된 순간(A)을 기준으로 전의 12개의 bucket에 대한 모델의 평균값을 연결한 선이다.

아래의 사진의 경우에는 실제 값들이 12개의 bucket에 대한 모델의 bound의 중간값 아래를 하행하고 있으며, 이것이 multi-bucket anomaly를 판단하는 대략적인 지표이다. 

이처럼 anomaly 판단을 기간(혹은 구역) 단위로 진행하기 때문에 모델 bound안에 있거나, 심지어 중간값과 유사한 bucket들이 있어도 multi-bucket anomaly로 판단될 수 있다. anomaly가 직관적이지 않다면, 단일 bucket이 아니라는 점을 잘 기억해서 해석해야 한다.

 

 

How to interpret high_* and low_* multi-bucket anomalies

아래 사진을 보면 알 수 있듯이 high_count detector에 model 내부의 값들이 이상치로 탐지되었다. 

심지어 밑의 Anomalies를 보면 검은 화살표가 가리키고 있는 한 이상치의 경우 원래 값(actual)이 예상 값(typical) 보다 더 낮았다. 

하지만 multi-bucket anomalies는 범위를 기준으로 이상치를 측정하기 때문에 12개의 bucket을 기준으로 전반적으로 값이 높다면 high_count의 이상치로 탐지가 될 수 있다. 

또한 그래프에서는 + 로 표시가 되어서 multi-bucket anomaly임을 알지만, Anomalies 표에는 다 ● 형식으로 표현이 되어 있어 알아보기 어려울 수 있다. 이럴 땐 표를 행 기준으로 늘리면 확인할 수 있다. 

 

그렇다면 low_*과 high_*의 detector가 공존하고 있다면 특정 anomaly가 두 가지 경우에 다 detect 될 수도 있는 걸까?

당연히 아니다. 범위를 기준으로 high인지 low인지 판단하고 있으므로, 특정 범위가 low로 판단된다면 해당 범위에 있는 bucket들은 다 low_* 에 detect 되고, high_*에 나타나지 않는다.

 

How Multi-bucket affect anomaly score?

Anomaly Score와 Multi-bucket anomaly score는 서로 무관하다(독립적이다). Multi-bucket anomaly score는 multi_bucket_impact라는 인자의 값이 2점 이상일 경우에 UI에 + 형식으로 찍히게 되는 것이다. 

그렇다면 어떻게 계산이 되는 걸까?

모든 single bucket은 크게 두 가지의 경우로 anomalous가 판단된다.

  1. 그 자체로 anomaly
  2. anomalous 한 범위에 속한 anomaly

그리고 판단하기 위해서 총 두 개의 확률을 계산한다. 

  1. 이 시점까지의 구축한 모델을 기준으로 해당 bucket이 extreme 할 확률
  2. 현재 bucket을 포함해 앞선 11개의 bucket을 봤을 때 anomaly 할 확률 

 

만약 두 확률을 비교해서 1과 2 확률이 유사하다면 multi-bucket anoamly score값은 0으로 지정한다. 하지만 1번 확률이 낮고(곧, 모델의 예측과 유사), 2번 확률이 높다면(일어날 확률이 낮은 bucket들을 가진 anomalous 구간에 속함) 높은 multi-bucket impact 값을 할당받게 된다.

(원문에서는 1번확률이 높고, 2번 확률이 낮다면 높은 multi-bucket impact 값을 할당한다고 나오는데, 제가 이해한 확률 대로라면 반대여야 할 것 같아서, 반대로 적었습니다.)

 

Conclusion

결국 Multi-bucket anomaly를 통해서 단순히 single bucket을 통해 bucket span 동안의 이상치를 탐지하는 것뿐만 아니라 조금 더 넓은(zoom-out) 시야로 더 넓은 범위에 대한 이상치를 탐지하는 insight를 가질 수 있게 된다.

단, 하나의 bucket에 대한 이상치가 아니므로, 예상과 달리 이상치 탐지가 될 수 있으므로, 이를 명심해야 한다.

 

 


공부하면서 이해하기 위해서 정리한 글입니다.

혹시 수정이 필요한 부분이 있거나, 추가할 내용이 있다면 편하게 코멘트 남겨주세요 :)