CoolFace
Datasetpublic

CSE472-blanket-challenge/SCM3K

SCM3K Benchmark dataset for the paper: The Good, the Bad, and the Ugly of Markov Boundary for Tabular Prediction Shu Wan, Abhinav Gorantla, Huan Liu, K. Selçuk Candan 3,450 tabular prediction tasks sampled from random structural causal models (SCMs), totalling 3.45M records (1,000 samples per task). Each task ships with the ground-truth Markov boundary of the target node, so you can evaluate feature selection and prediction under known causal structure. Nine feature-count… See the full description on the dataset page: https://huggingface.co/datasets/CSE472-blanket-challenge/SCM3K.

sourceHugging Facemitupdated 4mo agoView on Hugging Face
0likes35downloads
Dataset Card

SCM3K

Benchmark dataset for the paper:

[The Good, the Bad, and the Ugly of Markov Boundary for Tabular Prediction](https://huggingface.co/papers/2605.29411) Shu Wan, Abhinav Gorantla, Huan Liu, K. Selçuk Candan

3,450 tabular prediction tasks sampled from random structural causal models (SCMs), totalling 3.45M records (1,000 samples per task). Each task ships with the ground-truth Markov boundary of the target node, so you can evaluate feature selection and prediction under known causal structure. Nine feature-count levels from 40 to 1,000.

Splits

One HF split per feature count F. No predefined train/test partition — use HF slice syntax (e.g. split="f200[:80%]").

Split`F``num_nodes`DAG densityMB-ratio bandTasks
f404041ER [0.2, 0.4][0.10, 0.90]300
f606061ER [0.2, 0.4][0.10, 0.90]300
f808081ER [0.2, 0.4][0.10, 0.90]300
f100100101ER [0.2, 0.4][0.10, 0.90]300
f200200201ER [0.01, 0.02, 0.04][0.05, 0.95]450
f400400401ER [0.01, 0.02, 0.04][0.05, 0.95]450
f600600601ER [0.01, 0.02, 0.04][0.05, 0.95]450
f800800801ER [0.01, 0.02, 0.04][0.05, 0.95]450
f100010001001ER [0.01, 0.02, 0.04][0.05, 0.95]450
Total3,450

Row schema

Each row is one prediction task.

FieldTypeWhat it stores
task_idstringunique task identifier
Xlist\<list\<f32\>\>feature matrix, 1,000 x F
ylist\<f32\>target vector, length 1,000
n_featuresintnumber of features (= F)
mb_masklist\<bool\>true Markov boundary mask over features
mb_ratiofloatfraction of features in the Markov boundary
densityfloatedge density of the generating DAG
dagstructdag_id, num_nodes, edge_list
scmstructscm_type, noise_model, pnl, coeff_range, noise_std
targetstructtarget_node, parent_mask, child_mask, spouse_mask
metastructn_samples, seed

How the data was generated

DAGs: Erdos-Renyi, 5 graphs per (num_nodes, density) pair, seed 42.

SCMs: six families — LINEAR_GAUSSIAN, LINEAR_NONGAUSSIAN, NL_ANM_GAUSSIAN, NL_ANM_NONGAUSSIAN, PNL, HETEROSKEDASTIC. Each DAG gets 5 SCM instantiations with n_samples=1000, coeff_range=1.0, noise_std=0.5.

Quick start

python
from datasets import load_dataset

ds = load_dataset("CSE472-blanket-challenge/SCM3K", split="f200")
task = ds[0]

X  = task["X"]          # 1000 x 200
y  = task["y"]          # 1000
mb = task["mb_mask"]    # ground-truth Markov boundary

Citation

bibtex
@article{wan2026gbu,
  title  = {The Good, the Bad, and the Ugly of Markov Boundary
            for Tabular Prediction},
  author = {Wan, Shu and Gorantla, Abhinav and Liu, Huan
            and Candan, K. Sel{\c{c}}uk},
  year   = {2026},
}