Luminiol CPD 개념

<개념>/시계열|2023. 12. 22. 16:34
반응형

Luminol을 알려면 Bitmap이 뭔지를 알아야함 (깃허브 살펴보면, bitmap 논문 참조했다고 주석에 나옴 http://alumni.cs.ucr.edu/~ratana/KumarN.pdf)

<1차이해>

우선 Bitmap은 카오스게임방식으로 패턴을 나타낸다. 이것은 단순한 숫자를 문자로 변환하여 패턴을 한눈에 살펴볼수 있도록 하는 알고리즘입니다. 하지만 이 알고리즘을 적용하기위해서는 이산 시퀀스형태로 만들어야하는데 우리가 사용하고자 하는 데이터는 시계열 실수 데이터. 이런 시계열 데이터를 이산 시퀀스로 변환해주는것이 바로 SAX알고리즘입니다 SAX 알고리즘은 타임시리즈 실수 데이터를 동일한 크기의 구간으로 나눕니다. 나눈 구간의 평균값을 계산한다음 그 구간을 전부다 그 평균값으로 대체해버리는 방식으로 타임시리즈 데이터를 이산시퀀스로 변환해줍니다. 그리하여 연속된 실수값 타임시리즈값을 → 일정 구간으로 나누어 평균값으로 바꾸어버려 이산시퀀스로 만들고 → 구간별로 baabccbc같은 문자로 패턴을 얻을수 있다. → 얻어낸 문자패턴을 카오스게임에 적용하여 시각화할수 있습니다.

anomaly detection을 하는방법은 다음과 같습니다. 1) 타임시리즈는 lead 윈도우와 lag 윈도우로 나뉜다. 두개의 크기는 다를수 있으며 lead window는 예측하고자하는 window, lag window는 선행 윈도우로 대체적으로 lead window이전의값을 의미합니다. 이 각각의 window에 속한 타임시리즈는 앞에서처럼 sax알고리즘을 사용하여 문자열로 바꾸고 → 문자열로 바꾼값을 quad tree안에 집어넣어서 정리하여 두개의 bitmap를 생성합니다.→ 두개 비트맵사이의 거리는 아래식으로 구합니다. (이 구한 숫자가 바로 이상탐지값이고, 이 숫자 높을수록 이상치값이 높다고 판단합니다.) 이 과정을 쭉 반복하면서 이상치값을 구하고 새롭게 구한 이상치값으로 재구성한 그래프를 내놓은게 바로 luminol 입니다.

 

코드를 살펴본결과 Luminol울 수행할때 lead window, lag window 의 디폴트 크기는 전체 데이터 길이의 0.2/16 즉 약 1.25% 를 차지하도록 설정해줍니다. 그리고 너무 작은 데이터사이즈나 너무 큰 데이터 사이즈의 경우를 대비해서 min,max사이즈도 정해두었습니다. 아래코드처럼 chunk_size(=윈도우크기)를 사용자가 직접 설정하지 않으면 디폴트값으로 진행되는것으로 확인하였습니다.

그리고 lag window와 future_window(=lead window)값을 비교하는 함수를 살펴보니 위논문에서 구한 식과 동일한것을 확인하였습니다.

 

<2차이해>

 

더욱 구체적인 예제로는 https://www.researchgate.net/publication/249889424_Time-series-bitmap_Based_Approach_to_Analyze_Human_Postural_Control_and_Movement_Detection_Strategies_during_Small_Anterior_Perturbations 논문과, luminol github에서 참조하였다는 bitmap논문의 이전버전 논문인 http://alumni.cs.ucr.edu/~ratana/KumarN.pdf 를 참조하였습니다.

  1. 슬라이딩 윈도우방식으로 타임시리즈데이터를 처음부터 2개윈도우창으로 나누어서 끝까지 훝는다. 2개 window는 Lag window와 Lead window(github에서는 future 윈도우)
  2. SAX알고리즘을 통해 타임시리즈 데이터를 문자열로 만들어줍니다. (연속된 실수를 일정단위별로 끊어서 평균값을 구하고 계단형으로 변환, 그 변환된것을 문자열로 변경
  3. 아래 예제에서는 4*4 크기 윈도우를 사용하였고 aaaaaaaa에서 aa가 8개 존재하기 때문에 aa항에 7을 넣어줍니다. aaaa의 경우는 aa가 3개 있기 때문에 aa항에 3을 넣어줍니다.
  4. 이 윈도우를 0-1사이의값으로 변환해줍니다. 왼쪽 figure에서는 0-white, 1-black으로 변환해준다라고 표현하였고, 오른쪽 figure에서는 normalize한다라고 표현하였습니다.
  5. 0-1로 재구성한 4*4그래프 2개값을 가지고 score를 구합니다. 오른쪽 figure를 기준으로 살펴보면 aaaaaaaa 와 aaa의 차이는(lagwindow-futurewindow)^2로 구하며 (1-1)^2=0으로 anomaly score이 0입니다.

github에서 소개하는 bitmap 논문의 이전 버전 논문을 찾아낸본결과(http://alumni.cs.ucr.edu/~ratana/KumarN.pdf) normalize해서 색깔별로 나타내보면 다음과같이 비슷한 타임시리즈 데이터일수록 매우 흡사한 컬러배치를 보인다는것을 알수 있습니다.

반응형

댓글()