1. 程式人生 > >聚類演算法(二)--BIRCH

聚類演算法(二)--BIRCH

BIRCH (balanced iterative reducing and clustering using hierarchies)(名字太長不用管了)

無監督,適合大樣本的聚類方法。大多數情況只需掃描一次資料集。(文中有下劃線的均表示向量)

一句話概括BIRCH,就是根據某種距離度量方法將資料簇已CF形式表現出來,又根據一定規則在CF樹上排列(看不懂沒關係)

下面我們展開說。

先講CF

首先CF代表的是資料簇,哪怕是隻有一個點,也看做簇

定義CF(N,LS,SS),N代表資料簇的樣本點個數,LS表示資料點同一特徵之和,SS表示所有樣本點特徵值平方值和。

舉例說明。

假設上述五點屬於一個CF,A(3,4),B(2,3),C(1,4),D(2,5),E(2,4)

N=5,LS=(3+2+1+2+2,4+3+4+5+4)=(10,20),SS=9+16+4+9+1+16+4+25+4+16=104

所以CF=[5,(10,20),104]

那麼,CF有個容易理解的性質--可加性,CF1=CF2+CF3=(N2+N3,LS2+LS3,SS2+SS3)

CF還有幾個引數:

形心(Centroid):

半徑(radius): (表示為簇內一點到形心的距離,類似於標準差,所以可以變換成標準差的計算,$\sqrt{\frac{NSS-LS^{2}}{N^{2}}}$)

(簇內所有點兩兩之間的平均距離)$\delta =\sqrt{\frac{\sum \sum \left (x_{i}-\overrightarrow{c}  \right )^{2}(x_{j}-\overrightarrow{c})^{2}}{N(N-1)}}$

R和δ都表示了簇的緊實度。

 

 某種距離度量方法

 即簇與簇之間的距離的度量D,比如

歐幾里得距離$\sqrt{(\frac{\sum LS_{1}}{N_{1}}-\frac{\sum LS_{2}}{N_{2}})^{2}}$

曼哈頓距離$\left | \frac{\sum LS_{1}}{N_{1}}-\frac{\sum LS_{2}}{N_{2}} \right |$

 

一定規則在CF樹上排列

一定規則指的是CF樹的引數,枝平衡因子β(一個枝節點包含葉節點個數的上限),葉平衡因子λ(一個葉節點包含CF個數的上限),空間閾值τ(簇與簇距離的上限)

這裡建造的CF樹不保留資料原始資訊,只有CF,所以起到壓縮資料的作用

現在我們看看如何造樹

一棵樹一般有根節點(RN,root node),枝節點(BN,branch node),葉節點(LN,leaf node)。

1,首先第一個資料進來,建造CF1,作為根節點。(無任何限制)

2,第二個資料進來,建造CF2,計算簇與簇之間的距離D,若D<τ,將這兩點視為同一簇,更新CF1.若D>空間閾值τ,將CF1,CF2都作為枝節點;

3,上面兩步只講到了增加或者膨脹節點,如何分裂節點呢?

舉例說明,

在紅色情況下設定枝平衡因子β=3,葉平衡因子λ=3,

進來一個新樣本點sc8,他與葉節點LN1,2,3中LN1的距離最近,所以應該歸入LN1葉節點,

計算sc8與sc1,2,3的距離,均大於空間閾值τ,所以不能併入sc1,2,3,需要給他成為一個獨立的簇,

但是由於葉平衡因子λ=3,即一個葉節點包含簇個數的上限為3,所以要將葉節點LN1分裂成兩個LN1',LN1''。

但是此時相當於有四個葉節點LN1',LN1'',LN2,LN3,又枝平衡因子β=3,即一個枝節點包含葉節點個數的上限為3,

所以將根節點(本應該為枝節點,此例無枝節點)也一分為二,如下圖

還有一個問題,剛才的四個簇sc8,1,2,3,如何分入葉節點LN1',LN1''

求這四個簇相距最遠的最為LN1',LN1''的種子CF,將剩餘的簇分別計算與種子CF的距離,距離近的歸到一個葉節點

具體解釋,假設sc8,1,2,3中,sc8和sc2最遠,先將這兩個簇放入不同的葉節點,然後分別計算sc1,sc3與sc8和sc2的距離,較近的歸為種子CF所在的葉節點。

 

BIRCH適用於大樣本,與Mini Batch K-Means類似,但是BIRCH適用於K較大的情況,Mini Batch K-Means適用K適中或較小

當維度較大時,Mini Batch K-Means比BIRCH表現的好。

 

參考:

https://www.cnblogs.com/pinard/p/6179132.html

https://www.cnblogs.com/tiaozistudy/p/6129425.html

https://en.wikipedia.org/wiki/B