Python library for implementing Special Uniques Detection Algorithm (SUDA) for measuring disclosure control risk in synthetic data
Project description
suda
Sample uniqueness scoring in Python
This is a Python library for computing sample uniques scoring using the Special Uniques Detection Algorithm (SUDA).
The algorithm looks for rows in a dataset which are unique with respect to a number of category fields and scores them according to risk.
The smaller the number of fields for which a row is unique, the higher the score. So a row which has a unique value for a single field will score highly.
The more combinations by which a row is unique the higher the score. So a row which is unique in multiple ways will score highly.
Usage
Python
Call the suda() method with the dataframe to score, the maximum MSU to test for, the DIS score for the file (defaults to 0.1) and the columns to use for scoring (defaults to all columns).
For example, calling:
results = suda(data, max_msu=2)
Will score the 'data' dataframe and find MSUs of up to two fields. If the dataframe contained fields 'gender', 'age', 'education' and 'employment' then the algorithm will look for rows that are unique for all combinations of one and two fields (gender, age, education, employment, gender & age, gender & education, gender & employment, age & education, age & employment, education & employment.)
The output may look like:
id | msu | suda | fK | fM | gender | region | education | employment | dis-suda |
---|---|---|---|---|---|---|---|---|---|
0 | 0.0 | 0.0 | 2.0 | 0.0 | female | urban | secondary incomplete | employed | 0.000000 |
1 | 0.0 | 0.0 | 2.0 | 0.0 | female | urban | secondary incomplete | employed | 0.000000 |
2 | 1.0 | 12.0 | 1.0 | 4.0 | female | urban | primary incomplete | non-LF | 0.020690 |
3 | 0.0 | 0.0 | 2.0 | 0.0 | male | urban | secondary complete | employed | 0.000000 |
4 | 1.0 | 16.0 | 1.0 | 6.0 | female | rural | secondary complete | unemployed | 0.027586 |
5 | 0.0 | 0.0 | 2.0 | 0.0 | male | urban | secondary complete | employed | 0.000000 |
fK
is the minimum frequency of the row -
if this is >1 then there are no sample unique values for the row.
fM
is the number of MSUs found for the row.
msu
is the Minimum Sample Unique for the row - that is, the smallest number of
fields where the row is unique.
suda
is the SUDA calculated score, adding together the individual MSU scores
(each MSU score is the factorial of the number of attributes in the dataset minus the MSU.)
dis-suda
is the file-level risk score (DIS) divided by the total SUDA scores, multiplied
by SUDA for the row. In other words, the total risk distributed by the rows.
Command line
Use the command line function to supply a CSV file for the input, a path to output the resulting CSV, the minimum MSU, the columns to include, and the file-level risk (DIS).
References
Elliot, M. J., Manning, A. M., & Ford, R. W. (2002). A Computational Algorithm for Handling the Special Uniques Problem. International Journal of Uncertainty, Fuzziness and Knowledge Based System , 10 (5), 493-509.
Elliot, M. J., Manning, A., Mayes, K., Gurd, J., & Bane, M. (2005). SUDA: A Program for Detecting Special Uniques. Joint UNECE/Eurostat Work Session on Statistical Data Confidentiality. Geneva.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file suda-0.2.2.tar.gz
.
File metadata
- Download URL: suda-0.2.2.tar.gz
- Upload date:
- Size: 6.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2029ba311686f3180ac1724ab6bcfe71aedd71e4fdaa798b3bc2e805b7608130 |
|
MD5 | a8e956cb09151bfec89387134cbcc17c |
|
BLAKE2b-256 | 25a1ab7e3ed2375d6641aee94adf6737fb29411f7885d6a54ff496d63cde1150 |
Provenance
The following attestation bundles were made for suda-0.2.2.tar.gz
:
Publisher:
python-publish.yml
on JiscDACT/suda
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
suda-0.2.2.tar.gz
- Subject digest:
2029ba311686f3180ac1724ab6bcfe71aedd71e4fdaa798b3bc2e805b7608130
- Sigstore transparency entry: 147350384
- Sigstore integration time:
- Predicate type:
File details
Details for the file suda-0.2.2-py2.py3-none-any.whl
.
File metadata
- Download URL: suda-0.2.2-py2.py3-none-any.whl
- Upload date:
- Size: 5.7 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 882d8d41dcd38812537e2802369482cf35041c3e79cfc7e5db9207b797760a0f |
|
MD5 | a106528401c21751d13ea3e647dbf129 |
|
BLAKE2b-256 | 21d2cc2fa6d3add1fa8a4f889d70e62ad7c649f0cfb9e5a55bd3806acd7c387a |
Provenance
The following attestation bundles were made for suda-0.2.2-py2.py3-none-any.whl
:
Publisher:
python-publish.yml
on JiscDACT/suda
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
suda-0.2.2-py2.py3-none-any.whl
- Subject digest:
882d8d41dcd38812537e2802369482cf35041c3e79cfc7e5db9207b797760a0f
- Sigstore transparency entry: 147350386
- Sigstore integration time:
- Predicate type: