{"id":16200528,"url":"https://github.com/stefanrmmr/differentially_private_synthetic_data","last_synced_at":"2025-06-25T09:09:20.819Z","repository":{"id":107296386,"uuid":"461915154","full_name":"stefanrmmr/differentially_private_synthetic_data","owner":"stefanrmmr","description":"Differentially Private Synthetic Data Generation [DP-SDG] - Experimental Setups \u0026 Knowledge Base - WORK IN PROGRESS","archived":false,"fork":false,"pushed_at":"2022-07-26T16:10:37.000Z","size":5485,"stargazers_count":12,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-02T23:51:15.932Z","etag":null,"topics":["data-analysis","data-anonymity","data-anonymization","differential-privacy","differentially-private","dpgan","dpsdg","dpwgan","dsgvokonform","gdpr","pategan","privacy","privacy-enhancing-technologies","privacy-preserving-machine-learning","privacy-preserving-synthetic-data","quasi-identifiers","sensitive-data-security","synthetic-data","synthetic-data-generation","synthetic-dataset-generation"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stefanrmmr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-02-21T15:15:12.000Z","updated_at":"2025-03-18T18:23:30.000Z","dependencies_parsed_at":null,"dependency_job_id":"184a0f72-41b3-426c-86d8-20c2f7bd39d6","html_url":"https://github.com/stefanrmmr/differentially_private_synthetic_data","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/stefanrmmr/differentially_private_synthetic_data","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stefanrmmr%2Fdifferentially_private_synthetic_data","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stefanrmmr%2Fdifferentially_private_synthetic_data/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stefanrmmr%2Fdifferentially_private_synthetic_data/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stefanrmmr%2Fdifferentially_private_synthetic_data/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stefanrmmr","download_url":"https://codeload.github.com/stefanrmmr/differentially_private_synthetic_data/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stefanrmmr%2Fdifferentially_private_synthetic_data/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261841973,"owners_count":23217918,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data-analysis","data-anonymity","data-anonymization","differential-privacy","differentially-private","dpgan","dpsdg","dpwgan","dsgvokonform","gdpr","pategan","privacy","privacy-enhancing-technologies","privacy-preserving-machine-learning","privacy-preserving-synthetic-data","quasi-identifiers","sensitive-data-security","synthetic-data","synthetic-data-generation","synthetic-dataset-generation"],"created_at":"2024-10-10T09:31:13.818Z","updated_at":"2025-06-25T09:09:20.785Z","avatar_url":"https://github.com/stefanrmmr.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Experimental Implementation of DP-WGAN\u003cbr/\u003eDifferentially Private Synthetic Data Generation \nFor **Continuous Data with binary Targets** using the Differentially Private Wasserstein GAN\n\n1) DP-WGAN **Synthetic Data** for \"Health care: Heart attack possibility\" [Kaggle Dataset](https://www.kaggle.com/datasets/nareshbhat/health-care-data-set-on-heart-attack-possibility?select=heart.csv) --\u003e [view Notebook](https://github.com/stefanrmmr/differentially_private_synthetic_data/blob/main/dpwgan_borealis_heart_disease.ipynb)\u003cbr/\u003e\n2) DP-WGAN **Synthetic Data** for \"BankNote Authentication UCI\" [Kaggle Dataset](https://www.kaggle.com/datasets/shantanuss/banknote-authentication-uci) --\u003e [view Notebook](https://github.com/stefanrmmr/differentially_private_synthetic_data/blob/main/dpwgan_borealis_banknote.ipynb)\u003cbr/\u003e\u003cbr/\u003e\n\n___\n\n### Metrics achieved for DP-WGAN on the Heart Disease Dataset\n\u003cbr/\u003e\n\n\u003cimg width=\"684\" alt=\"synthdata_sc1\" src=\"https://user-images.githubusercontent.com/82606558/180919628-b0720159-df65-40b9-90be-ea5d79279e84.png\"\u003e\n*after multiple attempts using normalized input data, epsilon = approx 3.4 and delta = 1e-5\n\n___\n\n###  Process Steps \u0026 Key Concepts\n- The data needs to be in csv format and has to be partitioned as train and test before feeding it to the models. \n- Missing values are not supported and needs to replaced appropriately by the user before usage.\n- In case the data has continuous and categorical attributes, it needs to be pre-processed \u003cbr/\u003e(discretization for continuous values/ encoding for categorical attr.)\u003cbr/\u003e\u003cbr/\u003e\n- The generative GAN-based ML models are trained using the training dataset. \n- The generative model is used to create a synthetic version of the train dataset\n- To compensate for irregularities multiple GAN-Generator models are trained\n- To compensate for irregularities multiple synthetic datasets are generated,\u003cbr/\u003e the optimal best-performing dataset that yields the max AUC is selected\u003cbr/\u003e\u003cbr/\u003e\n- **Logistic Regression Classifiers** are trained using the real data, as well as, the synthetically generated dataset\n- Both classifiers are evaluated regarding performance on the left-out real test dataset (preserved for evaluation)\n- Relevant Metrics (mainly AUC) and visualizations of correlation-matrices of synthetic datasets were generated\n\n___\n\n### Acknowledgements \u0026 Sources\nMajor parts of this summary notebook were extracted from this [BOREALIS Private Data Generation](https://github.com/BorealisAI/private-data-generation) Github repository by BorealisAI. Note that, this Jupyter notebook covers only one (DP-WGAN) of various possible datasets and generative models for differentially private synthetic data generation. The aforementioned analysis aproaches have yielded the following results as extracted from the original notebook. For more information rearding **differential privacy specific privacy arguments Delta \u0026 Epsylon** please refer to this [info-page by Microsoft]( https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/dwork.pdf)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstefanrmmr%2Fdifferentially_private_synthetic_data","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstefanrmmr%2Fdifferentially_private_synthetic_data","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstefanrmmr%2Fdifferentially_private_synthetic_data/lists"}