birch演算法
birch(balanced iterative reducing and clustering using hierarchies)
全稱是:利用層次方法的平衡迭代規約和聚類,採用了一種多階段聚類技術,是層次聚類和其他聚類演算法的整合。
birch
是一種基於距離的層次聚類演算法,它最大的特點是能利用有限的記憶體資源完成對大資料集的高質量的聚類,同時通過單遍掃瞄資料集能最小化
i/o代價。
birch
演算法的兩個重要概念是,聚類特徵和聚類特徵樹;1.1
聚類特徵(cf):
cf是birch增量聚類演算法的核心,
cf樹中得節點都是由
cf組成,乙個
cf是乙個三元組,這個三元組就代表了簇的所有資訊。給定n個d維的資料點,
cf定義如下:
cf=(n,ls,ss)
其中,n是子類中節點的數目,ls是n個節點的線性和,ss是n個節點的平方和。
cf有個特性,即可以求和,具體說明如下:cf1=(n1,ls1,ss1),cf2=(n2,ls2,ss2)
則cf1+cf2=(n1+n2, ls1+ls2,ss1+ss2)。
例如:假設簇c1中有三個資料點:(2,3),(4,5),(5,6)
則cf1==
同樣的,簇c2的cf2=,那麼,由簇c1和簇c2合併而來的簇c3的聚類特徵cf3計算如下:
cf3=cf1+cf2==
另外在介紹兩個概念:簇的質心和簇的半徑。假如乙個簇中包含n個資料點:,i=1,2,3...n.,則質心c和半徑r計算公式如下:
c=(x1+x2+...+xn)/n,(這裡x1+x2+...+xn是向量加)
r=(|x1-c|^2+|x2-c|^2+...+|xn-c|^2)/n
其中,簇半徑表示簇中所有點到簇質心的平均距離。cf中儲存的是簇中所有資料點的特性的統計和,所以當我們把乙個數 據點加入某個簇的時候,那
麼這個資料點的詳細
特徵,例如屬性值,就丟失了,由於這個特徵,
birch
聚類可以在很大程度 上對資料集進行壓縮。1、
首先讀入第一條資料,構造乙個葉子節點和乙個子簇,子簇包含在葉子節點中。
2、當讀入後面的第2條,第3條,封裝為乙個簇,加入到乙個葉子節點時,如果此時的待加入的簇c的簇直徑已經大於t,則需要新建簇作為c的兄弟節點,如果作為兄弟節點,如果此時的葉子節點的孩子節點超過閾值l,則需對葉子節點進行**。**的規則是選出簇間距離最大的2個孩子,分別作為2個葉子,然後其他的孩子按照就近分配。非葉子節點的**規則同上。
3、最終的構造模樣大致如此:
演算法過程:
演算法起初
,我們掃瞄
資料庫
,拿到第乙個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。
BIRCH聚類演算法詳解
歡迎關注 生信修煉手冊 birch演算法全稱如下 balanced iterative reducing and clustering using hierarchies 屬於樹狀結構的層次聚類演算法的一種,其樹狀結構的構建是自上而下的,也就是說我們只需要掃瞄一遍資料,就可以得到樹狀結構了,因此該演...
DBSCAN 聚類演算法詳解
參考 dbscan演算法的顯著優點是聚類速度快且能夠有效處理雜訊點和發現任意形狀的空間聚類。但是由於它直接對整個資料庫進行操作且進行聚類時使用了乙個全域性性的表徵密度的引數,因此也具有兩個比較明顯的弱點 1 當資料量增大時,要求較大的記憶體支援,i o消耗也很大 2 當空間聚類的密度不均勻 聚類間距...
PCL 歐式聚類演算法詳解
參考 歐式聚類是一種基於歐氏距離度量的聚類演算法。基於kd tree的近鄰查詢演算法是加速歐式聚類演算法的重要預處理方法。pcl對歐幾里德演算法進行了很好的封裝,其 如下 被分割出來的點雲團 標號佇列 std vector pointindices cluster indices 歐式分割器 pcl...