聚類演算法之K means演算法與聚類演算法衡量指標

2021-08-15 07:43:47 字數 3072 閱讀 4497

原文出處:

聚類就是按照某個特定標準(如距離準則)把乙個資料集分割成不同的類或簇,使得同乙個簇內的資料物件的相似性盡可能大,同時不在同乙個簇中的資料物件的差異性也盡可能地大。即聚類後同一類的資料盡可能聚集到一起,不同資料盡量分離。聚類演算法屬於無監督學習,即事先不會給出標記資訊,通過對無標記樣本的學習來解釋資料的內在性質及規律,為進一步的資料分析提供基礎。

k-means是劃分方法中較經典的聚類演算法之一。由於該演算法的效率高,所以在對大規模資料進行聚類時被廣泛應用。目前,許多演算法均圍繞著該演算法進行擴充套件和改進。

k-means演算法以k為引數,把n個樣本分成k個簇,使簇內具有較高的相似度,而簇間的相似度較低。k-means演算法的處理過程如下:首先,隨機地 選擇k個樣本,每個樣本初始地代表了乙個簇的平均值或中心;對剩餘的每個樣本,根據其與各簇中心的距離,將它賦給最近的簇;然後重新計算每個簇的平均值。 這個過程不斷重複,直到準則函式收斂。

演算法步驟為:

1、選擇初始的k個類別中心u1u2……uk

2、對於每個樣本,將其標記為距離類別中心最近的類別,即:

3、將每個類別中心更新為隸屬該類別的所有樣本的均值

4、重複最後兩步,直到類別中心的變化小於某閾值

偽**如下:

具體k-means演算法的執行過程可以參加下圖:

k-means演算法的問題:k-means演算法是將簇中左右點的均值做為新的質心,但是當有異常值是,質心可能就會離大多數點比較遠。比如1,2,3,4,100五個樣本,均值是22,這樣類別中心就離樣本較遠,這時選取中位數做為質心是更好的選擇,這就是k-mediods(k-中值)聚類演算法。同時k-means是初值敏感的,即當選取不同的初始值時分類結果可能不同,如下圖:

記k個簇中心分別為u1,u2,u3……uk,每個簇的樣本數目為n1、n2……nk。

使用平方誤差做為誤差函式,得:

將該函式做為目標函式,求解該函式的最小值。可以使用梯度下降法求,該函式為凸函式,駐點為:

可以看到,要想使損失函式最小,聚類中心要為各簇中樣本點的平均值。由此可以看出,k-means演算法在每次迭代更新時使用各簇中樣本點的平均值為聚類中心是有道理的。

優點:1、解決聚類問題的經典演算法,簡單、快速

2、當處理大資料集時,該演算法保持可伸縮性和高效率

3、當簇近似為高斯分布時,它的效果較好

缺點:1、在簇的平均值可被定義的情況下才能使用,可能不適用於某些應用

2、必須實現給出k(要生成簇的數目),而且對初值敏感,即對於不同的初值,可能會導致不同結果

3、不適合非凸形狀的簇或者大小差別很大的簇

4、對雜訊和孤立點敏感

canopy演算法也可以劃分為聚類演算法,其演算法描述如下:

r1為較小的數,當樣本xj與樣本c的距離小於r1時樣本xj只屬於以樣本c為聚類中心的簇,當樣本xj與樣本c的距離大於r1小於r2時,樣本cj部分屬於以樣本c為聚類中心的簇。這裡部分屬於的意思是樣本cj即會屬於以樣本c 為聚類中心的簇,也會屬於其他的簇。

演算法結束後,每個樣本xj對應的列表cc中的樣本c即為其所屬的簇中心,以為cj中的c可能會有多個,所以樣本xj可能會屬於多個簇。

下圖是乙個聚類後的樣本分佈圖:

樣本點只有乙個顏色的表示只屬於乙個簇,有多個顏色表示屬於多個簇。

均一性:乙個簇只包含乙個樣本則滿足均一性

完整性:同類別樣本被歸到同乙個簇中則滿足完整性

v-measure 均一性和完整性的加權平均:

ari:兩個不同的聚類結果之間相似性的度量

資料集s共有n個元素,兩個聚類結果分別為x:,y:,x和y的元素個數分別為:a=,b=,它們之間關係如下圖:

其中nij為即屬於xi有屬於yj的。

上式的含義為:(指數-期望指數)/(最大的指數-期望指數)

ami:使用與ami相同的符號,將上圖中的nij看成是隨機變數,更具資訊熵,則有互資訊:

對其進行正則化得正則化互資訊:

x服從超幾何分布,求互資訊的期望為:

輪廓係數:對聚類結果有效性的解釋和驗證

首先定義簇內不相似度和簇間不相似度。

簇內不相似度:計算樣本i到該簇內其他樣本點的平均距離ai,ai越小則聚類結果越好,ai即為該樣本的簇內不相似度。該簇內所有樣本的ai的均值即為該簇的簇內不相似度。

簇間不相似度:計算樣本i到其他簇cj的所有樣本的平均距離bij,成為樣本i與簇cj的簇間不相似度。定義樣本i的簇間不相似度為:

bi越大,說明樣本i越不屬於其他簇。

下面來看輪廓係數,根據樣本的簇內不相似度ai和簇間不相似度bi,定義樣本i的輪廓係數如下:

si越接近1說明樣本i聚類越合理,越接近-1,則說明樣本i更應該被分到另外的簇,近似為0說明在兩個簇的邊界上。

所有樣本的si的均值稱為聚類結果的輪廓係數,是該聚類分類是否合理、有效的度量。

參考:周志華《機器學習》

鄒博 機器學習

聚類演算法之K Means演算法

對大量未進行標註 unsupervised learning 的資料集,並按照資料集本身的內部資料特徵將資料劃分為多個不同的類別,從而使得類別內的資料相似度高,而類別間的資料差異性較大。因此,它的重點就在於計算樣本間的相似度 similarity 輸入演算法所需資料,資料樣本集d 將樣本資料集分開的...

聚類演算法之Kmeans

kmeans是聚類演算法中比較簡單的演算法,也用的非常多。這裡進行簡單的解釋,主要目的在於給自己記錄,以備以後檢視。k均值聚類的主要思想是為了使得各個類的點離聚類中心都盡可能近。k均值聚類的演算法可以描述為 輸入 資料集d d 聚類簇個數 k 演算法 從資料集d中隨機選擇k個樣本作為初始聚類中心 r...

聚類演算法之K means

k means演算法也稱k 均值聚類演算法。它試圖通過基於原型的 劃分的距離計算來發現k個使用者預先指定的簇。將一組資料劃分為預先設定好的k個簇,也可理解為隨機選擇k個向量作為初始均值向量。接下來根據均值向量將樣本劃分到距離最近的均值向量所在的簇中。這是一次迭代過程。重新計算並更新均值向量,不斷重複...