{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/arxiv-2602-07671","title":"Federated Learning with Profile Mapping under Distribution Shifts and Drifts","arxiv_id":"2602.07671","date":"2026-02-07","proceeding":null,"authors":["Mohan Li","Dario Fenoglio","Martin Gjoreski","Marc Langheinrich"],"abstract":"Federated Learning (FL) enables decentralized model training across clients without sharing raw data, but its performance degrades under real-world data heterogeneity. Existing methods often fail to address distribution shift across clients and distribution drift over time, or they rely on unrealistic assumptions such as known number of client clusters and data heterogeneity types, which limits their generalizability. We introduce Feroma, a novel FL framework that explicitly handles both distribution shift and drift without relying on client or cluster identity. Feroma builds on client distribution profiles-compact, privacy-preserving representations of local data-that guide model aggregation and test-time model assignment through adaptive similarity-based weighting. This design allows Feroma to dynamically select aggregation strategies during training, ranging from clustered to personalized, and deploy suitable models to unseen, and unlabeled test clients without retraining, online adaptation, or prior knowledge on clients' data. Extensive experiments show that compared to 10 state-of-the-art methods, Feroma improves performance and stability under dynamic data heterogeneity conditions-an average accuracy gain of up to 12 percentage points over the best baselines across 6 benchmarks-while maintaining computational and communication overhead comparable to FedAvg. These results highlight that distribution-profile-based aggregation offers a practical path toward robust FL under both data distribution shifts and drifts.","url_abs":"https://arxiv.org/abs/2602.07671","url_pdf":"https://arxiv.org/pdf/2602.07671","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2602.07671","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2602.07671"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/dariofenoglio98/FEROMA","reach":null}],"summary":{"unverified":5},"by_repo_kind":{"found_in_text":{"samples":5,"ran":0,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"856d463c159a5605","entry":"add_dp_noise","repo":"dariofenoglio98/FEROMA","repo_kind":"found_in_text","path":"public/models.py","file_url":"https://github.com/dariofenoglio98/FEROMA/blob/HEAD/public/models.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"856d463c159a5605"}},{"code_sha256_prefix":"f50e75c75e5320a3","entry":"calculate_mean_std_metrics","repo":"dariofenoglio98/FEROMA","repo_kind":"found_in_text","path":"public/average_results.py","file_url":"https://github.com/dariofenoglio98/FEROMA/blob/HEAD/public/average_results.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f50e75c75e5320a3"}},{"code_sha256_prefix":"314c58446a1c8ee8","entry":"residual_block","repo":"dariofenoglio98/FEROMA","repo_kind":"found_in_text","path":"public/models.py","file_url":"https://github.com/dariofenoglio98/FEROMA/blob/HEAD/public/models.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"314c58446a1c8ee8"}},{"code_sha256_prefix":"7a9b4c2e10971b7c","entry":"split_to_K_dist","repo":"dariofenoglio98/FEROMA","repo_kind":"found_in_text","path":"public/chexpert_data_gen.py","file_url":"https://github.com/dariofenoglio98/FEROMA/blob/HEAD/public/chexpert_data_gen.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7a9b4c2e10971b7c"}},{"code_sha256_prefix":"fd8541b4625bbefe","entry":"weighted_loss_avg","repo":"dariofenoglio98/FEROMA","repo_kind":"found_in_text","path":"feroma/server.py","file_url":"https://github.com/dariofenoglio98/FEROMA/blob/HEAD/feroma/server.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"fd8541b4625bbefe"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.LG","source":"arxiv_2026.jsonl"},"syntology_extracted_results":null}