聚類算法一(Kmeans、層次類聚、譜類聚)


一、 K-means
 
  1、基礎
       1 Clustering 中的經典算法,數據挖掘十大經典算法之一
     2 算法接受參數 k ;然后將事先輸入的n個數據對象划分為 k個聚類以便使得所獲得的聚類滿足:
      同一 聚類中的對象相似度較高;而不同聚類中的對象相似度較小。
     3 算法思想:
           以空間中k個點為中心進行聚類,對最靠近他們的對象歸類。通過迭代的方法,逐次更新各聚類中心 的值,直至得到最好的聚類結果
     4 算法描述:
           (1)適當選擇c個類的初始中心;
          (2)在第k次迭代中,對任意一個樣本,求其到c各中心的距離,將該樣本歸到距離最短的中心所在 的類;
          (3)利用均值等方法更新該類的中心值;
          (4)對於所有的c個聚類中心,如果利用(2)(3)的迭代法更新后,值保持不變,則迭代結束;否則, 則繼續迭代。
   2、算法流程:
                        
           輸入:k, data[n];
          (1) 選擇k個初始中心點,例如c[0]=data[0],…c[k-1]=data[k-1];
          (2) 對於data[0]….data[n], 分別與c[0]…c[k-1]比較,假定與c[i]差值最少,就標記為i;
          (3) 對於所有標記為i點,重新計算c[i]={ 所有標記為i的data[j]之和}/標記為i的個數;
          (4) 重復(2)(3),直到所有c[i]值的變化小於給定閾值。
  3、優缺點

    優點:速度快,簡單

  缺點:最終結果跟初始點選擇相關,容易陷入局部最優,需直到k值
 
二、層次類聚
   上篇k-means算法卻是一種方便好用的聚類算法,但是始終有K值選擇和初始聚類中心點選擇的問題,而這些問題也會影響聚類的效果。為了避免這些問題,我們可以選擇另外一種比較實用的聚類算法-層次聚類算法。顧名思義,層次聚類就是一層一層的進行聚類,可以由上向下把大的類別(cluster)分割,叫作分裂法;也可以由下向上對小的類別進行聚合,叫作凝聚法;但是一般用的比較多的是由下向上的凝聚方法。

  1、分裂法:

      分裂法指的是初始時將所有的樣本歸為一個類簇,然后依據某種准則進行逐漸的分裂,直到達到某種條件或者達到設定的分類數目。用算法描述:

      輸入:樣本集合D,聚類數目或者某個條件(一般是樣本距離的閾值,這樣就可不設置聚類數目)

      輸出:聚類結果

      1.將樣本集中的所有的樣本歸為一個類簇;

      repeat:

        2.在同一個類簇(計為c)中計算兩兩樣本之間的距離,找出距離最遠的兩個樣本a,b;

        3.將樣本a,b分配到不同的類簇c1和c2中;

        4.計算原類簇(c)中剩余的其他樣本點和a,b的距離,若是dis(a)<dis(b),則將樣本點歸到c1中,否則歸到c2中;

      util: 達到聚類的數目或者達到設定的條件

   2、凝聚法:

       凝聚法指的是初始時將每個樣本點當做一個類簇,所以原始類簇的大小等於樣本點的個數,然后依據某種准則合並這些初始的類簇,直到達到某種條件或者達到設定的分類數目。用算法描述:

       輸入:樣本集合D,聚類數目或者某個條件(一般是樣本距離的閾值,這樣就可不設置聚類數目)

       輸出:聚類結果

      1.將樣本集中的所有的樣本點都當做一個獨立的類簇;

       repeat:

      2.計算兩兩類簇之間的距離(后邊會做介紹),找到距離最小的兩個類簇c1和c2;

      3.合並類簇c1和c2為一個類簇;

      util: 達到聚類的數目或者達到設定的條件

 
三、普類聚
 

  譜聚類(Spectral Clustering, SC)是一種基於圖論的聚類方法——將帶權無向圖划分為兩個或兩個以上的最優子圖,使子圖內部盡量相似,而子圖間距離盡量距離較遠,以達到常見的聚類的目的。其中的最優是指最優目標函數不同,可以是割邊最小分割——如圖1的Smallest cut(如后文的Min cut), 也可以是分割規模差不多且割邊最小的分割——如圖1的Best cut(如后文的Normalized cut)。

clip_image001

圖1 譜聚類無向圖划分——Smallest cut和Best cut。

這樣,譜聚類能夠識別任意形狀的樣本空間且收斂於全局最優解,其基本思想是利用樣本數據的相似矩陣(拉普拉斯矩陣)進行特征分解后得到的特征向量進行聚類。

  1 理論基礎

  對於如下空間向量item-user matrix:

clip_image002

  如果要將item做聚類,常常想到k-means聚類方法,復雜度為o(tknm),t為迭代次數,k為類的個數、n為item個數、m為空間向量特征數:

1 如果M足夠大呢?

2 K的選取?

3 類的假設是凸球形的?

4 如果item是不同的實體呢?

5 Kmeans無可避免的局部最優收斂?

……

  這些都使常見的聚類問題變得相當復雜。

  1.1 圖的表示

  如果我們計算出item與item之間的相似度,便可以得到一個只有item的相似矩陣,進一步,將item看成了Graph(G)中Vertex(V),item之間的相似度看成G中的Edge(E),這樣便得到我們常見的圖的概念。

  對於圖的表示(如圖2),常用的有:

  鄰接矩陣:E,eij表示vi和vi的邊的權值,E為對稱矩陣,對角線上元素為0,如圖2-2。

  Laplacian矩陣:L = D – E, 其中di (行或列元素的和),如圖2-3。

clip_image004

圖2 圖的表示

   1.2 特征值與L矩陣

  先考慮一種最優化圖像分割方法,以二分為例,將圖cut為S和T兩部分,等價於如下損失函數cut(S, T),如公式1所示,即最小(砍掉的邊的加權和)。

clip_image006

  假設二分成兩類,S和T,用q(如公式2所示)表示分類情況,且q滿足公式3的關系,用於類標識。

  那么:

clip_image008

  其中D為對角矩陣,行或列元素的和,L為拉普拉斯矩陣。

  由:

clip_image010clip_image011

  有:

    1、 L為對稱半正定矩陣,保證所有特征值都大於等於0;

    2、 L矩陣有唯一的0特征值,其對應的特征向量為1

  離散求解q很困難,如果將問題松弛化為連續實數值,由瑞利熵的性質知其二將你型的最小值就是L的特征值們(最小值,第二小值,......,最大值分別對應矩陣L的最小特征值,第二小特征值,......,最大特征值,且極值q相應的特征向量處取得,請參見瑞利熵(Rayleigh quotient))。

  寫到此,不得不對數學家們致敬,將cut(S,T),巧妙地轉換成拉普拉斯矩陣特征值(向量)的問題,將離散的聚類問題,松弛為連續的特征向量,最小的系列特征向量對應着圖最優的系列划分方法。剩下的僅是將松弛化的問題再離散化,即將特征向量再划分開,便可以得到相應的類別,如將圖3中的最小特征向量,按正負划分,便得類{A,B,C}和類{D,E,F,G}。在K分類時,常將前K個特征向量,采用kmeans分類。

PS:

  1、此處雖再次提到kmeans,但意義已經遠非引入概念時的討論的kmeans了,此處的kmeans,更多的是與ensemble learning相關,在此不述;

  2、k與聚類個數並非要求相同,可從第4節的相關物理意義中意會;

  3、在前k個特征向量中,第一列值完全相同(迭代算法計算特征向量時,值極其相近),kmeans時可以刪除,同時也可以通過這一列來簡易判斷求解特征值(向量)方法是否正確,常常問題在於鄰接矩陣不對稱。

clip_image012

圖3 圖的L矩陣的特征值與特征向量

   2 最優化方法

  在kmeans等其它聚類方法中,很難刻划類的大小關系,局部最優解也是無法回避的漏病。當然這與kmeans的廣泛使用相斥——原理簡單。

  2.1 Min cut方法

  如2.2節的計算方法,最優目標函數如下的圖cut方法:

clip_image014

  計算方法,可直接由計算L的最小特征值(特征向量),求解。

  2.2 Nomarlized cut方法

  Normarlized cut,目標是同時考慮最小化cut邊和划分平衡,以免像圖1中的cut出一個單獨的H。衡量子圖大小的標准是:子圖各個端點的Degree之和。

clip_image016

  2.3 Ratio Cut 方法

  Ratio cut的目標是同時考慮最小化cut邊和划分平衡,以免像圖1中的cut出一個單獨的H。

  最優目標函數為:

clip_image018

  2.4 Normalized相似變換

  歸一化的L矩陣有:

clip_image020

  因而L的最小特征值與D-(1/2)E D-(1/2)的最大特征值對應。

  而計算的L相比計算L要稍具優勢,在具體實用中,常以L替代L,但是min cut和ratio cut不可以。

  PS:這也是常常在人們的博客中,A說譜聚類為求最大K特征值(向量),B說譜聚類為求最小K個特征值(向量的原因)。

  3 譜聚類步驟

 

  第一步:數據准備,生成圖的鄰接矩陣;

 

  第二步:歸一化普拉斯矩陣;

 

  第三步:生成最小的k個特征值和對應的特征向量;

 

  第四步:將特征向量kmeans聚類(少量的特征向量);

 

4 譜聚類的物理意義

  譜聚類中的矩陣:

clip_image022

  可見不管是L、L都與E聯系特別大。如果將E看成一個高維向量空間,也能在一定程度上反映item之間的關系。將E直接kmeans聚類,得到的結果也能反映V的聚類特性,而譜聚類的引入L和L是使得G的分割具有物理意義。

  而且,如果E的item(即n)足夠大,將難計算出它的kmeans,我們完全可以用PCA降維(仍為top的特征值與向量)。

  上述對將E當成向量空間矩陣,直觀地看符合我們的認知,但缺乏理論基礎;而L(L等)的引入,如第2節所述,使得計算具有理論基礎,其前k個特征向量,也等價於對L(L等)的降維。

  因而聚類就是為圖的划分找了理論基礎,能達到降維的目的。

 

推薦相關相關文檔:Wen-Yen Chen, Yangqiu Song, Hongjie Bai, Chih-Jen Lin, Edward Y. Chang. Parallel Spectral Clustering in Distributed Systems.

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM