欄位比例

在約束過濾過程中維護原始資料的分布比例。

功能說明

理想情況下,合成器應該自動保持各欄位的比例分布。然而,根據不同的合成原理(如 CTGAN、TVAE 等),合成資料可能無法完全保持原始分布比例。此功能提供了一個有效的後處理機制,透過約束過濾來保證一定程度的比例維持,確保合成資料在經過各種約束條件篩選後,仍能維持與原始資料相近的分布特性。

使用場景

  • 合成資料的某些欄位分布偏離原始資料
  • 需要確保特定欄位的缺失值比例與原始一致
  • 多個約束條件可能導致某些類別過度被篩除

使用範例

請點擊下方按鈕在 Colab 中執行範例:

Open In Colab

field_proportions:
  - fields: 'education'      # 目標欄位:education
    mode: 'all'              # 模式:維護所有值(包括 NA)的分布比例
    tolerance: 0.1           # 容忍度:允許 10% 偏差

  - fields: 'workclass'      # 目標欄位:workclass
    mode: 'missing'          # 模式:僅維護缺失值(NA)的比例
    tolerance: 0.03          # 容忍度:允許 3% 偏差

語法格式

單一欄位

- fields: 'field_name'
  mode: 'all' | 'missing'
  tolerance: 0.1  # 可選,預設 0.1

多欄位組合

-
  fields:
    - field_name1
    - field_name2
  mode: 'all'
  tolerance: 0.15

參數說明

mode

  • 'all':維護所有值(包括 NA)的分布比例
  • 'missing':僅維護缺失值(NA)的比例

tolerance

  • 允許與原始比例的偏差範圍(0.0-1.0)
  • 預設值:0.1(10%)
  • 例:原始 30%,tolerance 0.1 → 允許 27%-33%

注意事項

  • 僅支援類別變數(categorical)欄位:此功能設計用於維護類別型資料的分布比例,不適用於連續數值型資料
    • 必須在 schema 中將欄位的 type 設定為 'category' 或具有類別性質的邏輯型態
    • 數值型(numeric)、日期型(datetime)等連續型欄位不支援
  • 透過迭代移除過量資料來維護分布
  • 高基數欄位(值太多)維護效果有限
  • 多個規則可能產生衝突,建議使用較寬鬆的 tolerance
  • 空值(NA)在 ‘all’ 模式下也會被維護