1. 程式人生 > >聚類演算法之K-means演算法與聚類演算法衡量指標

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

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

一、K-means(k均值)演算法

   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-means演算法公式化解釋

 記k個簇中心分別為u1,u2,u3……uk,每個簇的樣本數目為N1、N2……Nk。

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


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


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

K-means聚類方法總結

優點:

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

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

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

缺點:

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

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

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

4、對噪聲和孤立點敏感

二 、Canopy演算法

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:{X1,X2……Xr},Y:{Y1,Y2,……Ys},X和Y的元素個數分別為:a={a1,a2……ar},b={b1,b2……bs},它們之間關係如下圖:


其中nij為即屬於Xi有屬於Yj的。


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

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


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


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


借鑑ARI有:


輪廓係數:對聚類結果有效性的解釋和驗證
首先定義簇內不相似度和簇間不相似度。
簇內不相似度:計算樣本i到該簇內其他樣本點的平均距離ai,ai越小則聚類結果越好,ai即為該樣本的簇內不相似度。該簇內所有樣本的ai的均值即為該簇的簇內不相似度。
簇間不相似度:計算樣本i到其他簇Cj的所有樣本的平均距離bij,成為樣本i與簇Cj的簇間不相似度。定義樣本i的簇間不相似度為:


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

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



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

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