Machine Unlearning for Federated Socially Fair k-Means Clustering
Organizations: Centre for Responsible AI, Wadhwani School of Data Science & AI, Indian Institute of Technology Madras · Department of Artificial Intelligence, Sardar Vallabhbhai National Institute of Technology, Surat, India · Department of Electrical Engineering, Indian Institute of Technology Madras
Abstract
Federated clustering can support applications such as patient stratification across hospitals and customer segmentation across distributed financial datasets. Responsible AI calls for fair representation of demographic groups and support for data deletion, motivated in part by rights such as the GDPR's right to erasure. These goals interact: deleting records can change the balance between groups and alter the clustering of the remaining population. We study exact machine unlearning for federated socially fair -means, whose objective is to minimize the largest group-average squared distance to the nearest center. Our approach keeps separate local summaries for each group, so summaries at unaffected institutions remain valid as global fairness weights change. For two groups, we prove an initialization approximation guarantee independent of client group proportions under ideal sampling, and we show that same-seed replay reproduces retraining exactly. Reuse pays off most when a whole client withdraws: across three datasets, replay is faster than retraining for the initialization-only model and remains and faster with one and two fair-refinement rounds, which improve worst-group cost. For individual record deletions, gains are modest (about ), and certifying cached assignments can cost more than it saves. These results map where exact unlearning can profitably reuse computation. Code and reproducibility materials are available at https://github.com/arareddy/mufsc.
Figures & tables
| Suite | Method | Total algorithm | Total E2E | Algorithm losses | (%) |
|---|---|---|---|---|---|
| P2 | Direct | 1.061 | 1.049 | 2/175 | 0.00 |
| P2 | Basic | 1.006 | 0.996 | 68/175 | 0.76 |
| P2 | Runner-up | 1.005 | 0.995 | 67/175 | 0.76 |
| P3 | Direct | 1.056 | 1.043 | 15/95 | 0.00 |
| P3 | Basic | 0.938 | 0.930 | 74/95 | 1.35 |
| P3 | Runner-up | 0.940 | 0.931 | 76/95 | 1.35 |
| Compact | Direct | Direct | |||
|---|---|---|---|---|---|
| Adult | 26.96 | 2.053 | 1.544 | 117.957 | 95.998 |
| Bank | 115.53 | 2.646 | 1.828 | 45.898 | 32.634 |
| Credit | 25.03 | 2.647 | 1.856 | 20.124 | 13.009 |
| Deletion population | Dataset | Worst-group cost | Population-average cost |
|---|---|---|---|
| Record | Adult | ||
| Record | Bank | ||
| Record | Credit | ||
| Client | Adult | ||
| Client | Bank | ||
| Client | Credit |
Appendix figures & tables28 assets
Supplementary material from the paper’s appendix.
Appendix
| Method | Mean | SE | Mean |
|---|---|---|---|
| Merged-1k | 63.5310 | 1.1028 | 32.3935 |
| Merged-2k | 1.9034 | 0.1518 | 1.4593 |
| SplitGroup | 2.2375 | 0.1776 | 1.6270 |
| Central | 1.7749 | 0.1406 | 1.3948 |
| Dataset | Records | Clients | Group 0 | Group 1 | ||
|---|---|---|---|---|---|---|
| Adult | 30162 | 100 | 103 | 9782 | 20380 | 1.317781 |
| Bank | 45211 | 20 | 42 | 17997 | 27214 | 1.008094 |
| Credit | 30000 | 100 | 23 | 5385 | 24615 | 2.416867 |
| Method | Mean | Mean 95% CI | Median | Wins/fresh | Abandons |
|---|---|---|---|---|---|
| Direct | 1.066 | [1.065, 1.068] | 1.067 | 173/175 | N/A |
| Basic | 1.025 | [1.004, 1.062] | 1.008 | 107/175 | 174/175 |
| Runner-up | 1.024 | [1.004, 1.061] | 1.007 | 108/175 | 174/175 |
| Method | Elapsed range | Model mean | E2E mean |
|---|---|---|---|
| Direct | 0.960–1.138 | 1.002 | 1.052 |
| Basic | 0.938–4.222 | 0.985 | 1.010 |
| Runner-up | 0.934–4.187 | 0.986 | 1.009 |
| Method | ||||||
|---|---|---|---|---|---|---|
| Direct | 89086500 | 0 | 0 | 0 | 0 | N/A |
| Basic | 89086500 | 6571424 | 677014 | 677014 | 5893934 | 10.3024% |
| Runner-up | 89086500 | 6571424 | 677018 | 677014 | 5893930 | 10.3025% |
| Client | Client size | P/NP | |||||
|---|---|---|---|---|---|---|---|
| 100,000 | 10 | State | 48,728 | 51,272 | 1.105216 | 1446–41266 | 0/0 |
| 100,000 | 25 | State | 49,022 | 50,978 | 1.127072 | 392–23054 | 0/0 |
| 100,000 | 50 | State | 49,033 | 50,967 | 1.229392 | 179–11808 | 0/0 |
| 100,000 | 100 | PUMA | 48,925 | 51,075 | 1.374730 | 383–2254 | 0/0 |
| 100,000 | 250 | PUMA | 49,293 | 50,707 | 1.523855 | 150–884 | 0/0 |
| 250,000 | 50 | State | 122,606 | 127,394 | 1.183868 | 447–29521 | 0/0 |
| ID | ||||||
|---|---|---|---|---|---|---|
| 0 | 100,000 | 50 | 4 | 5 | 100 | 0.001 |
| 1 | 250,000 | 50 | 4 | 5 | 250 | 0.001 |
| 2 | 500,000 | 50 | 4 | 5 | 500 | 0.001 |
| 3 | 1,000,000 | 50 | 4 | 5 | 1,000 | 0.001 |
| 4 | 100,000 | 10 | 4 | 5 | 100 | 0.001 |
| 5 | 100,000 | 25 | 4 | 5 | 100 | 0.001 |
| Method | Mean E2E | Total E2E | Losses | Mean | Pool | Def. |
|---|---|---|---|---|---|---|
| Fresh | 1.000 | 1.000 | 0/95 | N/A | N/A | 0/95 |
| Direct | 1.078 | 1.043 | 23/95 | N/A | N/A | 0/95 |
| Basic | 1.252 | 0.930 | 78/95 | 3.16 | 8.38 | 95/95 |
| Runner-up | 1.228 | 0.931 | 79/95 | 3.16 | 8.38 | 95/95 |
| ID | Direct | Basic | Runner-up |
|---|---|---|---|
| 0 | 1.079 [1.072, 1.086] 1.079 [1.071, 1.086] | 0.918 [0.913, 0.923] 0.918 [0.913, 0.923] | 0.919 [0.913, 0.925] 0.919 [0.913, 0.925] |
| 1 | 1.026 [1.016, 1.035] 1.026 [1.016, 1.034] | 0.882 [0.872, 0.890] 0.882 [0.872, 0.890] | 0.876 [0.866, 0.884] 0.876 [0.866, 0.884] |
| 2 | 1.020 [1.007, 1.035] 1.020 [1.007, 1.035] | 0.878 [0.867, 0.889] 0.878 [0.867, 0.889] | 0.872 [0.861, 0.887] 0.872 [0.861, 0.887] |
| 3 | 1.011 [0.996, 1.029] 1.011 [0.996, 1.029] | 0.871 [0.865, 0.877] 0.871 [0.865, 0.877] | 0.872 [0.861, 0.882] 0.872 [0.861, 0.882] |
| 4 | 0.999 [0.984, 1.013] 0.999 [0.984, 1.013] | 0.859 [0.844, 0.877] 0.859 [0.844, 0.877] | 0.864 [0.853, 0.873] 0.864 [0.853, 0.873] |
| 5 | 1.036 [1.025, 1.049] 1.036 [1.025, 1.049] | 0.898 [0.879, 0.915] 0.898 [0.879, 0.915] | 0.874 [0.853, 0.892] 0.874 [0.853, 0.892] |
| Design/seed | Direct | Basic | Runner-up | Fallback |
|---|---|---|---|---|
| 15/0 | 1.374 / 1.342 | 17.331 / 11.488 | 15.544 / 10.731 | Never |
| 15/1 | 1.355 / 1.324 | 16.959 / 11.377 | 15.191 / 10.591 | Never |
| 15/2 | 1.386 / 1.353 | 1.145 / 1.126 | 1.144 / 1.125 | 0 |
| 15/3 | 1.386 / 1.353 | 1.151 / 1.130 | 1.138 / 1.119 | 0 |
| 15/4 | 1.337 / 1.308 | 14.438 / 10.241 | 13.026 / 9.504 | Never |
| 16/0 | 1.258 / 1.232 | 1.070 / 1.055 | 1.065 / 1.049 | 0 |
| Method | |||||
|---|---|---|---|---|---|
| Fresh | 110,998,475 | 0 | 0 | 0 | 0 |
| Direct | 110,998,475 | 0 | 0 | 0 | 0 |
| Basic | 110,998,475 | 17,905,183 | 1,499,968 | 1,499,968 | 16,405,198 |
| Runner-up | 110,998,475 | 17,905,183 | 1,499,968 | 1,499,968 | 16,405,198 |
| Design/seed | Changed labels/ | Server draw | ||||
|---|---|---|---|---|---|---|
| 15/0 | 1 | 0/99999 | 0.000 | 0.000 | 0 | none |
| 15/1 | 1 | 0/99999 | 0.000 | 0.000 | 0 | none |
| 15/2 | 1 | 43870/99999 | 4.302 | 3.867 | 99999 | 0 |
| 15/3 | 1 | 31280/99999 | 6.471 | 6.264 | 99999 | 2 |
| 15/4 | 1 | 0/99999 | 0.000 | 0.000 | 0 | none |
| 16/0 | 10 | 60120/99990 | 8.880 | 7.292 | 99990 | 0 |
| Dataset | Method | Base IDs | Extra IDs / slots | Packet bytes | |
|---|---|---|---|---|---|
| Adult | Merged-1k | 8.81718 | 5 | 26/800 | 697000/697000 |
| Adult | Merged-2k | 8.79206 | 14 | 66/1600 | 1369000/1369000 |
| Adult | SplitGroup | 8.77216 | 8 | 70/1600 | 1377200/1377200 |
| Bank | Merged-1k | 6.95398 | 0 | 0/160 | 61320/61320 |
| Bank | Merged-2k | 6.98036 | 0 | 2/320 | 117640/117640 |
| Bank | SplitGroup | 7.00838 | 0 | 0/320 | 119280/119280 |
| Dataset | : mean SD | Direct | Basic | Runner-up | |
|---|---|---|---|---|---|
| Adult | 0 | 119.594 3.048 | 4.119/3.304 | 4.101/3.284 | 4.110/3.296 |
| Adult | 1 | 97.941 1.184 | 1.741/1.647 | 1.050/1.024 | 1.044/1.019 |
| Adult | 2 | 95.931 1.391 | 1.421/1.374 | 1.033/1.014 | 1.031/1.012 |
| Bank | 0 | 47.959 0.757 | 1.390/1.345 | 1.394/1.349 | 1.394/1.348 |
| Bank | 1 | 34.016 1.106 | 1.228/1.203 | 0.889/0.881 | 0.890/0.882 |
| Bank | 2 | 33.010 0.929 | 1.161/1.142 | 0.917/0.908 | 0.914/0.905 |
| Dataset | Seed | Fresh ms | Direct ms | Fast ms | F/fast | ||
|---|---|---|---|---|---|---|---|
| Adult | 10000 | 244.925 | 17.138 | 9.019 | 27.16 | 112.512 | 95.182 |
| Adult | 10001 | 243.347 | 17.308 | 9.070 | 26.83 | 117.132 | 95.807 |
| Adult | 10002 | 242.373 | 17.141 | 9.162 | 26.46 | 117.421 | 97.242 |
| Adult | 10003 | 250.312 | 17.690 | 9.403 | 26.62 | 119.269 | 98.305 |
| Adult | 10004 | 248.264 | 17.986 | 8.950 | 27.74 | 123.448 | 93.452 |
| Bank | 10000 | 221.181 | 6.316 | 1.973 | 112.12 | 44.867 | 32.578 |
| Dataset | Train | Compact | Load | Full ser. | Small ser. | Full MiB | Small MiB |
|---|---|---|---|---|---|---|---|
| Adult | 251.805 | 1.178 | 44.902 | 5.627 | 1.202 | 52.481 | 3.196 |
| Bank | 231.292 | 0.173 | 30.118 | 2.455 | 0.184 | 29.734 | 0.267 |
| Credit | 167.754 | 0.669 | 17.164 | 2.887 | 0.869 | 11.929 | 0.754 |
| Dataset | Fresh/Direct | Fresh/Basic | Fresh/Runner-up | |
|---|---|---|---|---|
| Adult | 1 | 2.053 | 1.164 | 1.159 |
| Bank | 1 | 2.646 | 1.455 | 1.464 |
| Credit | 1 | 2.647 | 1.425 | 1.407 |
| All | 1 | 2.357 | 1.309 | 1.305 |
| Adult | 2 | 1.544 | 1.107 | 1.103 |
| Bank | 2 | 1.828 | 1.287 | 1.286 |
| Dataset | Client ID | Removed | Removed group 0/1 | Retained group 0/1 | Anchors |
|---|---|---|---|---|---|
| Adult | 0 | 300 | 97/203 | 9,685/20,177 | 1,980 |
| Adult | 99 | 462 | 179/283 | 9,603/20,097 | 1,980 |
| Bank | 0 | 2,259 | 899/1,360 | 17,098/25,854 | 380 |
| Bank | 19 | 2,290 | 916/1,374 | 17,081/25,840 | 380 |
| Credit | 0 | 299 | 53/246 | 5,332/24,369 | 1,980 |
| Credit | 99 | 399 | 138/261 | 5,247/24,354 | 1,980 |
| Matched resident output | Including buffered state round trip | |||||
| Dataset | Fresh ms | Compact ms | Ratio | Fresh ms | Compact ms | Ratio |
| Adult | 713.326 | 26.608 | 26.81 | 714.219 | 44.826 | 15.93 |
| Bank | 612.280 | 5.763 | 106.25 | 613.038 | 8.346 | 73.45 |
| Credit | 483.370 | 19.331 | 25.01 | 484.338 | 28.164 | 17.20 |
| Population | Seed | Group 1 before | Group 1 after | Change (%) | Population change |
|---|---|---|---|---|---|
| Record | 10000 | 96.192670 | 97.326494 | +1.1787 | +0.039075 |
| Record | 10002 | 96.224892 | 96.477361 | +0.2624 | |
| Record | 10004 | 94.487752 | 96.450765 | +2.0775 | +0.593167 |
| Client | 10002 | 96.002141 | 96.957289 | +0.9949 | |
| Client | 10003 | 94.642231 | 95.233313 | +0.6245 |
| Population | Dataset | Worst group | Population | Worst group | Population |
|---|---|---|---|---|---|
| Record | Adult | +4.80 | +4.72 | ||
| Record | Bank | +0.57 | +0.55 | ||
| Record | Credit | +0.59 | +0.71 | ||
| Client | Adult | +4.02 | +4.47 | ||
| Client | Bank | +1.62 | +1.87 | ||
Clustering
Clustering groups data points by shared structure, developing methods to discover, validate, and interpret groups across diverse data and constraints.
See all 342 papers