TAD 입력 데이터 및 산출물 매뉴얼
Updated 2024.07.06
데이터 준비
TAD (Tabular Anomaly Detection)를 사용하기 위해서는 다음과 같은 데이터 준비가 필요합니다. TAD는 비지도 학 습을 기반으로 이상치를 탐지하므로, 라벨 컬럼(y 컬럼)은 필수가 아닙니다. 다만, 정상 데이터 양의 약 5%정도의 이상 데이터를 준비하는 것이 성능 향상에 도움이 됩니다.
학습 데이터 준비
- 이상 탐지를 하고자 하는 데이터 및 Feature 컬럼으로 이루어진 csv 파일을 준비합니다.
- label 컬럼은 optional 합니다.
- 그룹 별로 묶는 경우 그룹 별로 묶기 위한 컬럼이 존재해야 합니다.
학습 데이터셋 예시
x_col_1 | x_col_2 | time_col(optional) | grouupkey(optional) | y_col(optional) |
---|---|---|---|---|
value 1_1 | value 1_2 | time 1 | group1 | ok |
value 2_1 | value2_2 | time 2 | group2 | ok |
value 3_1 | value3_2 | time 3 | group1 | ng |
... | ... | ... | ... | ... |
input data directory 구조 예시
- ALO를 사용하기 위해서는 train과 inference 파일이 분리되어야 합니다. 아래와 같이 학습에 사용 할 데이터와 추론에 사용할 데이터를 구분해주세요.
- 하나의 폴더 아래 있는 모든 파일을 input asset에서 취합해 하나의 dataframe으로 만든 후 모델링에 사용됩니다. (경로 밑 하위 폴더 안에 있는 파일도 합쳐집니다.)
- 하나의 폴더 안에 있는 데이터의 컬럼은 모두 동일해야 합니다.
학습 데이터 디렉토리 구조 예시:
./{train_folder}/
└ train_data1.csv
└ train_data2.csv
└ train_data3.csv
검증 데이터 디렉토리 구조 예시:
./{inference_folder}/
└ inference_data1.csv
└ inference_data2.csv
└ inference_data3.csv
학습에 사용될 데이터는 하나의 폴더 내에 있는 모든 .csv 파일을 취합하여 하나의 데이터프레임으로 만듭니다. 이 데이터프레임은 모델 학습에 사용됩니다.
데이터 요구사항
필수 요구사항
- 입력 데이터는 반드시 다음 조건을 만족해야 합니다:
- y 컬럼(라벨)은 없어도 됩니다.
- 정상 데이터의 비율이 높을수록 좋습니다.(정상 데이터만 존재해도 무방합니다.)
추가 요구사항
- 최소한의 성능을 보장하기 위해 정상 데이터의 비율이 이상 데이터의 비율보다 많은 데이터를 권장드립니다.
- 데이터 비율이 비슷하다면, 정상 데이터의 비율을 Oversampling 후 진행하는 것을 추천드립니다.
산출물
MLAD의 학습/추론을 실행하면 아래와 같은 산출물이 생성됩니다.
Train pipeline
./train_artifacts/
├── extra_output/
│ └── train/
│ └── eval.json
├── log/
│ ├── experimental_history.json
│ ├── pipeline.log
│ └── process.log
├── models/
│ ├── input/
│ │ └── input_config.json
│ ├── readiness/
│ │ └── train_config.pickle
│ │ └── report.csv
│ ├── preprocess/
│ │ └── preprocess_config.json
│ │ └── scaler.pickle
│ └── train/
│ ├── isf_default.pkl
│ ├── knn_default.pkl
│ ├── lof_default.pkl
│ ├── ocsvm_default.pkl
│ ├── dbscan_default.pkl
│ └── params.json
├── output/
│ └── train_pred.csv
└── score/
└── train_summary.yaml
Inference pipeline
./inference_artifacts/
├── extra_output/
│ └── readiness/
│ │ └── report.csv
│ └── inference/
│ └── eval.json
├── log/
│ ├── experimental_history.json
│ ├── pipeline.log
│ └── process.log
├── output/
│ └── test_pred.csv
└── score/
└── inference_summary.yaml
산출물 상세 설명
log/
pipeline.log
: 파이프라인의 전체 로그가 기록됩니다. 데이터 전처리, 모델 학습 및 추론 과정의 상세 로그를 확인할 수 있습니다.process.log
: 프로세스 실행의 로그입니다.experimental_history.json
: 실험 이력에 대한 정보가 담겨 있습니다.
models/
-
input/input_config.json
: data input에 대한 config가 저장됩니다. -
readiness/
: data readiness 대한 config 및 대상 data에 대한 report가 저장됩니다.train_config.pkl
: Readiness configreport.csv
: input data에 대한 Readiness report
-
preprocess/
: 데이터 전처리에 사용된 config 및 전처리 객체가 저장됩니다.scaler.pickle
: 학습데이터의 scaler 객체preprocess_config.json
: Preprocess config
-
train/
: 다양한 알고리즘을 사용하여 학습된 모델 파일들입니다.isf_default.pkl
: Isolation Forest 모델knn_default.pkl
: K-Nearest Neighbors 모델lof_default.pkl
: Local Outlier Factor 모델ocsvm_default.pkl
: One-Class SVM 모델dbscan.pkl
: DBSCAN 모델params.json
: 사용된 모델 파라미터 정보
output/
train_pred.csv
: 학습 데이터에 대한 예측 결과가 저장됩니다.test_pred.csv
: 추론 데이터에 대한 예측 결과가 저장됩니다.
extra_output/
eval.json
: 평가 지표 및 결과가 저장됩니다.
score/
train_summary.yaml
: 학습 결과 요약 파일입니다. HPO (Hyperparameter Optimization) 결과와 모델 성능 지표가 포함됩니다.inference_summary.yaml
: 추론 결과 요약 파일입니다. 학습된 모델을 사용하여 추론한 결과와 평가 지표가 포함됩니다.
TAD Version: 1.0.0