이상 감지 - Anomaly Detection

개요 - overview

한국어로는 이상감지 또는 이상징후감지라고 많이 부른다. 영어로는 “anomaly detection”이라고 한다. 이상감지(Anomaly Detection)는 데이터 분석 목적으로 분류한 것 중에 하나이며 데이터마이닝에 일부라고 본다. 근래에 갑지기 생긴 것은 아니며 상당히 오래전 부터 연구되어 왔지만 빅데이터와 더불어 비교적 최근에 조명받고 있다.

이상감지는 시계열 또는 시퀀스 분석의 일종이라고 생각하는 것이 기술적인 측면에서 처음 개념을 잡을 때 편하다. 하지만 통계학에서 말하는 시계열, 시퀀스 분석과 완전히 동일한 것이 아니라는 것에 주의한다.

정의 - definition

너무 당연해서 말장난처럼 보이기 쉽지만 이상한 것을 찾는 것을 이상감지라고 한다. 이상한 것을 찾는 것은 보편적이 아닌 것을 찾는 다는 것이며 이 용어에 모든 것이 들어 있다. 이상감지는 온라인, 오프라인 데이터 모두에 해당하지만 데이터를 가능한 빠른 시간내에 수집해서 감지하는데 사용하므로 온라인이나 오프라인이라고 데이터를 수집해서 실시간, 준실시간으로 수집할 수 있는 환경에서 사용하는 것이 조금 더 현실적이다.

현재 온라인 비즈니스에서 사람들이 주로 얘기하는 이상감지에 대한 정의는 다음과 같다.

시계열 데이터에서 과거 또는 비슷것한 시점의 다른 보편적인 패턴에서 벗어나거나 벗어나려는 징후가 있는 드문 패턴이나 사실, 대상 개체를 찾아내는 데이터 분석의 한 분야

시계열이 아닌 것 중에 이상한 것을 찾는 것은 대부분 아웃라이어 감지에서 다루고 있다. 아웃라이어 감지와 이상감지를 동일하게 취급하거나 구분하지 않는 경우도 있는데 이상감지도 넓은 의미에서는 아웃라이어 감지라고 볼 수 있기 때문이다.

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

이상감지를 처음 접하는 사람들은 이상감지가 기계학습의 영역인지 아닌지를 구분하기 어렵다.
이상감지는 기계학습 알고리즘을 사용할 수도 있고 통계학의 방법을 사용할 수도 있다. 이상감지에서 사실 수단은 별로 중요하지 않으며 결과를 더 우선한다. 목적에 따라 정의한 “이상한 것”을 찾고 감지할 수 있다는 어떤 방법이든 사용한다. 그리고 넓은 의미로는 통계적인 알고리즘을 사용하는 것도 기계학습이라고 할 수 있다.

기계학습을 통한 이상감지 모델의 실패 이유

이상감지에 대한 문제를 처음 접하는 사람들중에 기계학습에 대한 지식이 있는 사람들은 이상감지를 위해서 지도학습모형(supervised learning)을 사용하는 것을 시도하려는 경향이 많은데 이 자체는 잘못된 접근방법은 아니다. 다음과 같은 생각으로 접근하게 될 것이다.

이상한 것으로 태깅한 데이터를 만들거나 기존만들에 발견된 사례를 모으고 그 반대의 데이터를 적절히 섞어서 학습데이터셋을 만든 후에 이상한 것을 판별하는 모델을 만드는 시도를 하는 것이다. 즉 일반적인 분류, 예측 모델을 만드는 접근 방법이다.

하지만 실제로 문제를 들여다 보면 훈련데이터(Training set)을 확보하기가 매우 어려운 것이 문제라는 것을 금방 알게된다. 이것이 문제가 된다. 다음과 같은 문제를 알게 된다.

  1. 이상하다고 규정할 사례가 매우 적다. 정답데이터셋(training-set)이 매우 적다.
  2. 이상한 것이라고 사람이 지목한 것이 매우 애매하게 다른 정상인것과 뚜렷하게 구분되지 않는다. 구분할 수 있는 명확한 변수(variable), 자질(feature)을 찾기 힘들다.
  3. 정황상(경험상) 이상한 것이 맞다고 어떤 상황또는 데이터에 대해 판단했으나 정량적으로 이를 판별할 관측데이터가 없거나 만들기 어렵다. 감지할 때 사용할 수 있는 변수나 자질로 사용할 데이터를 얻을 수 없으며 사후에 결과적으로 알아낼 수 밖에 없다.

위의 문제로 흔히 말하는 분류(classification)에 사용하는 Decision Tree, SVM, Regression, DNN 같은 알고리즘들은 이상징후감지에 사용하기 어렵다고 알려져 있다.

비지도학습(Unsupervised learning)을 통한 이상감지

지도학습이 안된다면 비지도학습을 통해서 문제를 해결하려고 할 것이다. 이것이 어려운 것은 이상감지는 판별의 문제이기 때문에 어떻게라도 이상한지 아닌지를 판별해야 한다는 것이다. 비지도학습은 정답을 주고 비슷한 것을 찾는 문제를 해결하는 것은 일반적으로 부적합하다. 이상한 것이 아니라 따로 묶인 군집들을 구분해서 제시해 줄텐데 분리된 군집들 중에 이상한 것만 모여있는 모델을 만드는 것은 매우 어렵다.

반지도학습(Semi-supervised learning)을 통한 이상감지

기계학습을 이용한 방법 중에 가장 유력한 방법일 것이다. 소량의 정답데이터를 이용해서 비슷한 것을 찾아내거나 학습데이터를 확장시키는 방법이다. 문제는 이 기법자체나 매우 어려운 기법이고 좋은 모델을 만드는데 시간이 너무 오래 소요되는 것이다. 또 확장한 정답데이터가 어느 수준까지 정답으로 인정해야 할 것인지를 결정해야 하는 문제가 남게 된다.

이상감지와 통계적 방법 - Anomaly detection with Statistical Method

이상감지에 통계적인 방법이 주로 사용되는 이유는 통계학이 다루는 가장 기본적인 것이 보편성에 어긋나는지 아닌지를 확인하는 것이기 때문이다. 이상한 것이라는 것은 좁은 의미로는 보편성에서 벗어난 것이기 때문이다.

통계학을 통한 이상감지를 하기 위해서는 다음과 같은 갈래에서 출발하는 것이 일반적이다.

  • 아웃라이어 판별
  • 시계열 분석 기법
  • 확률 모델

위와 관련된 것은 너무 많아서 여기에 일일히 나열하기 어렵다. 즉 위와 관련된 모델이나 알고리즘 중에서 대부분의 문제를 해결할 수 있는 가장 유력하고 좋은 알고리즘이나 방법은 아직 없다.

대상의 문제 발생 시점에 의한 구분

이상감지는 찾아내고자 하는 문제가 발생하는 시점을 기준으로 두 분류로 나눌 수 있다.

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

두 가지는 거의 같은 말처럼 보이지만 난이도가 매우 다르며 접근 방법도 매우 달라진다. 아직까지 현실에서의 이상감지는 1번의 경우를 처리하는 것이 대부분인데 2번에서 말한 미래에 발생한 문제가 있는지는 예측(forecasting) 분야와도 겹치는 것이 많으며 미래를 예측하는 것은 매우 어려운 일이기 때문이다.

1번은 일종의 광범위한 모니터링이라고 할 수 있지만 일반적으로 말하는 임계치(Threshold)기반을 말하는 것이 아닌 가변임계치나 상황이 이전의 흔한 패턴과 다른 빨리 찾는 것이다.

2번은 사실 시계열 예측(time-series forecasting)의 일부라고 볼 수 있지만 시계열 예측(time-series forecasting)은 미래에 발생할 일을 정확히 예측하지만 이상감지는 미래에 이상해질 위험이 있는지 이상한 것이 발생할 확률이 높아질지를 예측하는 것으로 기술난이도가 훨씬 높다. 가능성은 있지만 판타지에 가깝다.

이상한 행동을 만들어내는 대상체의 특징은 다음과 같다.

  • 이상한 패턴을 보이지만 뚜렷하지 않음
  • 보편적인 것에 섞여 있으나 상대적으로 수가 매우 적음
  • 지금은 문제가 없지만 앞으로 문제가 발생할 확률이 있는 미묘한 차이가 있는 패턴

이상감지에서 찾으려고 하는 패턴은 뚜렷하지 않은 경우가 많다. 패턴이 뚜렷하고 쉽게 인지할 수 있는 것이라면 규칙기반의 방법을 조합해서도 감지를 해낼 수 있다. 하지만 애매하거나 잘 보이지 않는 것은 그것부터 찾아서 밝혀내야하고 그 자체가 쉽지 않다.

이상 패턴 - abnomal pattern

이상징후에서 말하는 패턴은 매우 광의적인 것으로 정의하기가 모호하지만 조금 더 구체적으로 하면 다음과 같다. 사실상 모두 아웃라이어를 뜻하는 것이다.

  • 과거에 확률적으로 매우 드물게 발생한 것들이 갑자기 빈발하게 발생
  • 논리적으로 함께 발생할 수 없거나 논리적 정합성 조합에 의해 나타나지 않아야 하는 것
  • 다른 군집이나 집단, 그룹 등에서는 나타나지 않는 것들이 보이는 것

이것들은 사실 앞서 말한 것과 크게 다르지 않다.

이상감지는 아웃라이어를 찾는 것이라고 보면 되는데 아웃라이어를 찾을 때의 비교대상이 과거의 시간, 다른 비슷한 군집등이 되고 이런 것들의 조합이 경우도 많다.

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

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

이상감지는 시계열과 관련이 깊고 아웃라이어는 시간과는 대부분 관련이 없다. 좁은 의미로 이상감지는 시계열에서 아웃라이어 패턴을 찾아내는 것을 말한다.

접근 방법 - approaches

이상감지의 목표는 감지이다. 이상한 것을 가능한 빨리 찾아야 하는 것이 주된 목표이다.

다음과 같은 정의하는 단계를 명확히 하고 시작해야 한다.

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

다음 단계로는 탐지 방법을 선택해야 하는데 이 부분이 가장 어렵다. 정해진 방법이 없기 때문이다.

다음에 대한 체크리스트를 확인해하는 것부터 시작한다.

  1. 기계학습을 할 수 있는 정답데이터가 있는가? 없는가?
  2. 시계열 데이터인가? 아닌가?
  3. 단변량인가? 다변량인가?
  4. 스코어링 모형이어야 하는가? 판별모형이어야 하는가?

1번의 경우에 정답데이터가 있다면 지도학습, 반지도학습을 통해서 문제를 해결하는 것을 시도해볼 수 있다. 다음과 같은 알고리즘을 후보에 두고 진행하는 것이 일반적이다.

  • Regression 계열
  • Time-series 계열
  • Decision Tree 계열 (주로 Random Forest나 몬테카를로가 적용된 계열)
  • Bayesian Network 계열

정답데이터가 없거나 매우 적다면 분류기반의 기계학습 알고리즘은 포기하는 것이 맞다.

2번의 문제는 outlier detection과 anomaly detection을 구분하는 것이며 anomaly detection이 연산량이 많이 들고 더 어렵다. 이상감지는 일반적으로 시계열 데이터인 경우가 많다. 만약 시계열 데이터가 아니라면 outlier를 찾는 각종 알고리즘이나 모델들을 찾아서 사용하면 된다.

3번의 문제 단변량과 다변량의 문제는 보통 시계열에서 문제가 되는데 다변량은 여러 변수를 모두 보고 이상한 상태를 종합적으로 판단하는 것으로 매우 어렵다. 현재 잘 알려진 유력한 알고리즘은 없다.

4번의 문제는 “이상하다”라고 표기만 해주면 되는지 “이상한 정도”가 얼마나 되는 점수화해서 후에 임계값으로 감지의 정확도와 민감도를 조절할 것인지이다. 역시 후자가 더 어렵다.

이상한 것에 대한 정의

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

  • 보편적인 것에서 벗어나는 것을 찾는다.
  • 수치상으로는 보통 평균에 가깝거나 다수에 가까운 것을 이상하지 않은 것으로 본다.

이상감지와 데이터 프로세싱 - Data processing on anomaly detection

이상징후의 문제는 알고리즘도 중요하지만 연산량이 매우 많이 소모되는 경향이 있다.

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

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

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

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

활용분야 - use case

시스템 운영, 보안 관련 시스템, 제조업과 같은 공정 데이터 관리 등에 많이 활용되고 있으며, 사용자 행동(behavior)에 대해서도 활용이 가능하다. 그 외에 대부분의 비즈니스에 모두 활용이 가능하다. 매우 광범위하다고 할 수 있다. 이상징후와 아웃라이어는 데이터마이닝에서 다루는 문제의 상당 부분과 관련이 있기 때문에 그럴 수 밖에 없다.

비즈니스 분석

비즈니스 분석에 있어서 이상감지는 대부분 데이터마이닝의 문제와 비슷하다. 관련된 현실에서의 문제를 찾으려고 하면 무궁무진하게 많다.

매출이 이전에 비해 떨어진 판매 채널

주문량이 이전에 비해서 증가한 거래처

구매량이 이전에 비해서 증가 또는 감소한 품목

다른 경쟁사로 이탈할 징후가 보이는 쇼핑몰 또는 서비스의 고객

그 자체로는 문제가 없지만 다른 상품의 판매에 의해 영향을 받는 제품

평소와 다른 공간 이동 패턴을 보이는 차량 또는 모바일 디바이스 사용자

시스템 관리

자원 사용량(메모리, 디스크IO, 네트워크IO 등)이 이전에 비해서 증가한 시스템

접속이 없었던 IP주소들로부터의 시스템 접근량의 증가 (DDOS의 징후)

지금은 문제가 없지만 이대로 간다면 틀림없이 다운될 것 같은 시스템 또는 시스템 클러스터

온라인 서비스 관리

이전에 비해서 증가한 로그인 실패 기록

이전에 발생하지 않은 에러코드의 기록 또는 더 빈발해진 기록

다른 사용자와 다른 이동패턴이나 접근 패턴을 보이는 사용자

공정 관리

불량품이 늘어날 것 같은 조짐이 보이는 공정

현재 불량률은 차이가 없지만 후에 불량품이 대량 발생되어 리콜될 것 같은 제품 라인

큰 고장이 발생할 것 같은 설비

보안

기밀문서 불출 횟수가 상대적으로 증가한 직원

임계치를 넘지는 않는 범위내에서 이전보다 증가한 보안 접근 실패

사람의 접근이 거의 없는 지역에 이전보다 다소 증가한 통행량

참고

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

기타

관련 알고리즘 및 방법

이상감지 알고리즘을 찾는 사람들이 많을텐데 생각보다 이상감지라고 정의되어 있는 알고리즘 수는 적다. 아래에 소개하는 것들은 비교적 잘 알려진 알고리즘들이며 이 것외에도 활용에 쓰이는 것은 매우 많다는 것을 알려둔다. 아웃라이어에 해당하는 알고리즘이나 방법은 제외하였다.

Twitter Anomaly Detection

Twitter Anomaly Detection, Twitter에서 발표한 이상감지 알고리즘이다. 알고리즘의 명칭은 S-H-ESD이지만 흔히 트위터이상감지 알고리즘이라고 부른다.

Statistical Anomaly Detection

이것은 알고리즘 이름이라고는 할 수 없는데 이베이에서 사용하는 통계적인 방법을 사용한 이상감지에 대한 내용이다.

Generalized ESD

트위터 알고리즘의 원형으로 알려져 있다. 트위터 이상감지 알고리즘이 이 알고리즘을 개량한 것이다.

Holt-winters filter

이상감지에도 많이 사용되는 홀트윈터스 필터. Elastic의 X-pack에서 이 알고리즘과 비교해서 더 성능이 좋다고 주장하고 있다.

Elastic X-pack anomaly detection

알고리즘이라기 보다는 엔진이라고 불러야 하는 것이 더 맞을 것이다. 여러가지 방법을 섞은 것으로 알려져 있고 소스코드는 오픈되어 있는 것으로 되어 있다.