---
# System prepended metadata

title: K-Means Clustering
tags: [非監督式學習（Unsupervised learning）, 機器學習]

---

## 介紹 K-Means Clustering
K-Means Clustering 是一種常見的無監督學習演算法，主要用於將數據集分成 K 個不同的群集（Clusters），該方法透過迭代尋找最佳的 K 個中心（Centroids），使得同一群集內的數據點彼此相似，而不同群集間的數據點則具有顯著的區別。

K-Means Clustering 的運作可分為以下幾個步驟：
1. <font color="#1936C9">選擇 K 值</font>：決定要分成多少個群集。
2. <font color="#1936C9">初始化群集中心</font>：隨機選取 K 個數據點作為初始群集中心。
3. <font color="#1936C9">計算距離</font>：計算數據點與各個群集中心的距離，並將每個數據點指派到最近的群集。
4. <font color="#1936C9">更新群集中心</font>：計算每個群集內所有數據點的平均值，並將該平均值作為新的群集中心。
5. <font color="#1936C9">重複步驟 3 和 4</font>：直到群集中心不再變化或變化極小時，演算法收斂。

![image](https://hackmd.io/_uploads/ByUT9ZM9yx.png)

## 那 K 值該如何選擇呢？
K 值的選擇是 K-Means Clustering 的關鍵之一，若 K 值選擇不當，可能導致過度分群或分群不足。為了確定最佳的 K 值，常使用 Elbow Method。

### Elbow Method
這種方法透過計算不同 K 值時的 WCSS（Within-Cluster Sum of Squares），來評估群集內部的變異性，當 K 值增加時，WCSS 會逐漸減少，因為更多的群集能夠降低內部變異性。然而，當繪製 WCSS 隨 K 值變化的曲線時，通常會出現一個明顯的“肘點”（elbow point），此點代表 WCSS 降低幅度開始趨緩，對應的 K 值即為較佳的選擇。

![image](https://hackmd.io/_uploads/ryLPhbG5ye.png)

## 如何初始化群集中心？
標準的 K-Means 使用隨機初始化來選擇初始群集中心，然而這可能導致收斂至局部最小值或較差的結果。
### K-Means++
K-Means++ 提供了一種更有效的初始化策略，首先隨機選擇一個數據點作為第一個群集中心，然後根據距離的平方來設定每個數據點被選為群集中心的機率，距離越遠的點被選為中心的機率越高，這樣的選擇方式能夠確保初始群集中心分布較為分散，從而提升演算法的收斂速度並減少結果對初始化的敏感性。

## 總結
K-Means Clustering 是一種強大且常用的無監督學習方法，適用於各種數據分析場景。然而，由於它對初始值和異常值較為敏感，應使用 K-Means++ 來提升其穩定性，並使用 Elbow Method 來選擇適當的 K 值。

---
:::info
以上就是這篇文章「K-Means Clustering」的所有內容，第一次看的人會花比較多時間消化吸收，這是很正常的事情，若有任何問題，歡迎在下方與我聯繫、討論，接下來也會繼續分享相關文章，敬請期待。