YAML 設定
YAML 是一種人類可讀的資料序列化格式,PETsARD 使用它來進行實驗設定。本文件說明如何有效地組織您的 YAML 設定。
基本結構
PETsARD 的 YAML 設定採用三層架構:
模組名稱: # 第一層:模組
實驗名稱: # 第二層:實驗
參數1: 數值 # 第三層:參數
參數2: 數值
模組層級
最上層定義了按執行順序排列的處理模組:
- Loader:資料讀取
- Preprocessor:資料前處理
- Synthesizer:資料合成
- Postprocessor:資料後處理
- Constrainer:資料約束
- Evaluator:結果評估
- Reporter:報告產生
實驗層級
每個模組可以有多個實驗設定:
Synthesizer:
exp1_ctgan: # 第一個實驗
method: ctgan
epochs: 100
exp2_tvae: # 第二個實驗
method: tvae
epochs: 200
參數層級
參數依照各模組的具體要求設定:
Loader:
demo_load:
filepath: 'data/sample.csv'
na_values:
age: '?'
income: 'unknown'
column_types:
category:
- gender
- occupation
執行流程
當定義多個實驗時,PETsARD 採用深度優先的順序執行:
Loader -> Preprocessor -> Synthesizer -> Postprocessor -> Constrainer -> Evaluator -> Reporter
例如:
Loader:
load_a:
filepath: 'data1.csv'
load_b:
filepath: 'data2.csv'
Synthesizer:
syn_ctgan:
method: ctgan
syn_tvae:
method: tvae
這會產生四種實驗組合:
- load_a + syn_ctgan
- load_a + syn_tvae
- load_b + syn_ctgan
- load_b + syn_tvae
報告選項
Reporter 支援兩種方法:
資料儲存
Reporter:
save_data:
method: 'save_data'
source: 'Postprocessor' # 要儲存數據的來源模組
報告產生
Reporter:
save_report:
method: 'save_report'
granularity: 'global' # 報告詳細程度
最佳實踐
- 使用有意義的實驗名稱
- 依模組組織參數
- 為實驗設定加上註解
- 執行前驗證 YAML 語法