1. 程式人生 > >聚類演算法中K值的選取

聚類演算法中K值的選取

介紹

聚類演算法 引數
K-Means number of clusters
Affinity propagation damping, sample preference
Mean-shift bandwidth
Spectral clustering number of clusters
Ward hierarchical clustering number of clusters
Agglomerative clustering number of clusters, linkage type, distance

可以發現,大部分聚類演算法的輸入引數,都含有聚類類別數目K,K表示我們需要演算法將樣本聚成幾類。

那麼問題來了,在使用聚類演算法時,我們該如何決定聚類類別數目K值的選取呢?

方法

關於聚類K值問題,有很多種求解的方法。

有暴力的均方根解法,也有直觀的圖解法,下面介紹幾種常用的方法。

均方根

假設我們有m個樣本,該方法認為K=m/2

Elbow法

首先給出聚類演算法的一些符號表示
* 聚類演算法的m個輸入樣本:x(1),...,x(m)
* x(i)所屬的聚類中心:μc(i)

聚類演算法在聚類過程中,會尋找每個樣本到聚類中心距離最小的點作為聚類中心。所以聚類演算法的優化目標為:

J(c(1),...,c(m),μ1,...,μk)=1m1m(x(i)μc(i))

其中

  • c(i)表示最接近x(i)的聚類中心下標
  • μk表示聚類中心

優化目標J的值就表示每個樣本到聚類中心的距離之和,所以J在某種程度上表示了誤差,J最小則聚類誤差最小。

當K取值不同,得到的J值也不同。

Elbow法認為,K值應該取拐點上的那個值,如下圖。

這裡寫圖片描述

當然,實際情況中,不一定能看到拐點,也就不一定能使用這種方法。

影象法

把樣本的二維、三維特徵圖畫出來,通過觀察,人為決定K值選取。
樣本特徵維度大於三時,用降維或Visual Intelligence的方法來作圖觀察。

結論

聚類使用中,可以根據上面一些方法確定K值得選取。
但最終決定你聚類K值的,應該是根據你聚類後的後續目的來選取。可以嘗試不同的K,看聚類結果能為你後續目的提供多大幫助。