Anomaly Detection (AD)
What is Anomaly Detection?
Anomaly Detection은 데이터 내에 존재하는 비정상적인 패턴이나 이상치를 탐지하는 AI 컨텐츠입니다. 별도의 레이블링 작업 없이도 통계 및 Machine learning 기법을 활용하여 데이터의 정상 범주와 비정상 범주를 자동으로 구분해 냅니다. Anomaly Detection은 개별 데이터 포인트가 정상 범주에서 벗어나는지를 탐지하는 Point anomaly detection(PAD), 정상 패턴의 범주에서 벗어난 이상 패턴을 식별하는 Contextual anomaly detection(CAD, TBD), 그리고 다변량 데이터의 관계를 종합적으로 학습하여 비정상적인 시점과 패턴을 탐지하는 Multivariate anomaly detection(MAD, TBD) 모델을 제공합니다. 이렇게 Anomaly Detection은 데이터의 특성과 목적에 맞게 다양하게 활용될 수 있습니다.
When to use Anomaly Detection
Anomaly Detection 적용이 가능한 분야는 다음과 같습니다
- 제조 과정 이상치 탐지: 제조 과정 모니터링 센서로 제조 과정 중 이상 발생 여부를 확인하려는 고객을 위한 기능입니다. 이상 발생 여부를 탐지하여 문제를 사전에 방지할 수 있습니다.
- 시계열 이상치 탐지: 제조 과정 뿐만 아니라 주식, 각종 추세 데이터 등 시계열 데이터에 대하여 이상치를 확인하고자 하는 고객입니다. 해당 이상치를 조기에 탐지하여 사용자는 적절한 조치를 취할 수 있게 됩니다.
솔루션 적용 usecase는 다음과 같습니다.
유통 거래선 리턴 데이터 anomaly detection(TBD)
유통 거래선 데이터에 대해 리턴 물량이 갑작스럽게 많아질 경우 이상을 탐지하여 원인을 분석하는 솔루션입니다.
Key Features
Anomaly Detection은 빠르고 높은 효율성을 갖춘 통계 기반의 모델을 제공하여, 학습 리소스를 크게 필요로 하지 않으면서도 뛰어난 성능을 발휘합니다.
이는 제품 생산 과정에서 얻어진 일차원 데이터 내에서 이상치를 탐지하고자 하는 고객들에게 유용합니다. 또한 주가 추세 등과 같은 시계열 데이터에서 갑작스런 특이 사항이 발생한 포인트를 탐지하고자 하는 고객들에게도 유용한 솔루션입니다.
빠른 속도와 메모리 요구가 낮은 통계 기반 모델
Anomaly detection를 통해 우수하고 학습 리소스가 많이 필요하지 않은 효율적인 통계 및 머신러닝 기반의 모델을 손쉽게 사용할 수 있습니다. 빠른 속도와 메모리 요구가 낮은 DynamicThreshold, SpectralResidual과 같은 알고리즘을 기반으로 AD는 신뢰성 있고, 빠른 속도로 이상치를 탐지해낼 수 있습니다.
복수 컬럼에 대한 이상치 탐지 및 그룹 별 이상치 탐지
경우에 따라 각 포인트 마다 이상치 탐지를 하고 싶은 데이터가 여러 종류가 존재하거나, 서로 다른 그룹 혹은 센서 등에서 얻어진 데이터들을 그룹별로 이상 탐지를 진행해야 할 수 있습니 다. AD는 실험계획서의 argument만 변경해줌으로써 이를 쉽고 빠르게 진행할 수 있습니다.
실험계획서를 이용한 간편한 사용성
Anomaly Detection 중 Point Anomaly Detection 모델은 DynamicThreshold, SpectralResidual, stl_DynamicThreshodl, stl_SpectralResidual이라는 4가지 모델을 제공합니다. 이런 모델을 사용하기 위해 실험계획서의 argument만 변경하면 쉽게 사용할 수 있어, 간편하면서도 효율적인 사용성을 제공합니다.
Quick Start
설치하기
- ALO를 설치해주세요. 자세히 보기: Start ALO
- 하기 git 주소를 활용하여 컨텐츠를 설치해주세요. 자세히 보기: Use AI Contents (Lv.1)
- git url: https://github.com/mellerikat-aicontents/Anomaly-Detection.git
- 설치 코드:
git clone https://github.com/mellerikat-aicontents/Anomaly-Detection.git solution
(ALO 설치 폴더 내에서 실행)
데이터 준비
-
이상치를 탐지하고자 하는 1 dimensional 데이터가 컬럼으로서 존재하는 csv 파일을 준비합니다. 각 포인트 별로 여러 개의 데이터가 존재하는 경우도 가능합니다.
-
각 point 별 값은 실수여야 하며, 만약 값이 비워져있거나 NaN과 같은 값이 들어간 경우 자동으로 해당 row를 제외하게 됩니다. data.csv
time column x column 1 x column 2 grouupkey time 1 value 1_1 value 1_2 group1 time 2 value 2_1 value2_2 group2 time 3 value 3_1 value3_2 group1 ... ... ... ...
필수 parameter 설정
-
ad/experimental_plan.yaml
내 하기 데이터 경로를 수정해주세요. 학습만 진행할 경우load_train_inference_data_path
는 수정하지 않아도 됩니다.external_path:
- load_train_data_path: ./solution/sample_data/train/
- load_inference_data_path: ./solution/sample_data/test/ -
train_pipeline
에서x_columms
에 이상탐지를 하고자 하는 컬럼들을 리스트 형태로 입력해주세요.만약 데이터들을 그룹별로 묶어서 이상 탐지를 진행하려고 하는 경우 해당 컬럼을groupkey
부분에 리스트로 입력해주세요.time_column
에는 time 값들이 들어가 있는 컬럼을 입력해주세요.- step: train
args:
- x_columns : [x_column1, x_column2, ...]
groupkey: [groupkey_column_example]
time_column: [time_column_example]
train_models: all
decision_rule: two
hpo_repeat: 20 -
이 외에 존재하는 다양한 기능 설정과 같이 고급 파라미터 설정을 원하는 경우 우측 페이지를 참고해주세요. 자세히보기: Anomaly Detection Parameter
실행하기
- terminal 혹은 jupyter notebook에서 실행하면 됩니다. 자세히 보기: Develop AI Solution
- 실행 결과는 학습 완료된 모델파일과 예측 결과, 성능표가 저장됩니다.
Topics
AD Version: 2.0.1, ALO Version: 2.3.4