Skip to main content

SyntheRela - Synthetic Relational Data Generation Benchmark

Project description

SyntheRela - Synthetic Relational Data Generation Benchmark

MIT License Paper URL

Our paper Benchmarking the Fidelity and Utility of Synthetic Relational Data is available on arxiv.

Installation

To install only the benchmark package, run the following command:

pip install .

Replicating the paper's results

We divide the reproducibility of the experiments into two parts: the generation of synthetic data and the evaluation of the generated data. The following sections describe how to reproduce the experiments for each part.

To reproduce some of the figures the synthetic data needs to be downloaded first. The tables can be reproduced with the results provided in the repository or by re-running the benchmark.

First, create a .env file in the root of the project with the path to the root of the project. Copy .env.example, rename it to .env and update the path.

Download synthetic data and results

The data and results can be downloaded and extracted with the below script, or are available on google drive here.

conda activate reproduce_benchmark
./experiments/reproducibility/download_data_and_results.sh

Evaluation of synthetic data

To run the benchmark and get the results of the metrics, run:

conda activate reproduce_benchmark
./experiments/reproducibility/evaluate_relational.sh

./experiments/reproducibility/evaluate_tabular.sh

./experiments/reproducibility/evaluate_utility.sh

Generation of synthetic data

Depending on the synthetic data generation method a separate pythone environment is needed. The instruction for installing the required environment for each method is provided in docs/INSTALLATION.md.

After installing the required environment, the synthetic data can be generated by running the following commands:

conda activate reproduce_benchmark
./experiments/reproducibility/generation/generate_sdv.sh

conda activate rctgan
./experiments/reproducibility/generation/generate_rctgan.sh

conda activate realtabformer
./experiments/reproducibility/generation/generate_realtabformer.sh

conda activate tabular
./experiments/reproducibility/generation/generate_tabular.sh

conda activate gretel
python experiments/generation/gretel/generate_gretel.py --connection-uid  <connection-uid> --model lstm
python experiments/generation/gretel/generate_gretel.py --connection-uid  <connection-uid> --model actgan

cd experiments/generation/clavaddpm
./generate_clavaddpm.sh <dataset-name> <real-data-path> <synthetic-data-path>  

To generate data with MOSTLYAI, insructions are provided in experiments/generation/mostlyai/README.md
Further instructions for GRETELAI are provided in experiments/generation/gretel/README.md.

Visualising Results

To visualize results, after running the benchmark you can run the below script. The figures will be saved to results/figures/:

conda activate reproduce_benchmark
./experiments/reproducibility/generate_figures.sh

Reproducing Tables

To reproduce the tables you can run the below script. The tables will be saved as .tex files in results/tables/:

conda activate reproduce_benchmark
./experiments/reproducibility/generate_tables.sh

Adding a new metric

The documentation for adding a new metric can be found in docs/ADDING_A_METRIC.md.

Synthetic Data Methods

Open Source Methods

* Denotes the method does not have a public implementation available.

Commercial Providers

A list of commercial synthetic relational data providers is available in docs/SYNTHETIC_DATA_TOOLS.md.

Conflicts of Interest

The authors declare no conflict of interest and are not associated with any of the evaluated commercial synthetic data providers.

Citation

If you use SyntheRela in your work, please cite our paper:

@misc{hudovernik2024benchmarkingsyntheticrelationaldata,
      title={Benchmarking the Fidelity and Utility of Synthetic Relational Data}, 
      author={Valter Hudovernik and Martin Jurkovič and Erik Štrumbelj},
      year={2024},
      eprint={2410.03411},
      archivePrefix={arXiv},
      primaryClass={cs.DB},
      url={https://arxiv.org/abs/2410.03411}, 
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

syntherela-0.0.1.tar.gz (272.5 kB view details)

Uploaded Source

Built Distribution

syntherela-0.0.1-py3-none-any.whl (369.9 kB view details)

Uploaded Python 3

File details

Details for the file syntherela-0.0.1.tar.gz.

File metadata

  • Download URL: syntherela-0.0.1.tar.gz
  • Upload date:
  • Size: 272.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.13

File hashes

Hashes for syntherela-0.0.1.tar.gz
Algorithm Hash digest
SHA256 37a1b345b2db079dc64f2f0dcfc63de871bc4c5a84455bb01a94601b5de4ccb5
MD5 4ba19bf07e7cd36106f8d22be3fd9a07
BLAKE2b-256 4b3f32161ed18accfc27b5fe520c0a26b52cd0204ad52bfa4b26df31c6b552cf

See more details on using hashes here.

File details

Details for the file syntherela-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: syntherela-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 369.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.13

File hashes

Hashes for syntherela-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e931f01e9fbbcde2f6d030e5f6d37fe427e8985384121d10f75a48f0a8c8fdfb
MD5 f0676d939349a738a265226b6bd754d4
BLAKE2b-256 5cf9a8c24e7cc88e31a83b7750c030941ad795e5d49d12a3c2ccd867b7aa3b66

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page