FCST Features
기능 개요
FCST의 pipeline
AI Contents의 pipeline은 기능 단위인 asset의 조합으로 이루어져 있습니다. FCST은 총 5가지 asset의 조합으로 pipeline이 구성되어 있습니다.
Train pipeline
Input - Readiness - Preprocess - Train
Inference pipeline
Input - Readiness - Preprocess - Inference- Output
각 단계는 asset으로 구분됩니다. 각 단계는 asset으로 구분됩니다.
Input asset
train과 inference 데이터 load하기 Forecasting은 학습 시에 time_column과 y_column이 필수적으로 필요하며, x_covariates, static_covariates, groupkey_column 등은 선택적으로 사용될 수 있는 tableau 형태의 데이터 구조에서 작동합니다. Input asset에서는 train set을 읽어 다음 asset으로 전달하는 역할을 수행합니다. 만약 예측하고자 하는 구간이 train set의 마지막 시점 이후라면, inference 단계에서는 train 단계와 동일하게 설정하면 됩니다.
Readiness asset
train과 inference 데이터의 검증을 수행합니다. 데이터의 정합성을 확인하고, 필요한 경우 데이터를 수정하거나 보완합니다. 예를 들어, 시계열 데이터의 경우 시간 format이 올바르게 설정되었는지, 중복된 시간 값이 없는지 등을 확인합니다.
Preprocess asset
readiness asset을 통해 검증받은 train 또는 inference 데이터를 전달받고 시계열 데이터의 특성을 고려한 결측치 처리, 이상치 제거, 스케일링 등이 이루어집니다. 또한, 시계열 데이터의 정상성 검정 등을 통해 모델에 적합한 형태로 데이터를 변환하기도 합니다.
Train asset
Forecasting에서 train asset은 많은 역할을 수행합니다. 우선 preprocess asset을 통해 전처리된 train 데이터를 전달받고 실험계획서에 미리 작성한 모델명과 모델 파라미터에 맞게 모델을 생성하고 학습을 진행합니다. 학습이 완료되고 나면 학습 모델과 모델 성능 결과를 저장합니다.
Inference asset
inference asset에서는 input asset에서 전달받은 inference 데이터를 기반으로 데이터를 읽습니다. 이전 학습 단계에서 저장한 최 적의 모델을 불러와서 예측을 수행하고 결과를 저장합니다. 운영을 위한 파일은 inference_summary.yaml도 저장되고 추론값은 output에 저장됩니다.
Output asset
inference 결과를 불러와서 과제에 적합한 형태로 저장합니다.
사용 팁
모델 선택하기
현재 지원되는 모델은 nbeats 입니다. nbeats는 다양한 복잡한 비선형 패턴을 잘 학습하며, 이를 바탕으로 정확한 예측을 수행할 수 있습니다. 어떤 데이터에 대해서도 안정적인 학습과 추론이 가능하며, interpretable 모드가 제공되어 모델의 예측을 이해하는 XAI에 활용할 수 있습니다.
Validation 수행하기
experimental_plan.yaml의 train asset에서 do_Validation값을 True로 설정하면 아래 도표와 같이 cv_numbers의 입력값에 따라 cross validation을 수행합니다. Expanding Window 방식을 사용하여 가능한 모든 과거 데이터를 활용하는 validation 방법을 채택하였습니다. 이 방법은 가능한 모든 과거 데이터를 활용하기 때문에 데 이터 활용성과 모델의 안정성을 기반으로 성능을 평가하는데 유용합니다.
|cv_numbers| number of validation| 1st validation | 2nd validation | 3rd validation | ... |---|---| |1| 1 | train 데이터( : - forecast_period), validation 데이터(- forecast_period : ) | | |...| |2| 2 | train 데이터( : - forecast_period), validation 데이터(- forecast_period : ) | train 데이터( : -2 x forecast_period),validation 데이터(-2 x forecast_period : -1 x forecast_period)| |...| |3| 3| train 데이터( : - forecast_period), validation 데이터(- forecast_period : ) | train 데이터( : -2 x forecast_period),validation 데이터(-2 x forecast_period : -1 x forecast_period) |train 데이터( : -3 x forecast_period), validation 데이터(-3 x forecast_period : -2 x forecast_period)|...| |...|...|...|...|...|...|
Hyper-parameters
최적화 현재 지원되는 최적화 알고리즘 중 하나는 Optuna입니다. Optuna는 TPE(Tree-structured Parzen Estimator) 알고리즘을 사용하여 최적화를 수행합니다. 초기 단계에서는 랜덤한 포인트 몇 개를 샘플링하여 모델을 구축하고, 이를 바탕으로 최적화를 진행합니다. TPE 알고리즘은 최적화 과정이 진행됨에 따라 모델의 성능이 제한될 수 있지만, 빠른 수렴이 가능한 장점이 있습니다.
전처리 취사선택
다양한 시나리오와 데이터에 따라 필요한 전처리 기능을 유연하게 선택할 수 있습니다. 사용자는 복잡한 전처리 과정을 깊이 이해하지 않아도 데이터 분석에 집중할 수 있어 업무 효율성이 높아집니다.
기능 상세
Forecasting의 다양한 기능을 활용하기 위한 상세 설명입니다.
Train pipeline: Input asset
Load train dataset file
input asset에 입력된 train/inference 경로를 통해 데이터를 로드합니다.
Train pipeline: Readiness asset
Readiness asset에 입력된 값과 로드한 데이터 간의 정합성을 확인하고, 중복을 제거하며, 시간 형식을 통일하는 등 시계열 알고리즘이 동작하는데 필요한 기본 사항들을 사전에 점검하고 문제가 발생하면 에러를 발생시킵니다. 검사 후 readiness 활용 값은 "./train_artifacts/models/readiness/readiness_config.json"에 저장됩니다.