Anomaly Detection - 이상탐지
이상탐지에는 오토인코더, PCA를 비롯한 다양한 방법론이 있고 최근에는 AutoML로도 탐지 할 수 있지만 이번에 알아 보고자 하는 내용은 쉽게 알 수 있는 비지도 학습의 K means clustering이다.먼저 Kmeans clustering에 대하여 알아 보자.
1. Kmeans Clustering이란
- Kmeans clustering은 말 그대로 데이터가 모인 라벨을 찾아 내는 알고리즘이다. 단, 비지도 학습으로 데이터에 라벨이 없을 때 해당 라벨을 찾아내는 알고리즘이다. 즉, X → Y' 최적화하는 딥러닝 지도 학습이 아니고 라벨을 모를 때
1,2,3,4,5 → A 클러스터
10,20,30,40,50 → B 클러스터
100, 101, 102, 103, 104 → C클러스터
이런 방식으로 데이의 패턴을 보고 먼저 학습을 하는 것이다. 그러면 그룹을 할당할 수 있고 해당 그룹에는 중심점이 있다. 예를 들면 1,2,3,4,5에서는 3이 중심점이다.
이상으로 K means clustering의 설명을 마치겠다. 장단점은 다른 곳에도 설명이 잘 나와 있으니(예. 장점은 구현이 쉽고 단점은 이상치에 변동을 많이 받는 등) 해당 블로그나 논문을 참조하면 될 것이고 이번에는 코드의 구현을 참조 하도록 한다.
2. Kmeans clustering 코드
2.1 라이브러리 임포트
2.2 클러스터 개수 설정 및 데이터 예측
임의로 클러스터의 개수를 설정해주고 데이터를 예측해 준다.(초간단)
2.3 제대로 계산히 되었는 지 검증하기 위해 중심위치와 중심사이즈 계산
2.4 시각화(Optional)
모든 값이 0과 1이므로 다음과 같이 나오는 것이 정상
2.5 Scipy의 zscore를 통해 통계적으로 outlier를 계산하여 이상데이터를 계산
- Zscore: 99.7 %의 값이 Z의 값에 있어야 한다는 것. 그렇지 않으면 이상치로 간주.
- 이러한 이론에 따라서 다음과 같은 코드를 작성
-3 < Z < 3 사이에 있지 않은 값은 이상 값으로 간주
- 다른 탐지 기술도 그렇지만 실제로 적용 시에는 도메인 지식을 사용하고 회의를 해야 함.
- 본 예제에서는 다음과 같은 결과 값이 나옴
다음에는 오토인코더를 통한 이상탐지를 다뤄보도록한다.