- Published on
이상탐지 방법론 소개
- Authors
- Name
- Shin, Byungjin
아주 예전에 썼던 글이지만, 수정하지 않고 다시 업로드하였다.
이상탐지는 정상이 아닌 데이터를 이상으로 분류하는 것을 말한다. 이상탐지는 많은 분야에서 다양한 목적으로 사용되고 있다. 분야나 목적에 따라 정상과 이상을 정의하는 기준이 다르다. 따라서 이상탐지에 대한 정의 또한 범용적으로 정의 내리기에는 무리가 있어 보인다. outlier, anomaly, abnormal, novel 등 다양한 용어가 쓰인다. 단어 간의 미묘한 차이가 있지만, 대체적으로는 outlier와 anomaly detection이 가장 많이 쓰인다. 이상에 대한 정의를 내린 예시를 들자면 다음과 같다.
- "다른 데이터와 눈에 띄게 멀리 있는 데이터"
- "다른 나머지 데이터 셋과 균질하다고 보기 어려운 데이터"
얼마나 멀리 떨어져있어야 눈에 띄게 멀고, 얼마나 달라야 균질하지 않은 것일까? 판단자에 따라 정상과 이상의 구분이 달라질 것이다. 아예 판단이 어려운 경우도 있을 수 있다. 명확한 판단 기준이 없어서 기존 데이터에서 정상과 이상을 구분하지 못하는 경우나, 이상이 발생하지 않았으나 미래의 이상을 알고 싶은 경우 등 보유하고 있는 데이터의 조건 또한 모두 다르다. 그러므로, 이상 탐지는 보유하고 있는 데이터에 따라 적용 방법이 구분된다. 보유 데이터 유형은 아래와 같이 크게 3가지로 구분된다.
- 정상과 이상에 대한 분류가 없는 경우: 비지도 학습(unsupervised learning)
- 정상과 이상에 대한 분류가 있는 경우: 지도 학습(supervised learning)
- 정상에 대한 분류만 있는 경우: 반지도 학습(semi-supervised learning)
정상과 이상에 대한 분류가 없는 경우에는 주로 비지도 학습 방법을 사용한다. 군집 분석(clustering), 밀도 추정(Density estimation), PCA 등의 방법들을 주로 사용한다. 지도 학습을 사용하는 경우에는 주로 분류 방법을 사용한다. 반지도 학습의 예에는 one-class SVM, Autoencoder 등이 있다 학습의 난이도는 개인적으로 비지도>반지도>지도 순으로 높다고 생각한다. 그 이유는 학습된 모델의 성능을 평가하기가 까다롭다. 분류가 있는 경우에는 정확도, 재현율, 정밀도 등 성능 평가 지표가 많고, 계산이 간단하다. 반면에 비지도 학습은 분류값이 없어 앞서 언급한 성능 지표를 사용하는데 무리가 있다. Silhouette coefficient, Dunn Index 같은 지표로 평가하나 이상 탐지가 잘 되는지에 대해서는 알 수 없다.
또 다른 분류로는 통계적 모델을 사용하는지, 기계학습 모델을 사용하는 지 등으로 나눌 수 있다. 통계적인 방법 중에 가장 쉬운 방법은 정규 분포 등과 같이 잘 알려져 있는 분포를 추정하여 특정 유의확률 수준을 초과하는 값을 이상으로 처리하는 것이다. 딥러닝을 사용하는 방법 중에는 오토인코더를 사용하는 방법이 대표적이다. 오토인코더는 인코더와 디코더가 합쳐진 구조이다. 인코더의 역할은 데이터를 축소시키는 역할을 한다. 디코더는 축소된 데이터를 원본과 가깝게 복원시키는 것이 목표이다. 축소된 데이터를 복원하는 과정에서 정보가 손실된다. 이러한 구조를 이용하여 정상 데이터만을 학습할 경우 오토인코더는 적정 수준에서 정보가 손실되며, 이때 이상 정보를 제거하고 정상데이터와 가까운 값을 복원하게 된다. 따라서 원본과 오토인코더를 통해 복원된 데이터의 차이가 많을 경우 이상 데이터로 판단할 수 있게 된다. 지도 학습 외에 반지도와 비지도의 경우에는 크게 두가지 어려움이 있었다.
- 얼마나 민감하게 이상을 평가할 것인가
- 정상 데이터의 변화가 생기는 경우 이상으로 봐야 할 것인가
위의 예시와 같이 정규분포 상의 유의확률로 판별하거나 오토인코더를 사용하는 경우 모두 기준이 되는 값을 정해줘야 한다. 기준이 되는 값은 성능에 직접적인 영향을 주므로 이상을 감지하지 못했을 때의 리스크를 고려하여 섬세하게 결정해야 할 것이다. 항공기의 경우와 같이 결함이 초래하는 위험이 엄청나게 큰 경우 이상 감지가 자주되어 번거롭더라도 매번 확인하는 것이 안전할 것이다. 정상 데이터의 지속적인 변화로 인해 이상값이 점점 많아지는 경우에는 이를 이상으로 판단해야 할 것인지도 판단이 어려운 점인 것 같다.
[참조 했던 문헌]
- A survey of outlier detection methodologies
- https://medium.com/daria-blog/머신러닝-기반의-이상-탐지-part-1-8d2fa0811059