[머신러닝 순한맛] 이상 탐지(Anomaly Detection) vs Classification in Supervised Learning
어제보다 나은 사람이 되기

걱정보단 실행을, 그러나 계획적으로

Box World 자세히보기

AI/Coursera ( Machine Learning )

[머신러닝 순한맛] 이상 탐지(Anomaly Detection) vs Classification in Supervised Learning

Box형 2020. 5. 24. 00:37
반응형

실패에 대해 걱정하지 마라. 한번만 제대로 하면 된다.

- 드류 휴스턴(Dropbox 공동 창업자)

시작하며

 우리는 저번 포스팅에서 Anomaly Detection이란 무엇이며,이를 위한 알고리즘의 작동 원리까지 공부했습니다.

 이번 포스팅에서는 Anomaly Detection 알고리즘의 성능을 어떻게 평가할 수 있는지 그리고 Anomaly Detection과 Supervised Learning의 차이점을 알아보겠습니다.

 이번 포스팅은 아래 포스팅들을 통해 'Test / Cv data', 'Anomaly Detection'에 대해 이해하고 보시면 더욱 효과적입니다.

https://box-world.tistory.com/23

 

[머신러닝] 머신러닝 학습 시 고려해야할 것 : Test data와 Cv data란?

시작하며 우리가 데이터를 모델에 학습시킬 때, 모델이 학습한 결과와 실제값이 달라 accuracy(정확도) 가 떨어지는 상황에서 무엇을 할 수 있을까요? 더 많은 데이터를 넣어본다? 데이터의 표본이

box-world.tistory.com

https://box-world.tistory.com/35

 

[머신러닝 순한맛] 이상 탐지(Anomaly Detection)이란?

"기술에는 품위와 친절이 녹아있어야 한다." - 팀 쿡 - 시작하며 여기 암을 조기에 발견할 수 있는 인공지능을 만드는 개발자가 있습니다. 그 개발자는 우여곡절끝에 정확도 99.00%를 자랑하는 머��

box-world.tistory.com


Anomaly Detection 알고리즘 성능 측정하기

 우선 Anomaly Detection 알고리즘의 성능을 측정하는 방법에 대해 알아보겠습니다.

 기본적으로 성능 측정을 위해서는 학습에 사용될 데이터가 'Labeled Data'여야 합니다. 그래야 알고리즘이 데이터를 분류한 결과가 맞는지 틀린지 알 수 있기 때문입니다.

 따라서 우리에게 주어진 데이터가 'Unlabeled'일 경우, 보통 Anomaly 데이터의 Label을 $y = 1$로 하고, 그렇지 않은 정상적인 데이터의 Label은 $y=0$으로 설정하여 Labeled Data로 바꿔줍니다.

  저번 포스팅에서 다룬 비행기 엔진에 대한 Dataset을 예시로 들어보겠습니다. Dataset은 10000개의 정상적인 엔진20개의 비정상적인 엔진으로 구성되어 있습니다. 이때 비정상적인 엔진은 전체 데이터의 0.002%에 불과하기 때문에 이를 검출하기 위해서는 Anomaly Detection 알고리즘이 필요합니다. 

 우선 Dataset을 Training set : Test Set : Cv set = $6 : 2 : 2$로 나눕니다. 이때 Traing set에 들어가는 6000개의 데이터는 모두 정상적인 데이터 $(y=1)$로 구성하고, 20개의 비정상적인 데이터는 10개씩 나눠 'Test Set'과 'Cv Set'에 들어가게 됩니다.

 데이터를 나눈 후, Training set을 이용하여 $p(x)$ 함수를 만듭니다. 그리고 Cv / Test set을 여기에 집어넣어 결과값 $y = 1 or 0$인지 확인합니다. 이때 이를 구분짓는 경계(Threshold)를 $ε$으로 설정하여 이것보다 작으면 $y = 1$이라고 판단합니다.

 여기에서 더 나아가 보통 Anomaly Detection 알고리즘을 평가할 때는, 'Precision / Recall'을 이용한 'F1 Score'를 이용합니다. 따라서 Cv set을 이용하여 여러 $ε$에 대한 각 알고리즘의 F1 score를 이용하여 최적의 $ε$ 값을 찾아낼 수 있습니다. 그 후 최종적인 알고리즘을 평가할 때 Test set을 이용하게 됩니다.


Anomaly Detection vs Classification in Supervised Learning

 그런데 여기서 의문이 듭니다. 우리가 다루는 데이터가 Labeled data라는 점에서 굳이 Anomaly를 사용하지 않고, Supervised Learning의 Classification 알고리즘을 이용하여 비정상적인 데이터를 분류할 수는 없는 걸까요?

 결론은 Logistic Regression과 같은 알고리즘으로는 Anomaly한 데이터를 검출하는 것이 거의 불가능합니다. 왜냐하면 기본적으로 Anomaly Detection 알고리즘은 데이터를 분류할 때 '데이터의 밀도(Density)'를 이용합니다.

 예를 들어 정상적인 비행기 엔진이라면 대부분 비슷한 성능을 보일 것이므로 서로 뭉쳐있어 밀도가 높을 것입니다. 그러나 비정상적인 비행기 엔진은 정상적인 데이터들과는 동떨어져있기 때문에 밀도가 낮을 것입니다. 따라서 알고리즘은 이 밀도를 이용하여 밀도가 아주 낮은 데이터를 Anomaly하다고 판단하는 것입니다.

  이에 반해 'Logistic Regression'과 같은 알고리즘은 정상적인 데이터와 비정상적인 데이터가 각각 학습되어야 합니다. 즉 알고리즘이 분류할 때 단순히 정상적인 데이터가 아니니 비정상적인 데이터겠지가 아니라, 정상적인 데이터에 대한 학습 그리고 비정상적인 데이터에 대한 학습이 모두 이루어져야 하는 것입니다.

 그러니 우리가 비행기 엔진 Dataset의 경우, 비정상적인 데이터는 20개로 학습에 턱없이 부족하기 때문에 일반적인 Classification 알고리즘을 적용할 수 없는 것입니다.


Non - Gaussian Features

 우리는 Anomaly Detection 알고리즘에서 '가우시안 분포(Gaussian Distribution)' 기반의 $p(x)$ 함수를 이용하였습니다. 그런데 만약 특정 feature의 확률 밀도 함수가 일반적인 가우시안 분포의 모양을 띄지 않는다면, 해당 feature의 모든 data에 $\log{x}$나 $\sqrt{x}$를 적용해주면 이를 해결할 수 있습니다.

반응형