姓名:梁祥????????學號:17021210935
【嵌牛導讀】:層次聚類方法作為一種能夠在一定程度上將聚類過程顯化的聚類方法,在很多時候都能大顯身手,因此在這里介紹一下層次聚類方法的主要思想,并以BIRCH算法為例進行了詳細分析。
【嵌牛鼻子】:層次聚類,BIRCH
【嵌牛提問】:層次聚類過程中,從頭到腳與自下而上有區別嗎?在聚類的過程中數據是怎么慢慢分散或者逐漸聚攏的呢?
【嵌牛正文】:
一、層次聚類
層次的聚類方法將數據對象組成一棵聚類的樹。根據層次分解是底向上, 還是自頂向下形成, 層次的聚類方法可以進一步分為凝聚的(agglomerative)和分裂的(divisive)層次聚類。
凝聚的和分裂的層次聚類圖示:
層次聚類的主要缺點:
不具有很好的可伸縮性:時間復雜性至少是平方級;合并和分裂的決定需要檢查和估算大量的對象或簇;不能撤銷已做的處理,聚類之間不能交換對象。如果某一步沒有很好地選擇合并或分裂的決定,可能會導致低質量的聚類結果。該算法的特點是能利用有限的內存資源完成對大數據集的高質量的聚類,同時通過單遍掃描數據集能最小化I/O代價。
二、 改進層次方法的聚類質量的方法:
將層次聚類和其他的聚類技術進行集成, 形成多階段聚類。其中,BIRCH方法使用CF-tree對對象進行層次劃分,然后采用其他的聚類算法對聚類結果進行求精。
2.1 兩個重要的概念:
聚類特征(Clustering Feature,CF)
聚類特征樹(Cluttering Feature Tree,CF樹)
2.2 聚類特征
聚類特征(CF)是一個三元組,給出對象子類的信息的匯總描述。
設某個子類中有N個d維的點或對象,則該子類的CF定義如下:
其中,N表示數據點數目,LS表示全體數據的和,SS表示全體數據的平方和。從統計學的觀點來看,聚類特征是對給定子類統計匯總: 子聚類的0階, 1階和 2階矩。記錄了計算聚類和有效利用存儲的關鍵度量, 并有效地利用了存儲,因為它匯總了關于子類的信息,而不是存儲所有的對象。
2.3 聚類特征樹
CF 樹是高度平衡的樹,它存儲了層次聚類的聚類特征。樹中的非葉節點有后代或“孩子”,非葉節點存儲了其孩子的CF的總和,即匯總了關于其孩子的聚類信息。CF樹有兩個參數 ----影響CF樹的大小:分支因子B,定義非樹葉節點的孩子的最大個數;閾值T:,給出了存儲在樹的葉子節點中的子類的最大直徑。
CF tree的結構類似于一棵B-樹,它有3個參數:內部節點平衡因子B,葉節點平衡因子L,簇直徑閾值T。樹中每個Nlonleaf節點最多包含B個孩子節點,Leaf最多只能有L個MinCluster(初始劃分子簇),而一個MinCluster的直徑不能超過T。
CF樹構造過程:
(1)從根節點開始,自上而下選擇最近的孩子節點;
(2)到達葉子節點后,檢查最近的元組CFi能否吸收此數據點;
????是,更新CF值;
????否,是否可以添加一個新的元組;
????????是,添加一個新的元組;
????????否則,分裂最遠的一對元組,作為種子,按最近距離重新分配其它元組;
(3)更新每個非葉節點的CF信息,如果分裂節點,在父節點中插入新的元組,檢查分裂,直到root。
算法起初,我們掃描數據庫,拿到第一個data point instance--(1,2,3),我們創建一個空的Leaf和MinCluster,把點(1,2,3)的id值放入Mincluster,更新MinCluster的CF值為(1,(1,2,3),(1,4,9)),把MinCluster作為Leaf的一個孩子,更新Leaf的CF值為(1,(1,2,3),(1,4,9))。實際上只要往樹中放入一個CF(這里我們用CF作為Nonleaf、Leaf、MinCluster的統稱),就要更新從Root到該葉子節點的路徑上所有節點的CF值。
當又有一個數據點要插入樹中時,把這個點封裝為一個MinCluster(這樣它就有了一個CF值),把新到的數據點記為CF_new,我們拿到樹的根節點的各個孩子節點的CF值,根據D2來找到CF_new與哪個節點最近,就把CF_new加入那個子樹上面去。這是一個遞歸的過程。遞歸的終止點是要把CF_new加入到一個MinCluster中,如果加入之后MinCluster的直徑沒有超過T,則直接加入,否則譔CF_new要單獨作為一個簇,成為MinCluster的兄弟結點。插入之后注意更新該節點及其所有祖先節點的CF值。
插入新節點后,可能有些節點的孩子數大于了B(或L),此時該節點要分裂。對于Leaf,它現在有L+1個MinCluster,我們要新創建一個Leaf,使它作為原Leaf的兄弟結點,同時注意每新創建一個Leaf都要把它插入到雙向鏈表中。L+1個MinCluster要分到這兩個Leaf中,怎么分呢?找出這L+1個MinCluster中距離最遠的兩個Cluster(根據D2),剩下的Cluster看離哪個近就跟誰站在一起。分好后更新兩個Leaf的CF值,其祖先節點的CF值沒有變化,不需要更新。這可能導致祖先節點的遞歸分裂,因為Leaf分裂后恰好其父節點的孩子數超過了B。Nonleaf的分裂方法與Leaf的相似,只不過產生新的Nonleaf后不需要把它放入一個雙向鏈表中。如果是樹的根節點要分裂,則樹的高度加1。
重建過程從舊樹的葉子節點建造一個新樹。這樣,重建樹的過程不需要重讀所有的對象 ----建樹只需讀一次數據。在階段三和四采用任何聚類算法,例如典型的劃分方法。
2.3 BIRCH的性能
支持增量聚類:(1)因為它對每一個數據點的聚類的決策都是基于當前已經處理過的數據點,而不是基于全局的數據點。(2)線性可伸縮性: 計算復雜性O(n), 單遍掃描, 附加的掃描可以改善聚類質量。(3)具有較好的聚類質量。
2.4 缺點
(1)只能處理數值數據;(2)對數據的輸入次序敏感;(3)CF樹結點不總是對應于[用戶考慮的]自然簇(參數B和T);(4)簇非球形時效果不好(使用半徑/直徑控制簇邊界).