BIRCH(Balanced Iterative Reducing and Clustering Using Hierarchies)

引言

BIRCH聚類算法屬于增量聚類算法差油,聚類的過程只需要單遍依次遍歷數(shù)據(jù)集中的樣本即可以完成聚類,不需要一次性全部把所有樣本加載到內(nèi)存完成聚類。因此該算法比較適合大數(shù)據(jù)量唇跨,增量型的聚類過程狭吼。BIRCH聚類是一個構(gòu)建Cluster Feature Tree的過程层坠,而Cluster Feature Tree和B+樹非常相似,因此了解BIRCH聚類算法之前刁笙,有必要了解一下B+樹破花。

BIRCH相關(guān)概念

Cluster Feature 聚類特征

  1. Cluster Feature 簡稱CF,一個CF是一個三元組疲吸,可以用(N座每,LS,SS)表示摘悴。其中N代表了這個CF中擁有的樣本點的數(shù)量峭梳,這個好理解;LS代表了這個CF中擁有的樣本點各特征維度的和向量\vec{LS}=\sum_{i=1}^{N}\vec{X_i}蹂喻,SS代表了這個CF中擁有的樣本點各特征維度的平方和SS=\sum_{i=1}^{N}(\vec{X_i})^2葱椭。舉例說明,如下面五個樣本點所示:X=\{(3,4),(2,6),(4,5),(4,7),(3,8)\}口四,\vec{LS}=(3+2+4+4+3,4+6+5+7+8)=(16,30), SS=(3^2+2^2+4^2+4^2+3^2+4^2+6^2+5^2+7^2+8^2)=244 孵运。
  2. CF有一個很好的性質(zhì),就是滿足線性關(guān)系窃祝,也就是CF_1+CF_2=(N_1+N_2, LS_1+LS_2,SS_1+SS_2)掐松。這個性質(zhì)從定義也很好理解。如果把這個性質(zhì)放在CF Tree上粪小,也就是說大磺,在CF Tree中,對于每個父節(jié)點中的CF節(jié)點探膊,它的(N,\vec{LS},SS)三元組的值等于這個CF節(jié)點所指向的所有子節(jié)點的三元組之和杠愧。如下圖所示:
    image.png

    從上圖中可以看出,根節(jié)點的CF_1的三元組的值逞壁,可以從它指向的6個子節(jié)點(CF_7到CF_{12})的值相加得到流济。這樣我們在更新CF Tree的時候锐锣,可以很高效。
  3. 對于CF Tree绳瘟,我們一般有幾個重要參數(shù)雕憔,第一個參數(shù)是每個內(nèi)部節(jié)點的最大CF數(shù)B,第二個參數(shù)是每個葉子節(jié)點的最大CF數(shù)L糖声,第三個參數(shù)是針對葉子節(jié)點中某個CF中的樣本點來說的斤彼,它是葉節(jié)點每個CF的最大樣本半徑閾值T,也就是說蘸泻,在這個CF中的所有樣本點一定要在半徑小于T的一個超球體內(nèi)琉苇。對于上圖中的CF Tree,限定了B=7悦施, L=5并扇, 也就是說內(nèi)部節(jié)點最多有7個CF,而葉子節(jié)點最多有5個CF抡诞。

Cluster Feature Tree 聚類特征樹

Cluster Feature Tree簡記為CF Tree穷蛹,其中的每一個節(jié)點由若干個CF組成。構(gòu)建CF Tree的過程就是對樣本完成聚類昼汗。構(gòu)建CF Tree的過程如下:

  1. 在最開始的時候俩莽,CF Tree是空的,沒有任何樣本乔遮,我們從訓(xùn)練集讀入第一個樣本點扮超,將它放入一個新的CF三元組A,這個三元組的N=1蹋肮,將這個新的CF放入根節(jié)點出刷,此時的CF Tree如下圖:
    image.png
  2. 現(xiàn)在我們繼續(xù)讀入第二個樣本點,我們發(fā)現(xiàn)這個樣本點和第一個樣本點A坯辩,在半徑為T的超球體范圍內(nèi)馁龟,也就是說,他們屬于一個CF漆魔,我們將第二個點也加入CF A,此時需要更新A的三元組的值坷檩。此時A的三元組中N=2。此時的CF Tree如下圖:
    image.png
  3. 此時來了第三個節(jié)點改抡,結(jié)果我們發(fā)現(xiàn)這個節(jié)點不能融入剛才前面的節(jié)點形成的超球體內(nèi)矢炼,也就是說,我們需要一個新的CF三元組B阿纤,來容納這個新的值句灌。此時根節(jié)點有兩個CF三元組A和B,此時的CF Tree如下圖:
    image.png
  4. 當(dāng)來到第四個樣本點的時候,我們發(fā)現(xiàn)和B在半徑小于T的超球體胰锌,這樣更新后的CF Tree如下圖:
    image.png
  5. 那個什么時候CF Tree的節(jié)點需要分裂呢骗绕?假設(shè)我們現(xiàn)在的CF Tree 如下圖, 葉子節(jié)點LN1有三個CF资昧, LN2和LN3各有兩個CF酬土。我們的葉子節(jié)點的最大CF數(shù)L=3。此時一個新的樣本點來了格带,我們發(fā)現(xiàn)它離LN1節(jié)點最近诺凡,因此開始判斷它是否在sc1,sc2,sc3這3個CF對應(yīng)的超球體之內(nèi),但是很不幸践惑,它不在,因此它需要建立一個新的CF嘶卧,即sc8來容納它尔觉。問題是我們的L=3,也就是說LN1的CF個數(shù)已經(jīng)達到最大值了芥吟,不能再創(chuàng)建新的CF了侦铜,怎么辦?此時就要將LN1葉子節(jié)點一分為二了钟鸵。
    image.png
  6. 我們將LN1里所有CF元組中钉稍,找到兩個最遠的CF做這兩個新葉子節(jié)點的種子CF,然后將LN1節(jié)點里所有CF sc1, sc2, sc3棺耍,以及新樣本點的新元組sc8劃分到兩個新的葉子節(jié)點上贡未。將LN1節(jié)點劃分后的CF Tree如下圖:
    image.png
  7. 如果我們的內(nèi)部節(jié)點的最大CF數(shù)B=3,則此時葉子節(jié)點一分為二會導(dǎo)致根節(jié)點的最大CF數(shù)超了蒙袍,也就是說俊卤,我們的根節(jié)點現(xiàn)在也要分裂,分裂的方法和葉子節(jié)點分裂一樣害幅,分裂后的CF Tree如下圖:
    image.png
  8. 總結(jié)CF Tree的建樹過程如下:
    第一步:從根節(jié)點開始向下尋找與新樣本距離最近的葉子節(jié)點(PS. 沒有去閱讀原論文消恍,個人直覺猜測這里的距離計算應(yīng)該是通過CF三元組中的\vec{LS}計算得到),以及找到該葉子節(jié)點中和新樣本距離最近的CF以现。
    第二步:如果新樣本插入CF后狠怨,該CF對應(yīng)的超球體半徑依然小于預(yù)設(shè)的閾值T,則更新路徑中所有的CF三元組邑遏,新樣本插入結(jié)束佣赖,否則轉(zhuǎn)入3。
    第三步:如果新樣本加入當(dāng)前葉子節(jié)點中任何一個CF记盒,超球體半徑都會超過閾值T茵汰,并且此時葉子節(jié)點的CF個數(shù)小于L,則新建一個CF并將新樣本納入其中孽鸡,更新路徑上所有的CF三元組蹂午,插入結(jié)束栏豺。
    第四步:如果第三步中葉子節(jié)點中的CF數(shù)量已經(jīng)超過了L個,則將當(dāng)前葉子節(jié)點劃分為兩個新葉子節(jié)點豆胸,選擇舊葉子節(jié)點中所有CF三元組里超球體距離最遠的兩個CF元組奥洼,分別作為兩個新葉子節(jié)點的第一個CF節(jié)點。將其他元組和新樣本元組按照距離遠近原則放入對應(yīng)的葉子節(jié)點晚胡。依次向上檢查父節(jié)點是否也要分裂灵奖,如果需要按和葉子節(jié)點分裂方式相同。

BIRCH算法

上面講了半天的CF Tree估盘,終于我們可以步入正題BIRCH算法瓷患,其實將所有的訓(xùn)練集樣本建立了CF Tree,一個基本的BIRCH算法就完成了遣妥,對應(yīng)的輸出就是若干個CF節(jié)點擅编,每個節(jié)點里的樣本點就是一個聚類的簇。也就是說BIRCH算法的主要過程箫踩,就是建立CF Tree的過程爱态。
當(dāng)然,真實的BIRCH算法除了建立CF Tree來聚類境钟,其實還有一些可選的算法步驟的锦担,現(xiàn)在我們就來看看 BIRCH算法的流程。

  1. 將所有的樣本依次讀入慨削,在內(nèi)存中建立一顆CF Tree, 建立的方法參考上一節(jié)洞渔。
    2.(可選)將第一步建立的CF Tree進行篩選,去除一些異常CF節(jié)點缚态,這些節(jié)點一般里面的樣本點很少痘煤。對于一些超球體距離非常近的元組進行合并
    3.(可選)利用其它的一些聚類算法比如K-Means對所有的CF元組進行聚類,得到一顆比較好的CF Tree.這一步的主要目的是消除由于樣本讀入順序?qū)е碌牟缓侠淼臉浣Y(jié)構(gòu)猿规,以及一些由于節(jié)點CF個數(shù)限制導(dǎo)致的樹結(jié)構(gòu)分裂衷快。
    4.(可選)利用第三步生成的CF Tree的所有CF節(jié)點的質(zhì)心,作為初始質(zhì)心點姨俩,對所有的樣本點按距離遠近進行聚類蘸拔。這樣進一步減少了由于CF Tree的一些限制導(dǎo)致的聚類不合理的情況。
    從上面可以看出环葵,BIRCH算法的關(guān)鍵就是步驟1调窍,也就是CF Tree的生成,其他步驟都是為了優(yōu)化最后的聚類結(jié)果张遭。

總結(jié):

BIRCH算法的主要優(yōu)點有:

  1. 節(jié)約內(nèi)存邓萨,所有的樣本都在磁盤上,CF Tree僅僅存了CF節(jié)點和對應(yīng)的指針。
  2. 聚類速度快缔恳,只需要一遍掃描訓(xùn)練集就可以建立CF Tree宝剖,CF Tree的增刪改都很快。
  3. 可以識別噪音點歉甚,還可以對數(shù)據(jù)集進行初步分類的預(yù)處理
    BIRCH算法的主要缺點有:
  4. 由于CF Tree對每個節(jié)點的CF個數(shù)有限制万细,導(dǎo)致聚類的結(jié)果可能和真實的類別分布不同.
  5. 對高維特征的數(shù)據(jù)聚類效果不好。此時可以選擇Mini Batch K-Means;
  6. 如果數(shù)據(jù)集的分布簇不是類似于超球體纸泄,或者說不是凸的赖钞,則聚類效果不好。

參考文獻:

  1. https://www.cnblogs.com/pinard/p/6179132.html
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末聘裁,一起剝皮案震驚了整個濱河市雪营,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌衡便,老刑警劉巖献起,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異砰诵,居然都是意外死亡,警方通過查閱死者的電腦和手機捌显,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進店門茁彭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人扶歪,你說我怎么就攤上這事理肺。” “怎么了善镰?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵妹萨,是天一觀的道長。 經(jīng)常有香客問我炫欺,道長乎完,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任品洛,我火速辦了婚禮树姨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘桥状。我一直安慰自己帽揪,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布辅斟。 她就那樣靜靜地躺著转晰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上查邢,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天蔗崎,我揣著相機與錄音,去河邊找鬼侠坎。 笑死蚁趁,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的实胸。 我是一名探鬼主播他嫡,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼庐完!你這毒婦竟也來了钢属?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤门躯,失蹤者是張志新(化名)和其女友劉穎淆党,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體讶凉,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡染乌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了懂讯。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片荷憋。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖褐望,靈堂內(nèi)的尸體忽然破棺而出勒庄,到底是詐尸還是另有隱情,我是刑警寧澤瘫里,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布实蔽,位于F島的核電站,受9級特大地震影響谨读,放射性物質(zhì)發(fā)生泄漏局装。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一劳殖、第九天 我趴在偏房一處隱蔽的房頂上張望贼邓。 院中可真熱鬧,春花似錦闷尿、人聲如沸塑径。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽统舀。三九已至匆骗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間誉简,已是汗流浹背碉就。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留闷串,地道東北人瓮钥。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像烹吵,于是被迫代替她去往敵國和親碉熄。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,652評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Birch層次聚類算法 標(biāo)簽(空格分隔): CF樹建立 主要借鑒的網(wǎng)文地址肋拔,并進行大量引用:【非常淺顯易懂】htt...
    AresAnt閱讀 1,485評論 0 1
  • 08 聚類算法 - 聚類算法的衡量指標(biāo) 五、層次聚類概述 層次聚類方法對給定的數(shù)據(jù)集進行層次的分解窿吩,直到滿足某種條...
    白爾摩斯閱讀 14,179評論 0 13
  • 一茎杂、了解層次聚類 層次聚類方法對給定的數(shù)據(jù)集進行層次的分解,直到滿足某種條件為止纫雁,傳統(tǒng)的層次聚類算法主要分為兩大類...
    斗斗888閱讀 3,285評論 0 0
  • 來源:小紅書筆試-呕屯客網(wǎng) 一、算法基礎(chǔ) 1 auc與 roc AUC:分類中一個正例先较,一個負例携冤。預(yù)測為正的概率值比...
    粉紅狐貍_dhf閱讀 1,366評論 0 2
  • K-Means K-Means算法的思想很簡單悼粮,對于給定的樣本集闲勺,按照樣本之間的距離大小,將樣本集劃分為K個簇扣猫。讓...
    xiongraorao閱讀 577評論 0 0