k-means 的優缺點

K 均值在許多機器學習情境中都很實用且有效率,但也有明顯的缺點。

k-means 的優點

實作方式相對簡單。

可處理大型資料集。

一律會收斂。

允許暖啟中心位置。

能順利適應新樣本。

可推廣至不同形狀和大小的叢集,例如橢圓形叢集。

推廣 k-means

直接實作 k 均值演算法,可能會遇到密度和大小不同的叢集問題。圖 1 的左側顯示預期的叢集,右側則顯示 k 均值所提出的叢集。

兩張並排的圖表。第一張圖片顯示資料集,其中有幾個明顯的分群。第二個圖表顯示執行 k-means 後,示例的奇怪分組。
圖 1:非泛化 k-means 示例。

如要針對圖 1 所示的不平衡叢集改善效能,您可以概括化,也就是調整 k 均值。圖 2 顯示三個不同的資料集,以兩種不同的概括方式進行叢集。第一個資料集顯示 k 均值而非概括,而第二和第三個資料集則允許叢集寬度有所不同。

三個圖表分別顯示未經一般化的 k 均值、允許寬度變化的 k 均值,以及允許跨維度變化寬度的 k 均值。
圖 2:有和沒有泛化功能的 k-means 分群法。

本課程不會說明如何推廣 k 均值,但如果您有興趣,可以參考卡內基美隆大學的 Carlos Guestrin 撰寫的「Clustering – k-means Gaussian mixture models」

k-means 的缺點

k 必須手動選取。

結果取決於初始值。

對於低 k,您可以使用不同的初始值多次執行 k 均值,然後挑選最佳結果,藉此減輕這種依賴性。隨著 k增加,您需要使用k-means 播種來挑選更理想的初始中心點。如要進一步瞭解 k-means 播種,請參閱 M.Emre Celebi, Hassan A. Kingravi,以及 Patricio A. Vela。

難以將不同大小和密度的資料分群,且無法概括。

難以將異常值分組。

離群值可能會拖曳中心點,或是取得自己的叢集,而非遭到忽略。建議在建立叢集之前,先移除或截斷離群值。

難以隨著維度數量擴充。

隨著資料中的維度數量增加,以距離為基礎的相似度評估指標會在任何指定範例之間收斂為常數值。如要減少維度,您可以使用PCA 處理地圖項目資料,或是使用光譜叢集來修改分群演算法。

維度詛咒和譜系分群

請注意,在這些三個圖表中,隨著維度增加,範例之間的距離標準差會相對於範例之間的平均距離而縮小。這種收斂現象表示,隨著資料維度的增加,k-means 區分範例的效率會降低。這就是所謂的「維度詛咒」

三個圖表,顯示範例之間距離的標準差隨著維度數量增加而減少
圖 3:維度詛咒的示範。每個圖表都顯示 200 個隨機點之間的配對距離。

您可以使用光譜叢集避免這種效能下降情形,因為這項技術會在演算法中加入預先叢集步驟。如何執行光譜叢集:

  1. 使用 PCA 降低特徵資料的維度。
  2. 將所有資料點投影至低維子空間。
  3. 使用所選演算法,將這個子空間中的資料分群。

如要進一步瞭解光譜聚類,請參閱 Ulrike von Luxburg 撰寫的 A Tutorial on Spectral Clustering