BIRCH聚類演算法詳解

2021-10-22 08:09:59 字數 2968 閱讀 4160

歡迎關注」生信修煉手冊」!

birch演算法全稱如下

balanced iterative reducing and clustering using hierarchies

屬於樹狀結構的層次聚類演算法的一種,其樹狀結構的構建是自上而下的,也就是說我們只需要掃瞄一遍資料,就可以得到樹狀結構了,因此該演算法的執行速度很快。

要理解該演算法的執行過程,需要理解以下兩個基本概念

1. cluster feature

簡稱cf, 每個cf本質上是乙個3元組,由n, ls, ss共3個元素構成,其中

1. n表示樣本數目

2. ls表示樣本各特徵的和

3. ss表示樣本各特徵的平方和

具體的求解過程圖示如下

ls的計算公式如下

對於圖中所示的5個點,ls的求解過程如下

>>> ( 3 + 2 + 4 + 4 + 3, 4 + 6 + 5 + 7 + 8)

(16, 30)

ss的計算公式如下

對於圖中所示的5個點,ss的求解過程如下

>>> ( 3 ** 2 + 2 ** 2 + 4 ** 2 + 4 ** 2 + 3 ** 2, 4 ** 2 + 6 ** 2 + 5 ** 2 + 7 ** 2 + 8 ** 2)

(54, 190)

2. cluster feature tree簡稱cf tree, 其結構如下

可以分為根節點,內部節點,葉子節點3大類,其中每個節點都是有多個cf構成的。對於一顆cf tree, 有以下3個重要引數

1. 內部節點的最大cf數目,稱之為枝平衡因子b

2. 葉子節點的最大cf數目,稱之為葉平衡因子l

3. 葉子節點的空間閾值t,計算樣本點與cf的空間距離,如果小於閾值,則將樣本納入某個cf

3個引數在cf tree中的作用圖示如下

定義好上述3個引數之後,就可以開始掃瞄資料,構建cftree,  對於第乙個樣本,cf為空,首先將其自身歸入乙個cf

對於第二個樣本,判斷其與樣本a的距離是否大於空間閾值t,   因為小於t, 所以該樣本也歸入a所屬的cf

對於第三個樣本,同樣計算空間距離,因為大於t, 所以該樣本歸為乙個新的cf, 從而實現了節點的**

對於第4個樣本,計算空間距離,發現屬於b所在的空間,則歸為b所在的cf

在構建cf tree的過程中,除了空間距離,還需要考慮平衡因子b和l。比如對於以下ln1節點而言,如果葉平衡因子l的值大於3,則sc8這個cf就可以作為ln1的乙個葉子節點

如果小於3,就需要**出乙個新的分支,**時,從ln1下所有的cf中挑選出距離最小和最大的兩個cf, 作為新的內部節點,圖示如下

枝平衡因子b影響內部節點的結構,如果b的值小於3,則要對內部節點進行拆分,**的方法是相同的,就是挑選距離最近和最遠的兩個cf作為新的分支,**後的結果圖示如下

對於birch演算法而言,主要的步驟就是構建cf tree, 樹狀結構構建好之後,後續還可以有些可選步驟,常見的可選步驟如下

1. 去除異常的cf點,通常是包含樣本較少的cf

2. 利用其它聚類演算法,比如k-means 對cf tree進行聚類, 用於調整樣本讀入順序造成的樹狀結構的不合理

3. 利用cf節點的質心,對樣本點進行聚類

在scikit-learn中,使用birch聚類的**如下

>>> from sklearn.cluster import birch

>>> x = [[0, 1], [0.3, 1], [-0.3, 1], [0, -1], [0.3, -1], [-0.3, -1]]

>>> brc = birch(n_clusters=none)

>>> brc.fit(x)

birch(n_clusters=none)

>>> brc.predict(x)

array([0, 0, 0, 1, 1, 1])

birch演算法的優點是節約記憶體,聚類速度快,可以不用指定聚類的類別數目k,  適合處理類別數目特別多的大樣本資料,缺點則是在給定的平衡因子和空間閾值引數值的約束下,聚類的結果可能和真實分布不一樣,而且對於維數特別多的資料,聚類效果不太好。

·end·

—如果喜歡,快分享給你的朋友們吧—

原創不易,歡迎收藏,點讚,**!生信知識浩瀚如海,在生信學習的道路上,讓我們一起並肩作戰!

寫在最後

乙個只分享乾貨的

聚類演算法birch詳解

birch演算法 birch balanced iterative reducing and clustering using hierarchies 全稱是 利用層次方法的平衡迭代規約和聚類,採用了一種多階段聚類技術,是層次聚類和其他聚類演算法的整合。birch 是一種基於距離的層次聚類演算法,它...

DBSCAN 聚類演算法詳解

參考 dbscan演算法的顯著優點是聚類速度快且能夠有效處理雜訊點和發現任意形狀的空間聚類。但是由於它直接對整個資料庫進行操作且進行聚類時使用了乙個全域性性的表徵密度的引數,因此也具有兩個比較明顯的弱點 1 當資料量增大時,要求較大的記憶體支援,i o消耗也很大 2 當空間聚類的密度不均勻 聚類間距...

PCL 歐式聚類演算法詳解

參考 歐式聚類是一種基於歐氏距離度量的聚類演算法。基於kd tree的近鄰查詢演算法是加速歐式聚類演算法的重要預處理方法。pcl對歐幾里德演算法進行了很好的封裝,其 如下 被分割出來的點雲團 標號佇列 std vector pointindices cluster indices 歐式分割器 pcl...