Azure ml 에서 모듈 하나로 시계열 이상 징후 검출 방법
안녕하세요~이 번에는 시계열 이상징후 모듈을 사용 해볼껀데요!!!
이 모듈을 통해서 시계열 이상 징후 검출을 할 수 있습니다.
Time Series > Time Series Anomaly Detection 를 가지고 오시면 됩니다.
다음과 같이 데이터를 시계열 이상 탐지 모듈에 연결을 하시고
그 다음 시계열 이상 탐지 모듈 옵션에서 Data Column, Time Column 통해서 사용할 데이터는 무엇이며 시간은 어떤 열에 있는지를 알려줍니다. 그리고 시간 설정에서는 유효한 날짜/시간 형식을 따르지 않으면 에러가 발생합니다.
이런식으로 연결만 했다면 벌써 시계열 이상탐지를 할 수 있습니다..!!! 끝!!!
그러나 좀 더 섬새한 작업을 위해 !! 다른 옵션들을 살펴 보겠습니다.
처음 나오는 옵션은 Martingale Type!!!
PowerAvg와 Power 두가지가 있는데요!!
PowerAvg : 이 옵션은 최소화된 구현입니다. 추가 매개 변수가 없어 보다 안정적인 이상 징후 검출기를 제공하므로 대부분의 요구 사항에 적합해야 합니다.
Power : 사용자에게 엡실론(epsilon) 파라미터의 값을 제공하여 검출기의 감도를 제어하는 옵션을 제공한다. 일반적으로 엡실론(epsilon)값이 높을수록 이상 징후에 대한 민감도는 높아지지만 확실성은 낮아집니다.
그 다음은 Strangeness function 입니다~!!!
세가지 패턴을 감지 할 수 있는데요!!!
상향 및 하향 변화의 크기, 긍정적 추세 변화, 부정적 추세 변화 이렇게 세가지 패턴을 감지 할 수 있습니다.
예를 들어 일정 기간 동안 웹 서비스에 대한 일일 요청 수를 모니터링했는데 요청 수가 특정 범위 내에 있는 것으로 나타난다고 가정합니다. 그런데 웹 서비스에 대한 업데이트 후 해당 웹 서비스에 대한 요청 수가 변경되어 새로운 추세는 원래 추세보다 높거나 낮을 수 있으며, 상향 및 하향 스파이크를 모두 감지할 수 있다.
또는 서비스 지원 사이트의 대기 열 길이를 모니터링한다고 가정합니다. 지속적인 상향 추세는 기본적인 서비스 문제를 나타낼 수 있습니다. 다른 경우에는, 지속적인 부정적 경향이 비정상일 수도 있습니다. 예를 들어 서버에서 메모리 사용량을 모니터링하는 경우 사용 가능한 메모리 크기가 줄어들면 잠재적인 메모리 누수를 나타낼 수 있습니다.
다음은 Length of Martingale History, Length of Strangeness Value History가 있습니다.
Length of Martingale History : Length of Martingale History같은 경우 조회 기록에 대한 martingale값을 계산하는 데 사용할 기록 창의 크기를 지정합니다. 기본 값은 500이지만 0과 5000사이의 정수를 지정할 수 있습니다.
Length of Strangeness Value History : Length of Strangeness Value History는 각 데이터 지점에서 이상을 계산하는 데 사용되는 기록 창의 길이를 지정합니다. 기본 값은 500이지만 0과 5000사이의 정수를 지정할 수 있습니다.
이 매개 변수들은 "정상" 동작을 학습하는 데 필요한 예상 데이터 포인트 수로 값을 설정해야 합니다.
대부분의 경우 기본 값인 500이 잘 작동하지만 "정상" 으로 측정되는 척도가 다르면 'Strangeness' 의 길이를 'Martingale' 의 길이보다 큰 값으로 지정하는 것이 유리할 수 있습니다.
마지막으로 경고 임계값을 설정할 수 있습니다.
Alert Threshold (경고 임계값) : 이상 징후 점수가 경고를 생성하는 값을 지정합니다.
기본 값은 3.25입니다. 즉, 3.25점 이상의 점수를 포함하는 모든 행에 대해 경고가 생성됩니다. 0과 100사이의 부동 소수 점 번호를 지정할 수 있습니다. 임계값이 낮으면 검출기가 이상 징후에 더 민감해 지고 더 많은 경보가 생성됩니다. 그러다 보니 임계값이 낮으면 정상적인 변경 사항이 이상 징후로 잘못 분류될 수 있습니다.
그럼 다시 돌아와 Strangeness function 패턴 세가지를 실험해 보겠습니다.
먼저 Range Percentile을 실험해 보겠습니다~~
다음과 같은 데이터가 있다고 가정 후 이것을 Azure ml에 가져 옵니다.
가저 오시고 Time Series Anomaly Detection 연결 후
데이터를 열어보시면 14번 부터 상향 하향 범위가 급격히 늘어 난 것을 볼 수 있습니다.
그럼 실행을 해보시면 다음과 같이 급격하게 늘어난 구간에서 이상을 감지하는 것을 볼 수 있습니다.
다음은 상향 이상감지인 SlowPosTrend 입니다.
다음 처럼 연결 후 열어보시면
계속 100씩 늘어나다 갑자기 400, 1600씩 늘려보았습니다.
그랬더니 그곳에서 이상이 감지되는 것을 볼 수있습니다.
마지막으로 하향 이상 감지인 SloSlowNegTrend 입니다.
다음과 같이 100씩 떨어지다 1000이상 떨어 지는 것을 볼 수 있습니다.
그 결과 그곳에서 이상이 감지되는 것을 볼 수 있습니다.
이 처럼 상황에 맞게 Strangeness function 패턴을 정하면 Azure ml에서 모듈 하나만가지고도 시계열 이상 징후 검출을 할 수 있답니다!!!