이상 감지 - Anomaly Detection

개요 - overview

흔히 이상감지 또는 이상징후감지라고 부르며 영어로는 “anomaly detection”라고 한다. 이상감지(Anomaly Detection)는 데이터 분석 기법 중의 한가지이며 근래에 생긴 것은 아니며 오래전부터 있어왔지만 빅데이터와 더불어 최근에 다소 각광 받고 있는 분석 분야이다.

당연한 말이 되겠지만 이상한 것을 찾는 것을 이상감지라고 한다. 이상감지는 문제가 발생하는 시점을 기준으로 두 가지로 나눌 수 있다.

  1. 어떤 대상의 현재까지의 상태가 이상한지를 감지하는 것
  2. 어떤 대상이 미래에 문제가 발생할 여지가 있는지 감지하는 것

이상감지는 사실상 1번의 경우가 대부분인데 2번에서 말한 미래에 발생한 문제가 있는지는 예측(forecasting) 분야와도 겹치는 것이 많으며 미래를 예측하는 것은 매우 어려운 일이기 때문이다.

이상감지는 이상이 발생한 것을 빨리 알아내는 것과 문제가 아직 발생하지 않아지만 특이한 것인지를 확인하는 두가지로 나눌 수 있다.

시스템이나 서비스 운영에서는 이상한 것을 빨리 알아채고 그대로 내버려둔다면 미래에 틀림없이 문제가 생길 것을 조기에 감지하는 것이 집중하며, 데이터 분석에서는 가치로 활용할만한 사실이 있는지 데이터를 사용해서 비즈니스 운영이나 개선에 도움이 될 인사이트를 발굴하는 쪽에 집중한다.

이상 패턴 - abnomal pattern

이상징후에서 말하는 패턴는 매우 광의적인 것으로 정의하기가 모호하지만 세분화하면 다음과 같다.

  • 과거에 발생하지 않았던 것인데 최근에 발생한 것들
  • 확률적으로 매우 드물게 발생한 것들이 갑자기 빈발하게 발생
  • 논리적으로 함께 발생할 수 없거나 발생하지 않아야 하는 어떤 규칙(금지된 행위 또는 물리적으로 발생 불가능한 사건)이 발생
  • 일반적인 상황에서 크게 벗어난 예측하지 못한 패턴. 즉 평소의 추이에서 크게 벗어난 극단값

알고리즘 - algorithm

이상감지는 특별한 알고리즘이나 방법이 정해진 것이 없다. 단지 특정 도메인(특정 업무) 또는 특정한 문제에 대해 별개의 방법을 고안해서 사용하거나 기존의 통계나 기계학습 방법을 응용해서 사용한다.

가장 쉽게 접근할 수 있는 것이 통계학에서 다루는 방법을 이용하는 것이고 복잡하게는 데이터마이닝이나 기계학습을 이용할 수도 있다. 즉, 이상감지라고 알려진 정해진 방법은 몇가지 없으며 그런 방법들도 모든 상황과 데이터에 적합하지 않고 특정 상황에 대해서 적합한 경우가 많아 모델을 상황이나 의도에 맞게 만들어서 접근해야 한다.

만약 이상감지를 위해서 가장 좋은 알고리즘을 찾아서 그것만 쓰고 싶다는 생각을 하고 있다면 현실적이지 않으므로 접근방법을 바꿔야 한다.

이상감지와 기계학습 - anomaly detection with machine learning

이상징후는 그 특징상 훈련데이터(Training set)을 확보하기가 매우 어렵다. 그렇기 때문에 분류(classification) 알고리즘들은 이상징후감지에 사용하기 어렵다. 그로 인해 대부분의 이상징후감지는 규칙 기반(rule based)이거나 군집화 계열(clustering based), 패턴을 찾아내는 탐색형(searching) 알고리즘들이거나 이런 것들을 조합하는 방식이 된다.

현재 가장 유력한 기술로는 확률에 기반한 베이지안 계열의 통계 모형들이다.

학습장벽 - learning curve

각 개별 도메인(업무 영역)에 경험이 없는 경우 당장 이상감지 모델을 만들거나 과제를 진행 하기는 어렵다. 우선 문제를 정의하고 좋은 방법을 선택하는 것부터 상당히 어렵고 그뒤로 그에 맞는 방법을 고안하고 수리 또는 통계모혀을 만들거나 기술 난이도 높은 기계학습을 사용해야 하기 때문에 학습 장벽(learning curve)이 매우 높다고 볼 수 있다.

앞서 말했듯이 기술적인 부분을 해결하기 위해서 잘 알려진 몇개의 알고리즘으로 현실에서 주어지는 다양한 문제를 모두 해결하기는 어렵고 분야 전문가(Domain Expert)의 통찰을 얻어서 그것을 찾기 위한 감지 모델을 직접 여러 알고리즘을 이용해서 구현하거나 아니면 스스로 규칙을 찾아내고 찾을 수 있는 방법을 고안하는 것이 일반적이다.

이상감지라는 것이 단순히 생각하면 생각하면 그냥 뭔가 이상한 것을 찾으면 된다고 생각하겠지만 문제를 구체화하고 난 뒤에는 실현하기 매우 어렵다는 것을 깨닫게 된다.

데이터의 이상치 즉, 노이즈를 감지하는 것과 맥락이 같으며 보통 쉽게는 중심값이나 대표값들에서 크게 벗어난 것은 이상한 것이라다는 전제로 이상한 것을 찾아내는 것이다. 그래서 관련 기법들은 모두 비교적 단순한 것들과 단순한 것들에서 발전시킨 것들을 사용하지만 실제 수행에는 많은 노력이 필요한 것이 특징이다.

이상감지(anomaly detection)과 아웃라이어 감지(outlier detection)의 차이

이상감지와 함께 자주 볼 수 있는 용어로는 아웃라이어 감지가 있다. 간단히 설명하면 아웃라이어는 시간과 관련이 없이 대상을 표현하는 숫자들의 위치를 보고 보편적인 대상과 벗어난 것을 찾아내는 것이고 이상감지는 흔히 시간 또는 흐름에 따른 패턴이 보편적인 상황 또는 보편적인 것들과는 다른지를 보고 감지하는 것이다.

이상감지는 시계열과 관련이 깊고 아웃라이어는 시간과는 대부분 관련이 없다.

처리 방법 - process

이상감지의 목표는 이상한 것을 알아차리는 것을 말한다.

  1. 이상한 것을 알아차리려면 “이상하지 않은 것” 즉 평범한 것(normal) 부터 정의를 해야한다. 당연한 것이지만 이것부터 정의가 제대로 되지 않으면 하기 어렵다.
  2. “이상하지 않은 것”을 보편적(normal)한 것으로 규정하고 그 뒤에 보편적인것과 비교해서 “이상한 것”을 정의한 뒤 그것을 찾는 모형(model)을 만들거나 분석을 통해 이상한 것에 부합되는 것을 찾으면 된다.

특징 및 문제

이상징후의 문제는 알고리즘도 중요하지만 그보다 데이터를 처리할 때 해야할 것이 매우 많으며 컴퓨터연산을 과하게 소모한다.

기계학습으로 이상감지를 접근하기 어려운 이유가 현실에서는 이상한 패턴이라고 발견하고 규정할 수 있는 학습데이터(training set)가 없거나 매우 부족해서 분류 모델을 만들 수 없는 경우가 대부분이므로 비지도학습(unsupervised learning)이나 통계 및 수리 모형을 만들게 되는데 이때 이상한 것을 찾기 위해 대량의 데이터를 여러 방법으로 결합하고 뒤져봐야 하는 경우가 많으며 특히 시계열 데이터는 이상감지와 같은 것을 하려면 처리 연산량이 매우 많다.

이상한 것에 대한 정의

결국 대부분의 경우 학습데이터를 사용할 수 없으므로 이상한 것(anomaly)을 찾기전에 이상하지 않은것(normal)이 무엇인지 개념 정리를 해야하고 이상하지 않은 것과 이상한 것을 구별하는 것으로 접근해야 한다.

이상감지의 실패 원인

보통 데이터사이언스 또는 빅데이터에서 이상감지 과제(proejct)를 실패하는 경우는 초보자들의 흔한 문제로 기계학습만으로만 이 문제를 해결하려는 경향이 크기 때문이다.

“이상하다”는 매우 상대적인 개념이며 그 자체로는 정의와 명세가 매우 부족하다는 것을 인지하고 더 구체화하지 못하면 대부분의 사례에서 문제를 해결할 수 없는 것을 흔히 볼 수 있다.

기계학습으로 이상감지를 잘 하지 못하는 이유

현실적인 기계학습으로 이상감지 또는 이상징후문제를 해결하기 매우 어렵다. 기계학습에 심취한 사람이거나 전공한 사람은 이상징후 감지 문제를 기계학습으로 해결할 수 있다고 주장하거나 맹목적으로 믿는 경향이 많다.

불가능하다는 것은 아니지만 이런 진입을 생각하는 사람들은 경험부족으로 인해 현실적인 문제를 간과한 경우가 많다.

엄밀히 말하면 지금까지 이상징후에 사용하는 알고리즘들은 대부분 통계기반의 기법이나 그냥 수리적 모형이 많다. 넓은 의미에서는 모두 기계학습이라고 볼 수 있기도 하지만 좁은 의미에서는 아니다.

기계학습으로 이상징후감지를 잘하지 못하는 몇가지 이유는 다음과 같다. (아직까지는 그렇다)

학습 데이터(ground truth)가 없거나 매우 부족하다

어떤 문제에 과거의 경험을 기반으로 이상한 것을 찾아본 경험이 있고 발견된 사례가 충분히 있다면 지도학습이든 비지도학습이든 이상징후감지를 수행할 수 있다. 하지만 그런 경우 대부분 기계학습 이전에 임계치기반으로 이상징후를 감지하는 모형이나 구현체를 이미 적용해서 사용하게 된다.

지도학습(supervised learning)에서의 문제

앞서 말했지만 학습데이터중에서도 ground truth 즉, 정답데이터가 없거나 매우 부족한 경우이다. 모든 지도학습 모형은 충분한 정답데이터가 확보되지 않으면 모델을 쉽게 만들 수 없다.

비지도학습(supervised learning)에서의 문제

연산력과 모델 작성에 소요되는 시간과 반복작업에 소요되는 시간이 많다. 비지도학습은 계산에 필요한 연산량(computation power)가 많이 소요되는데 모델을 만들어서 사용해 볼 수는 있겠지만 현실성이 매우 떨어지고 정확도도 높지 않은 문제가 있다.

이상한 것 같기도 하고 아닌것 같기도 한 것들

이것은 정의가 명확하지 않기 때문에 생기는 문제이다. 심증적으로 이상한 것 같지만 단정지을 수 없고 확신할 수 없는 경우가 많다. 대부분 문제는 이것이 정말 이상한 것인지 아닌지 알아내야 한다는 요구사항에 대해서 답을 할 수 없기 때문이다.

어떤 발견된 사례가 이상한 것인지 아닌지를 결정하는 것은 현업을 담당하는 domain expert가 결정을 해야하는 것이 가장 좋지만 domain expert 마저도 위험부담때문에 결정을 하지 못하는 경우가 많다. 데이터사이언스는 아웃라이어 감지 기법 중 적당한 것을 결합해서 EDA등을 통해 이상한 것을 결정할 수 있도록 도와줄 필요가 있다.

향 후 이상한 상황이 발생할지 미래에 대해 지금 알려달라고 하는 것

현실적으로 대부분 이런 요구사항을 받았다면 요구사항을 제공한 사람이 공상과학소설에 가까운 상상을 하고 있을 가능성이 크다. 인간의 기술로는 1초 뒤의 미래도 정확한 예측이 불가능하다.

과거의 데이터를 기반으로 추이를 보거나 회귀분석 같은 방법으로 예측을 해볼 수 있겠지만 틀리는 것이 다분히 많을 것이다. 기술적으로 시도하는 것은 충분히 가능하지만 요구사항에 대한 기대치를 만족시키기 어려운 경우가 많다.

오탐지(false alarm)에 대한 문제

이상을 감지했는데 오감지로 인해 발생하는 것 손실이 크다면 이상감지는 더욱 어려운 문제가 된다. 모든 분류 및 예측에 관련된 기계학습 기술이 동일한 문제와 부딪히지만 오탐지(false alarm)으로 인한 손해비용이 크다면 매우 높은 정확도를 탐지모델에 요구하게 되고 문제를 또다시 더 어렵게 만든다.

어느 정도의 정확도를 원하는지 얼마만큼의 false alarm을 수용할 수 있는지 요구사항을 주는 사람이 정확히 정의해 주어야하며 그렇지 않은 경우에는 업무를 담당하게 된 데이터사이언티스트가 제안을 해 주어야 한다.

활용분야

시스템 운영, 보안 관련 시스템, 제조업과 같은 공정 데이터 관리 등에 많이 활용되고 있으며, 사용자 행동(behavior)에 대해서도 활용이 가능하다. 그 외에 대부분의 비즈니스에 모두 활용이 가능하다. 광범위하다고 할 수 있다.

※참고

영어 단어를 abnormal로 하지 않고 anomaly로 하는 것을 철자 오류라고 생각할 수 있는데 anomaly는 영어사전에 등록된 단어이며 명확한 의미를 볼 때도 적절한 단어다. abnormal은 외관이나 모양에 대한 이상함을 뜻하며 anomaly는 속성, 성격, 성질 같은 것들이 이상한 것을 뜻한다고 한다. 영어 문화권의 네이티브(navive) 원주민이 아니면 이 뉘앙스를 구분하기 어렵다고 한다.

관련 알고리즘 및 방법

  • Sigma rule
  • Rosner’s Outlier Test
  • student t-distribution
  • Extreme Studentized Deviate (ESD) test
  • Generalized ESD
  • Linear Regression
  • LOESS
  • STL
  • LOF (Local Outlier Factor)