/KUDataOutlier

이상치 탐지 전처리 모듈

Primary LanguageJupyter Notebook

Anomaly Detection

시계열 데이터에 대한 이상치 탐지


1. Kernel Density Estimation을 활용한 이상치 탐지

  • train_data_pathtest_data_path에 존재하는 시점 정보를 포함하고 있는 csv 형태의 train data와 test data를 input으로 사용함
  • Train data로 kernel density estimation 모델을 적합하여 정상 데이터의 분포를 추정함
  • 추정된 분포를 기반으로 test data의 각 시점에 대한 anomaly score를 도출하고 이를 csv 파일 및 그래프로 save_root_path에 저장함
python kde.py --train_data_path='./data/nasa_bearing_train.csv' \
              --test_data_path='./data/nasa_bearing_test.csv' \
              --save_root_path='./result/kde'



2. Local Outlier Factor를 활용한 이상치 탐지

  • train_data_pathtest_data_path에 존재하는 시점 정보를 포함하고 있는 csv 형태의 train data와 test data를 input으로 사용함
  • Train data로 Local Outlier Factor 모델을 적합하여 n_neighbors 개수의 이웃을 기반으로 정상 데이터의 밀도를 추정함
  • 추정된 밀도를 기반으로 test data의 각 시점에 대한 anomaly score를 도출하고 이를 csv 파일 및 그래프로 save_root_path에 저장함
python lof.py --train_data_path='./data/nasa_bearing_train.csv' \
              --test_data_path='./data/nasa_bearing_test.csv' \
              --save_root_path='./result/lof' \
              --n_neighbors=5



3. Isolation Forest를 활용한 이상치 탐지

  • train_data_pathtest_data_path에 존재하는 시점 정보를 포함하고 있는 csv 형태의 train data와 test data를 input으로 사용함
  • Train data로 isolation forest 모델을 적합함
  • Train data를 reference set으로 사용하여 test data의 각 시점에 대한 anomaly score를 도출하고 이를 csv 파일 및 그래프로 save_root_path에 저장함
python iforest.py --train_data_path='./data/nasa_bearing_train.csv' \
                  --test_data_path='./data/nasa_bearing_test.csv' \
                  --save_root_path='./result/iforest'



4. Spectral Residual을 활용한 이상치 탐지

  • 설정된 window size 와 score window size 를 통해 window 구간 내 이상치를 탐지함
  • score window size 는 window size 보다 크게 설정해야함
python spectral.py --window= 24 \
                  --score_window=100