1. 程式人生 > >K-means 和 K-medoids演算法聚類分析

K-means 和 K-medoids演算法聚類分析

 1    聚類是對物理的或者抽象的物件集合分組的過程,聚類生成的組稱為簇,而簇是資料物件的集合。

        (1)簇內部的任意兩個物件之間具有較高的相似度。(2)屬於不同的簇的兩個物件間具有較高的相異度。

 2    相異度可以根據描述物件的屬性值來計算,最常用的度量指標是距離。

 3   聚類最初來自數學,統計學,和數值分析;機器學習領域把聚類描述成隱含模式,發現簇的過程是無監督學習;聚類是模式識別的重要手段。

 4    聚類的特點:用少量的簇來描述大量資料的特徵:  資料簡潔,丟失精細部分

 5   聚類資料探勘實踐中的應用

   (1) 資料預處理  (2) 科學資料探索 (3) 資訊獲取與文字挖掘  (4)  空間資料庫應用 

   (5) 客戶關係管理 (6) 市場分析  (7)  Web分析  (8)  醫學診斷  (9)計算生物學。

6   統計學 :  聚類分析是通過資料建模簡化資料的一種方法:包括  系統聚類法,分解法,加入法,動態聚類法。有序樣品聚類,有重疊聚類和模糊聚類等

7   機器學習:簇  相當於隱藏模式。聚類是搜尋簇的無監督學習的過程

      與 分類不同。無監督學習不依賴預先定義的類或者帶類標記的訓練例項。需要有聚類學習演算法自動確定標記。而分類學習

的例項或資料物件有類別標記。聚類是觀察試學習,而不是例項式學習。

8   實際應用:聚類分析是資料探勘的主要任務之一

    (1) 作為一個獨立的工具獲得資料的分佈狀況。觀察每一個簇資料的特徵,集中對特定的簇集合作進一步地分析。

     (2) 作為其他資料探勘任務(如分類,關聯規則)的預處理步驟

9   聚類演算法的特徵:

    (1)處理不同型別屬性的能力;

    (2) 對大型資料集的可擴充套件性;
    (3) 處理高維資料的能力;
    (4) 發現任意形狀簇的能力;
    (5) 處理孤立點或“噪聲”資料的能力;
             對“噪聲”資料具有較低的敏感性;
             合理地發現孤立點。
    (6) 對資料順序的不敏感性;
    (7) 對先驗知識和使用者自定義引數的依賴性;
    (8) 聚類結果的可解釋性和實用性;
    (9) 基於約束的聚類。

10  聚類演算法分類:

    (1)  基於劃分的方法:  K-means 演算法    基於密度的演算法

   (2) 基於層次的方法 :  凝聚演算法  分裂演算法

   (3) 基於網路的 方法

   (4) 非資料與資料屬性同時出現的方法

    (5)基於約束的方法

   (6) 運用機器學習技術的方法  :梯度下降法  人工神經網路   進化模型

    (7) 有擴充套件性的演算法

    (8) 面向高維資料集的演算法

10   資料型別

     (1)區間標度型:用線性標度描述的連續度量  (如  高度   重量 經緯度座標 溫度等)

     (2)  布林型別 : 如果兩個狀態同等重要,稱為對稱的  否則是不對稱的

     (3)  標稱型: 有若干個離散的取值

     (4) 序數型:  取離散的序數值,序列排序是有意義的

     (5) 比例標度型:在非線性標度上取正的度量值。

11  資料結構   

                                      資料矩陣                                                                                                                                   相異度矩陣

                          

12     距離函式  (計算物件之間的距離)

   距離函式‖‖應滿足的條件:
   (1)‖xi–xj‖=0,當且僅當xi=xj
   (2)非負性:‖xi–xj‖≥0
   (3)對稱性:‖xi–xj‖=‖xj–xi‖
   (4)三角不等式:
      ‖xi–xk‖≤‖xi–xj‖+‖xj–xk‖

13   設兩個物件的p維向量分別表示為
  xi=(xi1,xi2,…,xip)T和xj=(xj1,xj2,…,xjp)T,
有多種形式的距離度量可以採用。如,
閔可夫斯基(Minkowski)距離
曼哈坦(Manhattan)距離
歐幾里得(Euclidean)距離
切比雪夫(Chebyshev)距離
馬哈拉諾比斯(Mahalanobis)距離


 14   距離計算公式

       

15  令物件的維數p=2,在二維空間中考察到原點距離為常數的所有點形成的形狀。即,考察集合{x| ||x||=c}的形狀。



菱形:曼哈坦距離;                                        圓形:歐幾里德距離;                                方形:切比雪夫距離

16     基於劃分的聚類方法

      劃分方法:已知由n個物件(或元組)構成的資料庫,對其採用目標函式最小化的策略,通過迭代把資料分成k個劃分塊,每個劃分塊為一個簇(cluster)。
      劃分方法滿足兩個條件: (1)每個簇至少包含一個物件;   (2)每個物件必需屬於且僅屬於某一個簇。
      常見的劃分方法:  (1)k-means(k-均值)方法                       (2)  k-medoids(k-中心點)方法

17  k-means聚類演算法

      k-均值(K-means)聚類演算法的核心思想:通過迭代把資料物件劃分到不同的簇中,以求目標函式最小化,從而使生成的簇儘可能地緊湊和獨立。
設p表示資料物件,ci表示簇Ci的均值,通常目標函式採用平方誤差準則函式:

                                                                                     
 
這個目標函式採用歐幾里得距離度量。如果採用Mahalanobis距離可以對橢圓形的簇進行分析。

18     k-means演算法步驟:
        首先,隨機選取k個物件作為初始的k個簇的質心;
        然後,將其餘物件根據其與各個簇質心的距離分配到最近的簇;再求新形成的簇的質心。
        這個迭代重定位過程不斷重複,直到目標函式最小化為止。

19   K-means演算法
       輸入:期望得到的簇的數目k,n個物件的資料庫。
       輸出:使得平方誤差準則函式最小化的k個簇。

       方法:選擇k個物件作為初始的簇的質心;

              Repeat    (1)計算物件與各個簇的質心的距離,將物件劃分到距離其最近的簇;
                              (2)重新計算每個新簇的均值;

              Until      簇的質心不再變化。
20   k-means例子


     步驟如下:

k-means(設n=8,k=2)步驟:
第一次迭代:假定隨機選擇的兩個物件,如序號1和序號3當作初始點,分別找到離兩點最近的物件,併產生兩個簇{1,2}和{3,4,5,6,7,8}。對於產生的簇分別計算平均值,得到平均值點。對於{1,2},平均值點為(1.5,1)(這裡的平均值是簡單的相加出2);對於{3,4,5,6,7,8},平均值點為(3.5,3)。
第二次迭代:通過平均值調整物件的所在的簇,重新聚類,即將所有點按離平均值點(1.5,1)、(3.5,1)最近的原則重新分配。得到兩個新的簇:{1,2,3,4}和{5,6,7,8}。重新計算簇平均值點,得到新的平均值點為(1.5,1.5)和(4.5,3.5)。
第三次迭代:將所有點按離平均值點(1.5,1.5)和(4.5,3.5)最近的原則重新分配,調整物件,簇仍然為{1,2,3,4}和{5,6,7,8},發現沒有出現重新分配,而且準則函式收斂,程式結束。

迭代次數   平均值       平均值                       產生的新簇                    平均值         平均值
  (簇1)     (簇2)    (簇1)       (簇2)
 
   1 (1,1)     (1,2)           {1,2},{3,4,5,6,7,8}    (1.5,1)  (3.5,3)
   2 (1.5,1)   (3.5,3)        {1,2,3,4},{5,6,7,8}   (1.5,1.5)(4.5,3.5)        
   3 (1.5,1.5)(4.5,3.5)     {1,2,3,4},{5,6,7,8}   (1.5,1.5)(4.5,3.5) 

21    :

k-means演算法特點
(1)優點:
在處理大資料集時,該演算法是相對可擴充套件性的,並且具有較高的效率。
演算法複雜度為O(nkt),其中,n為資料集中物件的數目,k為期望得到的簇的數目,t為迭代的次數。
(2)應用侷限性:
使用者必須事先指定聚類簇的個數;
常常終止於區域性最優;
只適用於數值屬性聚類(計算均值有意義);
對噪聲和異常資料也很敏感;
不適合用於發現非凸形狀的聚類簇。

22   k-means演算法改進工作

   演算法改進:
①引數k的選擇;②差異程度計算;③聚類均值的計算方法。
例如:
先應用自下而上層次演算法來獲得聚類數目,並發現初始分類,然後再應用迴圈再定位(k-mean)來幫助改進分類結果。
k-modes:用新的相異性度量方法處理物件,用基於頻率的方法修改簇的modes。
k-prototype:將k-means擴充套件到處理符號屬性。
EM(期望最大化)
    (1)  概率權值,聚類邊界不嚴格
    (2)  可擴充套件性,識別資料中存在的三種類型區域

23  K-中心點演算法:

   k-meams  和 k-medoids 比較

   k-means利用簇內點的均值或加權平均值ci(質心)作為簇Ci的代表點。對數值屬性資料有較好的幾何和統計意義。

     對孤立點是敏感的,如果具有極大值,就可能大幅度地扭曲資料的分佈。
k-中心點(k-medoids)演算法是為消除這種敏感性提出的,它選擇簇中位置最接近簇中心的物件(稱為中心點)作為簇的代表點,

24   k-中心點演算法處理過程
首先,隨機選擇k個物件作為初始的k個簇的代表點,將其餘物件按與代表點物件的距離分配到最近的簇;
然後,反覆用非代表點來代替代表點,以改進聚類質量。(用一個代價函式來估計聚類質量,該函式度量物件與代表點物件之間的平均相異度。)

 目標函式仍然可以採用平方誤差準則。

25

k-中心點演算法
輸入:n個物件的資料庫,期望得到的k個聚類簇
輸出:k個簇,使所有物件與其所屬簇中心點的偏差總和最小化
方法:
    選擇k個物件作為初始的簇中心
   repeat
        (1)將每個剩餘的物件,分配到最近的中心點所代表的的簇;
        (2)隨機選取非中心點Orandom;
        (3)計算用Orandom代替中心點Oj形成新聚類的總代價S;
        (4)If S<0 then用Orandom代替Oj,形成新的k箇中心點的集合。
     until 不再發生變化


26 k-中心點演算法例子

28  

      第一步建立階段:
        假如從5個物件中隨機抽取的2箇中心點為{A,B},則樣本被劃分為{A、C、D}和{B、E},如圖3.2所示。
第二步交換階段:
       假定中心點A、B分別被非中心點{C、D、E}替換,根據PAM演算法需要計算下列代價TCAC、TCAD、TCAE、TCBC、TCBD、TCBE。

以TCAC為例說明計算過程:
a)當A被C替換以後,A不再是一箇中心點,因為A離B比A離C近,A被分配到B中心點代表的簇,CAAC=d(A,B)-d(A,A)=1。
b)B是一箇中心點,當A被C替換以後,B不受影響,CBAC=0。
c)C原先屬於A中心點所在的簇,當A被C替換以後,C是新中心點,符合PAM演算法代價函式的第二種情況CCAC=d(C,C)-d(C,A)=0-2=-2。
d)D原先屬於A中心點所在的簇,當A被C替換以後,離D最近的中心點是C,根據PAM演算法代價函式的第二種情況CDAC=d(D,C)-d(D,A)=1-2=-1。
e)E原先屬於B中心點所在的簇,當A被C替換以後,離E最近的中心仍然是B,根據PAM演算法代價函式的第三種情況CEAC=0。
因此,TCAC=CAAC+CBAC+CCAC+CDAC+CEAC=1+0-2-1+0=-2。

或者這樣理解 :

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)


29   K-中心點演算法特點
(1)優點:
對屬性型別沒有侷限性;
魯棒性強:通過簇內主要點的位置來確定選擇中心點,對孤立點和噪聲資料的敏感性小。
(2)不足:
處理時間要比k-mean更長;
使用者事先指定所需聚類簇個數k。

30  圍繞中心點的劃分(Partitioning Around Medoid,PAM)
最早提出的k-中心點演算法之一;
總在中心點周圍試圖尋找更好的中心點;
針對各種組合計算代價;
不足在於n和k較大時,時間代價太大。