## 介紹 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」的所有內容,第一次看的人會花比較多時間消化吸收,這是很正常的事情,若有任何問題,歡迎在下方與我聯繫、討論,接下來也會繼續分享相關文章,敬請期待。