Given a set of equivalence classes, how do you compute the k and l a dataset actually achieves?
k_achieved is the size of the smallest equivalence class; l_achieved is the smallest number of distinct sensitive values found in any one class.
* Both guarantees are a minimum over all classes — the weakest class sets k and l. *
A dataset is k-anonymous and l-diverse only as strong as its weakest class — both guarantees are a minimum over all classes:
- k_achieved = min(class sizes). List every equivalence class, count its rows, take the smallest. Example: classes of size 6 and 4 → k_achieved =
min(6, 4)= 4, so the dataset is 4-anonymous (and therefore also 3-anonymous). - l_achieved = min(distinct sensitive values per class). For each class count how many different sensitive values it holds, take the smallest. A class with values {Wire, Loan, Savings} (Wire appears twice) contributes 3, not 4.
To verify a claim like "this release is 3-anonymous and 2-diverse," you don't trust the label — you enumerate the classes and check k_achieved ≥ 3 and l_achieved ≥ 2.
Tip: Privacy guarantees are bottlenecked by the single worst class, exactly like a chain's weakest link. One small or homogeneous class sinks the whole dataset's guarantee.
Go deeper:
l-diversity (Wikipedia) — distinct-value counting per equivalence class.
k-anonymity (Wikipedia) — equivalence-class size as the k bound.