ABCDEFGHIJKLMNOPQRSTUVWXYZAAABAC
1
Mike Shoemate - Major revisions necessary.
2
ImplProofnamemapmetric_inmeasure_outnotesproof
3
Measurements
4
Laplaced_in / scaleabsolute or L1 on floatspureeps = d_out
(incomplete) relation proof: https://www.overleaf.com/project/605b5f8a67af815b3757496a
5
Geometricd_in / scaleabsolute or L1 on intspureeps = d_out
6
Gaussian(d_in / sigma) * sqrt(2 * ln(1.25 / delta)); delta > 0absolute or L2 on floatsapproximate(eps, del) = d_out, 0 <= eps <= 1, 0 < del
7
PRd_in^2 / (2 * sigma^2)absolute or L2 on floatszCDPrho = d_out
8
Analytic Gaussiannumerical algorithmabsolute or L2 on floatsapproximate
9
PRDiscrete Exponentiald_in / tauabsolutepured_in is finite
10
Base2 Exponential (WIP)absolutepured_in is finite
11
MT Chainmap_2(map_1(d_in))**
12
PRseq_comp_static_distc*pure, approx, zCDPc = sum_i(d_out_i); assert all_i(meas_i.check(d_in, d_out_i))
13
StabilityL1 or L2approximateSee https://github.com/opendp/opendp/blob/main/rust/opendp/src/meas/stability.rs
14
AmplifyR(d_in, (eps', del'))*pure or approximate
R is the inner measurement being amplified, eps' = ln(1 + p(e^eps - 1)); del' = p * del'; p is the sampling proportion, assuming SRS
15
Cast MeasureR(d_in, (eps, del)), where eps >= xi + rho + sqrt(4 * rho * log(1 / delta))*approximateaccepts zCDP measurement in the constructor
from https://arxiv.org/pdf/1605.02065.pdf#page=15
16
R(d_in, (xi, rho)), where rho >= (sqrt(eps - xi + log(1 / delta)) - sqrt(log(1 / delta)))^2*zCDPaccepts approximate measurement in the constructor
17
d_out[0] >= d_in && d_out[1] >= 0*approximateaccepts pure measurement in the constructor. For composition
18
Smooth Mediand_out >= epsilonsymmetricpureThe function respects an epsilon provided in the constructor arguments
19
20
Transformsmetric_inmetric_out
21
TT Chain (same as MT)map_2(map_1(d_in))**
22
R1(d_in, d_mid) && R2(d_mid, d_out)**d_mid = hint(d_in, d_out)
23
Sumd_out >= d_in * (U - L) / 2symmetricabsoluteknown n. it takes d_in = 2 to make one (M - m) substitution
old proof: https://github.com/opendp/smartnoise-core/tree/develop/whitepapers/sensitivities/sums
24
d_out >= d_in * max(|L|, |U|)symmetricabsolute
25
Countd_out >= d_insymmetricabsolute
old proof: https://github.com/opendp/smartnoise-core/tree/develop/whitepapers/sensitivities/counts
26
Count Distinctd_out >= d_insymmetricabsolute
27
Count By (Categories)d_out >= d_insymmetricLp distance, p > 0
28
d_out >= d_in * 2^(1/p - 1) symmetricLp distance, p > 0known n. Example: L2 distance is p = 2, therefore d_out >= d_in / sqrt(2)
outline/comments: https://github.com/opendp/opendp/issues/158
29
Meand_out >= d_in * (U - L) / n / 2symmetricabsoluteknown n. postprocessing the sum
old proof: https://github.com/opendp/smartnoise-core/tree/develop/whitepapers/sensitivities/mean
30
SSxyd_out >= d_in * (Ux - Lx) * (Uy - Ly) * n / (n + 1) / 2symmetricabsoluteknown n. SSxy = Σ(x_i - X) * (y_i - Y); X = Σx_i / n; Y = Σy_i / n
31
SSxd_out >= d_in * (U - L)^2 * n / (n + 1) / 2symmetricabsoluteknown n. SSx = Σ(x_i - X)^2; Simplification of SSxy.
32
Covarianced_out >= d_in * (Ux - Lx) * (Uy - Ly) * n / (n + 1) / 2 / (n - ddof)symmetricabsoluteknown n. postprocessing SSxy
old proof: https://github.com/opendp/smartnoise-core/tree/develop/whitepapers/sensitivities/covariance
33
Varianced_out >= d_in * (U - L)^2 * n / (n + 1) / 2 / (n - ddof)symmetricabsoluteknown n. postprocessing SSx
old proof: https://github.com/opendp/smartnoise-core/tree/develop/whitepapers/sensitivities/variance
34
OMITQuantiled_out >= d_in * (U - L)symmetricabsolutepoor utility
35
Raw Momentd_out >= d_in * (U - L)^k / n / 2symmetricabsoluteknown n. Equal to mean when k = 1
36
Central Momentd_out >= d_in * (U - L)^k * n / (n + 1) / 2symmetricabsoluteknown n. Equal to variance when k = 2
37
SNQuantileUtilityd_out >= d_in * max(1 - alpha, alpha)symmetricabsolute
38
Clampd_out >= d_insymmetricsymmetric
old proof: https://github.com/opendp/smartnoise-core/tree/develop/whitepapers/data_processing
39
d_out >= min(d_in, U - L)absoluteabsoluteIf you clamp an aggregated value, the sensitivity is at most the range of the clamp.
40
Imputed_out >= d_insymmetricsymmetricincludes impute_constant, impute_uniform_float
old proof: same location as clamp
41
Castd_out >= d_insymmetricsymmetricincludes cast, cast_default, cast_inherent
42
Resized_out >= d_in * 2symmetricsymmetric
old proof: same location as clamp
43
Joind_out >= 2 * (d_in_l * m + d_in_r * l + 2 * d_in_l * d_in_r)(symmetric, symmetric)symmetricm is left truncation constant, l is right truncation constant
44
Truncated_out >= d_in * ksymmetricsymmetrick is max-user-contribution, saved as domain descriptor
45
SNTheil-Sen Transformd_out >= d_in * ksymmetricsymmetrick is maximum number of matchings a user is involved in
46
Stable Unaryd_out >= d_insymmetricsymmetricabs, ln, etc.
47
Stable Binaryd_out >= d_in_lsymmetricsymmetricadd, mul, etc; if d_in_l == d_in_r && both are identically ordered
48
RowTransformd_out >= d_insymmetricsymmetricuser defined function, only available in reduced privacy model
49
LoadCSVd_out >= d_insymmetricsymmetricd_in specified in constructor; can be used to choose the execution engine- this component chooses rust
50
CONTRIBCoinPress Mean
51
CONTRIBCoinPress Covariance
52
KMeans
53
CONTRIBGradient Descent
54
Partition
55
Is Equald_out >= d_insymmetricsymmetric
56
Cast Metricd_out >= d_in * 2substitutesymmetric
57
d_out >= d_in / 2symmetricsubstituteis ceil necessary? should it enforce even-ness on sized domains?
58
59
60
61
62
63
64
PR
In pull request
65
SN
In smartnoise-core
66
OMIT
Doesn't meet utility or design requirements
67
CONTRIB
Prior work available but may not be integrated
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100