1. 程式人生 > >機器學習--聚類系列--層次聚類

機器學習--聚類系列--層次聚類

eight 尺度 borde 簡單 公司 span 一是 相似度 和數

層次聚類

  層次聚類(Hierarchical Clustering)是聚類算法的一種,通過計算不同類別數據點間的相似度來創建一棵有層次的嵌套聚類樹。在聚類樹中,不同類別的原始數據點是樹的最低層,樹的頂層是一個聚類的根節點。創建聚類樹有自下而上合並和自上而下分裂兩種方法。

  作為一家公司的人力資源部經理,你可以把所有的雇員組織成較大的簇,如主管、經理和職員;然後你可以進一步劃分為較小的簇,例如,職員簇可以進一步劃分為子簇:高級職員,一般職員和實習人員。所有的這些簇形成了層次結構,可以很容易地對各層次上的數據進行匯總或者特征化。

    技術分享圖片

  如何劃分才是合適的呢?

  技術分享圖片


  論數據集應該聚類成多少個簇,通常是在討論我們在什麽尺度上關註這個數據集。層次聚類算法相比劃分聚類算法的優點之一是可以在不同的尺度上(層次)展示數據集的聚類情況。

基於層次的聚類算法(Hierarchical Clustering)可以是凝聚的(Agglomerative)或者分裂的(Divisive),取決於層次的劃分是“自底向上”還是“自頂向下”。

自底向上的合並算法

  層次聚類的合並算法通過計算兩類數據點間的相似性,對所有數據點中最為相似的兩個數據點進行組合,並反復叠代這一過程。簡單的說層次聚類的合並算法是通過計算每一個類別的數據點與所有數據點之間的距離來確定它們之間的相似性,距離越小,相似度越高。並將距離最近的兩個數據點或類別進行組合,生成聚類樹。

    技術分享圖片

相似度的計算

  層次聚類使用歐式距離來計算不同類別數據點間的距離(相似度)。

      技術分享圖片

實例:數據點如下

  技術分享圖片

  分別計算歐式距離值(矩陣)

  技術分享圖片

  將數據點B與數據點C進行組合後,重新計算各類別數據點間的距離矩陣。數據點間的距離計算方式與之前的方法一樣。這裏需要說明的是組合數據點(B,C)與其他數據點間的計算方法。當我們計算(B,C)到A的距離時,需要分別計算B到A和C到A的距離均值。

        技術分享圖片

  經過計算數據點D到數據點E的距離在所有的距離值中最小,為1.20。這表示在當前的所有數據點中(包含組合數據點),D和E的相似度最高。因此我們將數據點D和數據點E進行組合。並再次計算其他數據點間的距離。

    技術分享圖片

  

  後面的工作就是不斷的重復計算數據點與數據點,數據點與組合數據點間的距離。這個步驟應該由程序來完成。這裏由於數據量較小,我們手工計算並列出每一步的距離計算和數據點組合的結果。

兩個組合數據點間的距離

  計算兩個組合數據點間距離的方法有三種,分別為Single Linkage,Complete Linkage和Average Linkage。在開始計算之前,我們先來介紹下這三種計算方法以及各自的優缺點。

  • Single Linkage:方法是將兩個組合數據點中距離最近的兩個數據點間的距離作為這兩個組合數據點的距離。這種方法容易受到極端值的影響。兩個很相似的組合數據點可能由於其中的某個極端的數據點距離較近而組合在一起。

  • Complete Linkage:Complete Linkage的計算方法與Single Linkage相反,將兩個組合數據點中距離最遠的兩個數據點間的距離作為這兩個組合數據點的距離。Complete Linkage的問題也與Single Linkage相反,兩個不相似的組合數據點可能由於其中的極端值距離較遠而無法組合在一起。

  • Average Linkage:Average Linkage的計算方法是計算兩個組合數據點中的每個數據點與其他所有數據點的距離。將所有距離的均值作為兩個組合數據點間的距離。這種方法計算量比較大,但結果比前兩種方法更合理。

我們使用Average Linkage計算組合數據點間的距離。下面是計算組合數據點(A,F)到(B,C)的距離,這裏分別計算了(A,F)和(B,C)兩兩間距離的均值。

      技術分享圖片

樹狀圖

  技術分享圖片

  由上圖可知,給定不同的距離,可以得到不同的分類,比如,23,則分為兩類,中國和其他國家;17,則可分成三類,中國單獨一類,菲律賓和日本一類,其余國家為一類。

機器學習--聚類系列--層次聚類