聚類算法K值的選擇


介紹

下面是scikit-learn中的幾種聚類算法。

聚類算法 參數
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^(1/2)(即根號m)

Elbow法(手肘法)

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

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

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

其中

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

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

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

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

手肘法的核心思想是:隨着聚類數k的增大,樣本划分會更加精細,每個簇的聚合程度會逐漸提高,那么誤差平方和SSE自然會逐漸變小。並且,當k小於真實聚類數時,由於k的增大會大幅增加每個簇的聚合程度,故SSE的下降幅度會很大,而當k到達真實聚類數時,再增加k所得到的聚合程度回報會迅速變小,所以SSE的下降幅度會驟減,然后隨着k值的繼續增大而趨於平緩,也就是說SSE和k的關系圖是一個手肘的形狀,而這個肘部對應的k值就是數據的真實聚類數。當然,這也是該方法被稱為手肘法的原因。

這里寫圖片描述

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

圖像法

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

結論

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM