---
# System prepended metadata

title: '[CZP+20]Federated learning with hierarchical clustering of local updates to improve training on non-IID data'

---

# Federated learning with hierarchical clustering of local updates to improve training on non-IID data

此篇作者提出，non-iid中使用single model作為唯一訓練目標最後結果沒有辦法滿足所有local dataset，因此需要以分群(cluster)的方式聚集有相似(similar)data distribution的一起執行FL training，以此達到localized。
過去研究所提出的cluster方式都是預先決定有多少個cluster，但實際是無法預先知道每個dataset的dstribution，因此也就無法決定要如何分群，作者提出的方式是可以動態決定
NOTE: *我認為cluster其實就是multi-task FL的一種*


**CONTRIBUTION**:
1. FL+cluster
2. 動態分群
3. 提供詳細實驗設定
4. 使用Hierarchical clustering來分群(機器學習一種用來分類資料的方式)


**NON-IID type:**
1. **Feature distribution skew**: feature的機率分布在每個dataset不一樣
2. **label distribution skew**: label的機率分布在每個dataset不一樣
3. **Concept shift (same features, different label)**: 在不同dataset中，相同feature所對應到不同label的機率有所不同
4. **Concept shift (same label, different features)**: 在不同dataset中，相同label所對應到不同feature的機率有所不同

**ALGORITHM:**
簡單來講:
1. 執行傳統FL(FedAvg)n次 (1~6)
2. 執行Hierarchical clustering來分群 (7~10)
3. 對每個群執行傳統FL(FedAvg)直到收斂
作者提到可以調整的hyperparameter of HC:
1. 如何計算兩個cluster相似度
2. 如何選擇cluster中的點來決定計算相似度
![螢幕擷取畫面 (285)](https://hackmd.io/_uploads/HkwJ_fUHa.png)

**Hierarchical clustering**:
參考文章:(有空再整理)，但基本概念就是所有點一開始都作為一個群，然後bottom up的一層一層往上把兩兩相似cluster合併，直到沒有相似的。(但真正HC會合到完全只剩下一個群，再依據要哪一層來分)
1. https://ithelp.ithome.com.tw/articles/10296825?sc=iThelpR
2. https://www.bing.com/search?pglt=171&q=Agglomerative+Hierarchical+Clustering&cvid=cb069d2d292445bfbc080bcc2a967dd4&gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIGCAEQRRg7MgYIAhBFGDzSAQcxMjdqMGoxqAIAsAIA&FORM=ANNTA1&PC=ACTS&ntref=1
3. https://en.wikipedia.org/wiki/Hierarchical_clustering

