Agglomerative Hierarchical Clustering詳解

Leon1895發表於2018-10-22

Agglomerative Hierarchical Clustering詳解

第二十七次寫部落格,本人數學基礎不是太好,如果有幸能得到讀者指正,感激不盡,希望能借此機會向大家學習。這一篇文章主要是介紹各種凝聚層次聚類(Agglomerative Hierarchical Clustering)技術,從基本凝聚層次聚類演算法出發,介紹了該類演算法中各種“距離”的定義以及時間、空間複雜度,然後介紹了各種不同的“距離”定義對聚類結果的影響,最後介紹了一種具體的凝聚層次聚類實現演算法(AGNES)。

凝聚層次聚類

  凝聚層次聚類先將每個樣本點作為一個個體簇,然後每一步合併兩個“距離”最近的簇,這裡的距離可以看做是簇鄰近性的定義,這在下文 “MIN、MAX與組平均”中會講到。層次聚類常常使用樹狀圖(dendrogram)來表示(如圖1,採用“單鏈”聚類),從圖中可以清楚的看出簇與其子簇之間的關係,以及簇合並與分裂的次序。對於二維樣本點來說,還可以使用類似巢狀簇圖(Nested Cluster Diagram)的方式來表示。

Agglomerative Hierarchical Clustering詳解
圖1 以樹狀圖和巢狀簇顯示的4個點的層次聚類

基本凝聚層次聚類

  基本凝聚層次聚類是該聚類演算法族的基礎,其主體思想是,從個體點作為簇開始,相繼合併兩個“距離”最近的簇,直到只剩下一個簇,具體步驟如下圖所示

Agglomerative Hierarchical Clustering詳解
圖2 基本層次聚類演算法

層次聚類中的“距離”定義

  由上述討論可知,凝聚層次聚類的關鍵是兩個簇之間“距離”的度量方法,這裡的“距離”也可以成為“鄰近度”,許多凝聚層次聚類技術的“距離”定義都源於基於圖的觀點,例如下面要講的MIN、MAX與組平均距離(如圖3所示)。

Agglomerative Hierarchical Clustering詳解
圖3 各種“距離”定義

MIN(最小距離):不同簇之間的兩個最近點之間的鄰近度,使用圖的術語可以表示為,不同結點子集之間的最短邊長;
MAX(最大距離):不同簇之間的兩個最遠點之間的鄰近度,使用圖的術語可以表示為,不同結點子集之間的最長邊長;
(組)平均距離:不同簇之間的所有點對之間的鄰近度的平均值,使用圖的術語可以表示為,不同結點子集之間的平均邊長。
  另外,兩個簇質心之間的距離也可以作為鄰近度度量的條件,實際上類似於K-Means演算法在進行後處理中對兩個質心最近的簇進行合併的思想。

時間複雜度與空間複雜度

  圖2演算法虛擬碼的第一行指出為了儲存鄰近度矩陣需要的空間複雜度是O(m2)O\left(m^2\right),在得到最終結果之前需要進行m1m-1次迭代,每次迭代需要計算每個簇之間的鄰近度矩陣,每次迭代的時間複雜度為O((mi+1)2)O\left(\left(m-i+1\right)^2\right),如果對基本層次聚類演算法不進行任何修改,那麼該演算法的時間複雜度將達到O(m3)O\left(m^3\right),即使將某個簇與其他簇之間的距離儲存在一個陣列或者一個堆之中,也需要O(m2logm)O\left(m^2\log{m}\right)的時間複雜度。因此,層次聚類的複雜度嚴重的限制了其適用的資料集大小。

MIN、MAX、組平均與質心距離

  假設存在一個包含6個樣本的二維資料集,這裡採用歐氏距離來表示鄰近度,這些樣本點在座標系中的位置以及每個點之間的鄰近度矩陣如下圖所示

Agglomerative Hierarchical Clustering詳解
圖4 示例資料

  下面分別基於MIN、MAX、組平均以及質心距離來討論不同的簇間距離度量方式對最終聚類效果的影響,然後給出一個用於計算鄰近度的通用公式,即Lance-Williams公式。

MIN

  MIN又稱為“單鏈”,即不同簇之間的兩個最近點之間的鄰近度,使用圖的術語可以表示為,不同結點子集之間的最短邊長(最大鄰近度)。從所有點作為單點簇開始,每次在兩個簇的最近點之間增加一條鏈,先加最短的鏈,這些鏈將節點子集合併成為簇,簇CiC_iCjC_j之間的組平均距離可以通過下式進行計算
(1)proximity(Ci,Cj)=minxCi,yCjproximity(x,y) proximity\left(C_i,C_j\right) =\min_{\mathbf{x}\in{C_{i}},\mathbf{y}\in{C_{j}}}{proximity\left(\mathbf{x},\mathbf{y}\right)} \tag{1}
樹狀圖和巢狀簇圖如下圖所示

Agglomerative Hierarchical Clustering詳解
圖5 採用單鏈的聚類

單鏈技術適合處理非橢圓形狀的簇,但是對於噪聲和離群點十分敏感。

MAX

  MAX又稱為“全鏈”或“團”,即不同簇之間的兩個最遠點之間的鄰近度,使用圖的術語可以表示為,不同結點子集之間的最長邊長(最小鄰近度)。從所有點作為單點簇開始,每次在兩個簇的最遠點之間增加一條鏈,先加最短的鏈,這些鏈將節點子集連線成為一個簇(團),簇CiC_iCjC_j之間的組平均距離可以通過下式進行計算
(2)proximity(Ci,Cj)=maxxCi,yCjproximity(x,y) proximity\left(C_i,C_j\right) =\max_{\mathbf{x}\in{C_{i}},\mathbf{y}\in{C_{j}}}{proximity\left(\mathbf{x},\mathbf{y}\right)} \tag{2}
樹狀圖和巢狀簇圖如下圖所示

Agglomerative Hierarchical Clustering詳解
圖6 使用全鏈的聚類

全鏈技術生成的簇形狀偏向於圓形,且不易受到噪聲和離群點的影響,但是容易使大的簇破裂。

組平均

  組平均,即不同簇之間的所有點對之間的鄰近度的平均值,使用圖的術語可以表示為,不同結點子集之間的平均邊長,這是一種單鏈與全鏈之間折中的方法,簇CiC_iCjC_j之間的組平均距離可以通過下式進行計算
(3)proximity(Ci,Cj)=xCi,yCjproximity(x,y)mi,mj proximity\left(C_i,C_j\right) =\frac{\sum_{\mathbf{x}\in{C_{i}},\mathbf{y}\in{C_{j}}}{proximity\left(\mathbf{x},\mathbf{y}\right)}}{m_i,m_j} \tag{3}
樹狀圖和巢狀簇圖如下圖所示

Agglomerative Hierarchical Clustering詳解
圖7 採用組平均的聚類

  與組平均類似的ward方法,選擇可以使總體SSE增加最小的兩個簇進行合併,雖然這種優化目標被用於K-Means的後處理中,但是當鄰近度取兩個樣本點之間的距離平方時,可以在數學上證明,Ward方法與組平均非常相似。樹狀圖和巢狀簇圖如下圖所示

Agglomerative Hierarchical Clustering詳解
圖8 採用Ward方法的聚類

質心距離

  質心法通過計算兩個簇的質心之間的距離來帶表鄰近度,質心法不同於其他層次聚類方法的重要一點是倒置(inversion)的可能,倒置是指這一輪合併的兩個簇可能比上一輪合併的兩個簇更為近似,而其他方法的鄰近度均是單調增加或不變的。

Lance-Williams公式

  作為一種度量簇間鄰近度的通用公式,Lance-Williams公式將以上討論的四種度量方法作為可選引數,假設存在三個不同的簇AABBQQ,簇RR是簇AABB合併之後產生的新簇,那麼Lance-Williams公式可以表示為
(4)p(R,Q)=αAp(A,Q)+αBp(B,Q)+βp(A,B)+γp(A,Q)p(B,Q) p\left(R,Q\right)=\alpha_{A}*p\left(A,Q\right)+\alpha_{B}*p\left(B,Q\right)+{\beta}*p\left(A,B\right)+{\gamma}*|p\left(A,Q\right)-p\left(B,Q\right)| \tag{4}
具體來說,該公式將簇AABB合併後產生的新簇RRQQ之間的鄰近度轉化成為簇AAQQ、簇BBQQ,以及簇AABB之間鄰近度的線性函式。下圖指出了不同鄰近度度量函式所對應的係數(mm是對應簇的樣本點個數)

Agglomerative Hierarchical Clustering詳解
圖9 係數表

層次聚類的三個主要問題

缺乏全域性目標函式

  通過前面的討論可知,層次聚類每一步都是區域性的決定哪兩個簇可以進行合併,即使是像以“最小化距離平方”為目標的Ward方法,在每步合併中也是基於當前SSE進行討論的,而不是以全域性SSE最小作為優化目標的。這種方法雖然使用這種簡單的思想避開了複雜的交替組合優化問題,但是產生了區域性最優的風險,另外,其時間複雜度與空間複雜度大大限制了其處理大規模資料的能力。

處理不同大小簇的能力

  這裡只針對於設計求和的簇臨近性度量方案進行討論,在合併兩個不同大小的簇時,一般採用兩種方法:加權與非加權。其中,加權方法將這兩個待合併的簇中的每一個樣本賦予相應的權值,而非加權的方法則要考慮簇的大小,並且為每個樣本賦予相同的權值。
  之前討論過的組平均(式(3))就是非加權版本,該方法的全稱是“算數平均的、非加權的對組方法”(Unweighted Pair Group Method using Arithmetic averages,UPGMA),他的加權版本稱為WPGMA,它所對應的圖8中的係數為:αA=αB=1/2,β=γ=0\alpha_{A}=\alpha_{B}=1/2,\beta=\gamma=0,通常情況下非加權的版本更可靠,除非由於重取樣等原因導致需要考慮樣本權值時。

合併決策是最終的

  對於合併兩個簇,凝聚層次聚類演算法趨向於做出好的區域性決策,因為他們可以使用所有點的逐對相似度資訊,然而,一旦做出合併兩個簇的決策,以後就不能撤銷。這種方法阻礙了區域性最優標準轉化成為全域性最優標準。這與缺乏全域性最優目標問題,可以同過先使用其他聚類演算法(如K-Means)得到一些規模較小的簇,然後再用凝聚層次聚類演算法對這些簇進一步聚類。

AGNES聚類

  這裡介紹一種凝聚層次聚類演算法AGNES,其大體思想與圖2所示的基本凝聚層次聚類演算法類似,虛擬碼如下所示

Agglomerative Hierarchical Clustering詳解
圖10 AGNES

演算法第1-3行:將每個樣本點初始化為單點簇;
演算法第4-9行:初始化距離矩陣;
演算法第10-23:迭代合併直到產生kk個簇。


參考資料

【1】《機器學習》周志華
【2】《資料探勘導論》

相關文章