nnagesh101 commited on
Commit
28b69e8
·
1 Parent(s): 88c249e

Expand baseline roster: all synthcity-available TabDiff/fair-tab-diffusion baselines + external-baseline framework

Browse files
pipeline/arena.py CHANGED
@@ -17,9 +17,13 @@ _CANDIDATES = {
17
  "datadesigner": [("datadesigner", "conditional-target"), ("datadesigner", "samplers")],
18
  "sdgym": [("sdgym", "data_identity"), ("sdgym", "column"), ("sdgym", "uniform")],
19
  "sdv": [("sdv", "gaussiancopula"), ("sdv", "ctgan"), ("sdv", "tvae")],
20
- "synthcity": [("synthcity", "pategan"), ("synthcity", "tvae"), ("synthcity", "ddpm"),
21
- ("synthcity", "ctgan"), ("synthcity", "arf"), ("synthcity", "dpgan"),
22
- ("synthcity", "adsgan"), ("synthcity", "privbayes"), ("synthcity", "decaf")],
 
 
 
 
23
  }
24
 
25
  # Acceptance thresholds — the "is it working well?" evaluation loop.
 
17
  "datadesigner": [("datadesigner", "conditional-target"), ("datadesigner", "samplers")],
18
  "sdgym": [("sdgym", "data_identity"), ("sdgym", "column"), ("sdgym", "uniform")],
19
  "sdv": [("sdv", "gaussiancopula"), ("sdv", "ctgan"), ("sdv", "tvae")],
20
+ # TabDiff + fair-tab-diffusion baselines available as synthcity plugins.
21
+ "synthcity": [("synthcity", m) for m in (
22
+ # fidelity baselines
23
+ "ctgan", "tvae", "rtvae", "nflow", "ddpm", "arf", "goggle", "great",
24
+ # privacy / fairness baselines
25
+ "dpgan", "pategan", "adsgan", "privbayes", "decaf",
26
+ )],
27
  }
28
 
29
  # Acceptance thresholds — the "is it working well?" evaluation loop.
scripts/EXTERNAL_BASELINES.md ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Baselines from TabDiff & fair-tab-diffusion
2
+
3
+ Both papers benchmark a large set of generators. In MemisisLabs they fall into two tiers.
4
+
5
+ ## Tier 1 — available as synthcity plugins (run via the arena, no extra repos)
6
+ These enter the arena directly through the `synthcity` backend once a `SYNTHCITY_VENV` is set
7
+ (see `scripts/server_arena.py`). Install with `pip install "synthcity[all]"` on the GPU host to
8
+ get the `goggle`/`great` extras.
9
+
10
+ | Baseline (paper) | synthcity plugin |
11
+ |---|---|
12
+ | CTGAN | `ctgan` |
13
+ | TVAE / RTVAE | `tvae`, `rtvae` |
14
+ | TabDDPM | `ddpm` |
15
+ | GOGGLE | `goggle` |
16
+ | GReaT | `great` |
17
+ | Normalizing flow | `nflow` |
18
+ | ARF | `arf` |
19
+ | DP-GAN / PATE-GAN / ADS-GAN | `dpgan`, `pategan`, `adsgan` |
20
+ | PrivBayes | `privbayes` |
21
+ | DECAF (fairness) | `decaf` |
22
+
23
+ Run: `python scripts/server_arena.py` (uses these by default across all datasets).
24
+
25
+ ## Tier 2 — standalone research repos (external experiments)
26
+ No pip/synthcity plugin — each is its own repo with its own env. Integrate them the same way as
27
+ TabDiff: clone + set up, train + sample into a CSV, then score with **our** metric suite via a
28
+ small evaluate step (mirror `scripts/tabdiff_evaluate.py`). This puts them on the shared
29
+ leaderboard under our TabDiff-standard metrics.
30
+
31
+ | Baseline | Repo | Notes |
32
+ |---|---|---|
33
+ | TabDiff | github.com/MinkaiXu/TabDiff | done — `scripts/tabdiff_prepare.py` + `tabdiff_evaluate.py` |
34
+ | TabSyn | github.com/amazon-science/tabsyn | latent-space diffusion |
35
+ | STaSy | github.com/JayoungKim408/STaSy | score-based |
36
+ | CoDi | github.com/ChaejeongLee/CoDi | co-evolving diffusion |
37
+ | FairTabDDPM | github.com/comp-well-org/fair-tab-diffusion | fairness-aware diffusion |
38
+ | FairTabGAN / FairSMOTE | (fair-tab-diffusion `args/*/`) | fairness-aware baselines |
39
+
40
+ ### Generic pattern for a Tier-2 baseline
41
+ 1. Clone + create its env on the lab server.
42
+ 2. Prepare the dataset in its expected format (adapt `scripts/tabdiff_prepare.py` if it uses the
43
+ same Info-JSON layout — TabSyn/CoDi/STaSy/FairTabDDPM all descend from the TabSyn data format).
44
+ 3. Train + sample to a synthetic CSV.
45
+ 4. Score + record:
46
+ ```bash
47
+ python scripts/tabdiff_evaluate.py --dataset openml_45040 \
48
+ --synthetic /path/to/<method>_samples/ --record
49
+ ```
50
+ (change the recorded label in the script, or add a `--label <method>` flag.)
51
+
52
+ ## Fairness metrics
53
+ fair-tab-diffusion's fairness = fairlearn `demographic_parity_ratio` + `equalized_odds_ratio` —
54
+ already adopted as the arena's `fairness` dimension (`pipeline/fairness.py`), applied to every
55
+ classification dataset with a sensitive attribute.
scripts/server_arena.py CHANGED
@@ -24,9 +24,11 @@ sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
24
  from pipeline import arena, datasets, leaderboard # noqa: E402
25
  from pipeline.metadata import build_metadata # noqa: E402
26
 
27
- DEFAULT_MODELS = ["ctgan", "tvae", "arf", "nflow", "ddpm",
 
28
  "dpgan", "pategan", "adsgan", "privbayes", "decaf"]
29
- DEFAULT_DATASETS = ["openml_45040", "adult", "german", "bank", "compas"]
 
30
 
31
 
32
  def available_plugins(requested: list[str]) -> list[str]:
 
24
  from pipeline import arena, datasets, leaderboard # noqa: E402
25
  from pipeline.metadata import build_metadata # noqa: E402
26
 
27
+ # synthcity plugins matching the TabDiff + fair-tab-diffusion baselines.
28
+ DEFAULT_MODELS = ["ctgan", "tvae", "rtvae", "nflow", "ddpm", "arf", "goggle", "great",
29
  "dpgan", "pategan", "adsgan", "privbayes", "decaf"]
30
+ DEFAULT_DATASETS = ["openml_45040", "adult", "german", "bank", "compas",
31
+ "shoppers", "magic", "default", "diabetes_pima", "beijing", "news"]
32
 
33
 
34
  def available_plugins(requested: list[str]) -> list[str]: