這個問題咱們能夠回到 K-means 或是 Cluster 方法的核心目標:算法
同一羣裏的資料同質性高,不一樣羣的資料同質性低。3d
這邊的同質性高會以「距離」做爲指標,也就能夠換句話說:cdn
同一羣裏內的距離近,不一樣羣間的距離遠。blog
基於這個概念,提供兩種方式來挑選 K:ci
其概念是基於 SSE(sum of the squared errors,偏差平方和)做爲指標,去計算每個羣中的每個點,到羣中心的距離。算法以下:get
其中總共有 K 個羣, Ci 表明其中一個羣,mi 表示該羣的中心點。it
根據 K 與 SSE 做圖,能夠從中觀察到使 SSE 的降低幅度由「快速轉爲平緩」的點,通常稱這個點爲拐點(Inflection point),咱們會將他挑選爲 K。由於該點能夠確保 K 值由小逐漸遞增時的一個集羣效益,所以適合做爲分羣的標準。io
輪廓係數法的概念是「找出相同羣凝聚度越小、不一樣羣分離度越高」的值,也就是知足 Cluster 一開始的目標。其算法以下:class
其中,凝聚度(a)是指與相同羣內的其餘點的平均距離;分離度(b)是指與不一樣羣的其餘點的平均距離。 S 是指以一個點做爲計算的值,輪廓係數法則是將全部的點都計算 S 後再總和。 S 值越大,表示效果越好,適合做爲 K。集羣
從上面的例子來講,輪廓係數法容易找出區域最佳解,所以實務上會搭配不一樣的方法相互參考。
本著做由Chang Wei-Yaun (v123582)製做, 以創用CC 姓名標示-相同方式分享 3.0 Unported受權條款釋出。