본문으로 건너뛰기
버전: docs v25.02

TAD 입력 데이터 및 산출물 매뉴얼

Updated 2024.07.06

데이터 준비

TAD (Tabular Anomaly Detection)를 사용하기 위해서는 다음과 같은 데이터 준비가 필요합니다. TAD는 비지도 학습을 기반으로 이상치를 탐지하므로, 라벨 컬럼(y 컬럼)은 필수가 아닙니다. 다만, 정상 데이터 양의 약 5%정도의 이상 데이터를 준비하는 것이 성능 향상에 도움이 됩니다.

학습 데이터 준비

  1. 이상 탐지를 하고자 하는 데이터 및 Feature 컬럼으로 이루어진 csv 파일을 준비합니다.
  2. label 컬럼은 optional 합니다.
  3. 그룹 별로 묶는 경우 그룹 별로 묶기 위한 컬럼이 존재해야 합니다.

학습 데이터셋 예시

x_col_1x_col_2time_col(optional)grouupkey(optional)y_col(optional)
value 1_1value 1_2time 1group1ok
value 2_1value2_2time 2group2ok
value 3_1value3_2time 3group1ng
...............

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 config
    • report.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