聚類分析--k中心點演算法

shuaishuai3409發表於2015-11-24

k中心點演算法

思想:k-means是每次選簇的均值作為新的中心,迭代直到簇中物件分佈不再變化。其缺點是對於離群點是敏感的,因為一個具有很大極端值的物件會扭曲資料分佈。那麼我們可以考慮新的簇中心不選擇均值而是選擇簇內的某個物件,只要使總的代價降低就可以。

PAM(partitioning around medoid,圍繞中心點的劃分)是具有代表性的k-medoids演算法。

它最初隨機選擇k個物件作為中心點,該演算法反覆的用非代表物件(非中心點)代替代表物件,試圖找出更好的中心點,以改進聚類的質量。
例子:
空間有5點{A,B,C,D,E}, 各點之間距離關係如表,根據pam演算法進行聚類分析。

樣本點 A B C D E
A 0 1 2 2 3
B 1 0 2 4 3
C 2 2 0 1 5
D 2 4 1 0 3
A 3 3 5 3 0

假設分為2類,以A,B為中心點,初始聚類為{A,C,D}和{B,E}。接下來進行交換(以非代表物件代替代表物件),我們需要計算TCAC、TCAD、TCAE、TCBC、TCBD、TCBE
TCij表示用非中心點j替換中心點i所產生的代價。
計算TCAC:當A被C替換後,設一指標p遍歷所有物件,判斷他們是否聚到別的類裡。

  1. 先看A是否變化:C成為中心點後,A離B比A離C近,故A被劃分到B簇裡。所產生的代價為d(A,B)-d(A,A)=1(d(i,j)表示i劃分到中心點j的距離;差值表示屬於新的中心點-屬於舊的中心點產生的代價。)
  2. 看B是否變化:C成為中心點後,B當然離自己是最近的,不變
  3. 看C是否變化:C成為中心點後,C劃分到C簇裡,代價為d(C,C)-d(C,A)=-2
  4. 看D是否變化:C成為中心點後,D離C最近,故劃分到C裡,代價為d(D,C)-d(D,A)=-1;
  5. 看E是否變化:C成為中心點後,E離B最近,為0
    TCAC就等於上述的代價之和,為1+0-2-1+0=-2。
    同理需要計算TCAD=-2、TCAE=-1、TCBC=-2、TCBD=-2、TCBE=-2
    然後選取代價最小的替換,這裡有多個選擇,隨便選擇一個就行。選C的話,新的簇為{C,D}和{A,B,E}。新的簇中心為C,B,繼續迭代計算直到收斂。

為了判定一個非代表物件orandom是否是當前一個代表物件oi的好的替代,對於每一個非中心點p,需要考慮下面4中情況:


第一種情況:p當前隸屬於代表物件oj(A類中心點),如果oj被orandom所代替作為代表物件,並且p離其他代表物件oi(B類的中心點)最近,則p重新分配給oi。(i!=j)


第二種情況:p當前隸屬於代表物件oj(A類中心點),如果oj被orandom所代替作為代表物件,並且p離orandom(新的中心點)最近,則p重新分配給orandom。(i!=j)


第三種情況:p當前隸屬於代表物件oi(B類中心點),如果oj被orandom所代替作為代表物件,並且p仍然離oi最近,則p不發生變化。(i!=j)


第四種情況:p當前隸屬於代表物件oi(B類中心點),如果oj被orandom所代替作為代表物件,並且p離orandom最近,則p重新分配給orandom。(i!=j)

相關文章