聚類演算法K值的選擇

2022-01-14 22:04:46 字數 2168 閱讀 3434

下面是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)

首先給出聚類演算法的一些符號表示

* 聚類演算法的m個輸入樣本:x(

1),.

..,x

(m)' role="presentation" style="position: relative">x(1

),..

.,x(

m)x(

1),.

..,x

(m)*

x(i)

' role="presentation" style="position: relative">x(i

)x(i

)所屬的聚類中心:μc

(i)' role="presentation" style="position: relative">μc(

i)μc

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

c(1)

,...

,c(m

),μ1

,...

,μk)

=1m∑

1m(∥

x(i)

−μc(

i)∥)

' role="presentation" style="text-align: center; position: relative">j(c

(1),

...,

c(m)

,μ1,

...,

μk)=

1m∑1

m(∥x

(i)−

μc(i

)∥)j

(c(1

),..

.,c(

m),μ

1,..

.,μk

)=1m

∑1m(

∥x(i

)−μc

(i)∥

)其中優化目標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,看聚類結果能為你後續目的提供多大幫助。

kmeans聚類選擇最優K值python實現

kmeans演算法中k值的確定是很重要的。下面利用python中sklearn模組進行資料聚類的k值選擇 資料集自製資料集,格式如下 手肘法 手肘法的核心指標是sse sum of the squared errors,誤差平方和 其中,ci是第i個簇,p是ci中的樣本點,mi是ci的質心 ci中所...

R語言 系統聚類 K值聚類

1 系統聚類 系統聚類是將每個樣品分成若干類的方法,其基本思想是 先將各個樣品各看成一類,然後規定類與類之間的距離,選擇距離最小的一對合併成新的一類,計算新類與其他類之間的距離,再將距離最近的兩類合併,這樣每次減少一類,直至所有的樣品合為一類為止。聚類方法 最短距離法和最長距離法 重心法和類平均法 ...

聚類演算法之K均值聚類

k means聚類方法 1.介紹 k均值聚類是基於樣本集合劃分的聚類演算法。由於每個樣本在劃分的過程中只能屬於乙個類別,所以k means演算法屬於硬聚類。2.演算法過程 k均值聚類演算法是乙個迭代的過程,每次迭代包括兩個步驟 3.複雜度 k均值聚類演算法的複雜度o mnk 其中k表示類別數,m表示...