Risk

class risksyn.risk.Risk(rho)[source]

Bases: object

Specification on the target level of risk.

Internally converts to zCDP.

Use factory methods to create: - Risk.from_zcdp(rho) - Risk.from_advantage(advantage) - Risk.from_err_rates(tpr, fpr) - Risk.from_advantage_at_baseline(advantage, baseline)

__init__(rho)[source]
static from_zcdp(rho)[source]
static from_advantage(advantage, tol=0.0001, max_iter=100)[source]

From worst-case advantage, maximum difference between success rate - baseline or TPR - FPR in the case of membership inference attacks.

static from_err_rates(tpr, fpr, tol=0.0001, max_iter=100)[source]

From membership inference TPR and FPR.

static from_success_at_baseline(success, baseline, tol=0.0001, max_iter=100)[source]

From success rate (TPR) at a given baseline (FPR).

static from_advantage_at_baseline(advantage, baseline, tol=0.0001, max_iter=100)[source]

From advantage (success rate - baseline) and baseline success rate.

property zcdp: float

Get the converted zCDP parameter.

__or__(other)[source]

Combine risk specs — takes minimum rho (most restrictive).

risksyn.risk.calibrate_parameters_to_risk(risk, proc_epsilon=None)[source]

Calibrate (epsilon, delta) parameters for dpmm from a Risk specification.

Converts a Risk object into the (epsilon, delta) parameters needed by differential privacy pipelines. Optionally accounts for preprocessing budget.

This calibration is specific to dpmm, and does not necessarily apply to other implementations.

Parameters:
  • risk (Risk) – Risk specification.

  • proc_epsilon (float, optional) – Epsilon budget to reserve for preprocessing. If provided, deducted from the total privacy budget and included in the output.

Returns:

{"epsilon": ..., "delta": ...} and optionally "proc_epsilon".

Return type:

dict

Raises:

ValueError – If the privacy budget is insufficient.