聚類算法

K-Means

K-Means算法的思想很簡單痊末,對于給定的樣本集,按照樣本之間的距離大小松申,將樣本集劃分為K個簇。讓簇內(nèi)的點盡量緊密的連在一起俯逾,而讓簇間的距離盡量的大贸桶。

目標(biāo)函數(shù):
E = \sum_{i=1}^k \sum_{x \in C_i} ||x-\mu_i||_2^2
其中u_i是簇C_i的均值向量,也叫質(zhì)心

\mu_i = \frac{1}{|C_i|}\sum_{x\in C_i}x

利用啟發(fā)式方法桌肴,首先隨機選取K個點皇筛,計算其他點和k個點的距離,進而得到K個類坠七,計算K個類的質(zhì)心水醋,然后再次迭代聚類,知道質(zhì)心不在發(fā)生明顯變化或者迭代到一定次數(shù)結(jié)束彪置。

參數(shù)選取

K-Means 算法需要根據(jù)數(shù)據(jù)的先驗經(jīng)驗來選擇一個合適的K值拄踪,對于不確定性的數(shù)據(jù)集或者流式數(shù)據(jù)集,則不適合使用該種方法

算法流程

輸入是樣本集D={x1,x2,...xm},聚類的簇樹k,最大迭代次數(shù)N

輸出是簇劃分C={C1,C2,...Ck}

1) 從數(shù)據(jù)集D中隨機選擇k個樣本作為初始的k個質(zhì)心向量: {μ1,μ2,...,μk}
    2)對于n=1,2,...,N

a) 將簇劃分C初始化為Ct=?t=1,2...k
      b) 對于i=1,2...m,計算樣本xi和各個質(zhì)心向量μj(j=1,2,...k)的距離:dij=||xi?μj||22拳魁,將xi標(biāo)記最小的為dij所對應(yīng)的類別λi惶桐。此時更新Cλi=Cλi∪{xi}
      c) 對于j=1,2,...,k,對Cj中所有的樣本點重新計算新的質(zhì)心μj=1|Cj|∑x∈Cjx
      e) 如果所有的k個質(zhì)心向量都沒有發(fā)生變化,則轉(zhuǎn)到步驟3)

3) 輸出簇劃分C={C1,C2,...Ck}

衍生算法

(1)K-Means++

初始化質(zhì)心的優(yōu)化

在上節(jié)我們提到,k個初始化的質(zhì)心的位置選擇對最后的聚類結(jié)果和運行時間都有很大的影響姚糊,因此需要選擇合適的k個質(zhì)心贿衍。如果僅僅是完全隨機的選擇,有可能導(dǎo)致算法收斂很慢救恨。K-Means++算法就是對K-Means隨機初始化質(zhì)心的方法的優(yōu)化贸辈。

K-Means++的對于初始化質(zhì)心的優(yōu)化策略也很簡單,如下:

a) 從輸入的數(shù)據(jù)點集合中隨機選擇一個點作為第一個聚類中心μ1
    b) 對于數(shù)據(jù)集中的每一個點xi忿薇,計算它與已選擇的聚類中心中最近聚類中心的距離D(xi)=argmin||xi?μr||22r=1,2,...kselected
    c) 選擇一個新的數(shù)據(jù)點作為新的聚類中心裙椭,選擇的原則是:D(x)較大的點,被選取作為聚類中心的概率較大
    d) 重復(fù)b和c直到選擇出k個聚類質(zhì)心
    e) 利用這k個質(zhì)心來作為初始化質(zhì)心去運行標(biāo)準(zhǔn)的K-Means算法

(2)elkan K-Means

距離計算優(yōu)化

在傳統(tǒng)的K-Means算法中署浩,我們在每輪迭代時,要計算所有的樣本點到所有的質(zhì)心的距離扫尺,這樣會比較的耗時筋栋。那么,對于距離的計算有沒有能夠簡化的地方呢正驻?elkan K-Means算法就是從這塊入手加以改進弊攘。它的目標(biāo)是減少不必要的距離的計算。那么哪些距離不需要計算呢姑曙?

elkan K-Means利用了兩邊之和大于等于第三邊,以及兩邊之差小于第三邊的三角形性質(zhì)襟交,來減少距離的計算。

第一種規(guī)律是對于一個樣本點x和兩個質(zhì)心μ_{j_1},μ_{j_2}伤靠。如果我們預(yù)先計算出了這兩個質(zhì)心之間的距離D(j_1,j_2)捣域,則如果計算發(fā)現(xiàn)2D(x,j_1)≤D(j_1,j_2),我們立即就可以知道D(x,j_1)≤D(x,j_2)。此時我們不需要再計算D(x,j_2),也就是說省了一步距離計算宴合。

第二種規(guī)律是對于一個樣本點x和兩個質(zhì)心μ_{j_1},μ_{j_2}焕梅。我們可以得到D(x,j_2)≥max\{0,D(x,j_1)?D(j_1,j_2)\}。這個從三角形的性質(zhì)也很容易得到卦洽。

利用上邊的兩個規(guī)律贞言,elkan K-Means比起傳統(tǒng)的K-Means迭代速度有很大的提高。但是如果我們的樣本的特征是稀疏的阀蒂,有缺失值的話该窗,這個方法就不使用了,此時某些距離無法計算蚤霞,則不能使用該算法酗失。

(3)Mini Batch K-Means

大樣本優(yōu)化

在統(tǒng)的K-Means算法中,要計算所有的樣本點到所有的質(zhì)心的距離争便。如果樣本量非常大级零,比如達到10萬以上,特征有100以上,此時用傳統(tǒng)的K-Means算法非常的耗時奏纪,就算加上elkan K-Means優(yōu)化也依舊鉴嗤。在大數(shù)據(jù)時代,這樣的場景越來越多序调。此時Mini Batch K-Means應(yīng)運而生醉锅。

顧名思義,Mini Batch发绢,也就是用樣本集中的一部分的樣本來做傳統(tǒng)的K-Means硬耍,這樣可以避免樣本量太大時的計算難題,算法收斂速度大大加快边酒。當(dāng)然此時的代價就是我們的聚類的精確度也會有一些降低经柴。一般來說這個降低的幅度在可以接受的范圍之內(nèi)。

在Mini Batch K-Means中墩朦,我們會選擇一個合適的批樣本大小batch size坯认,我們僅僅用batch size個樣本來做K-Means聚類。那么這batch size個樣本怎么來的氓涣?一般是通過無放回的隨機采樣得到的牛哺。

為了增加算法的準(zhǔn)確性,我們一般會多跑幾次Mini Batch K-Means算法劳吠,用得到不同的隨機采樣集來得到聚類簇引润,選擇其中最優(yōu)的聚類簇。

小結(jié)

K-Means是個簡單實用的聚類算法痒玩,這里對K-Means的優(yōu)缺點做一個總結(jié)淳附。

K-Means的主要優(yōu)點有:

1)原理比較簡單,實現(xiàn)也是很容易凰荚,收斂速度快燃观。

2)聚類效果較優(yōu)。

3)算法的可解釋度比較強便瑟。

4)主要需要調(diào)參的參數(shù)僅僅是簇數(shù)k缆毁。

K-Means的主要缺點有:

1)K值的選取不好把握

2)對于不是凸的數(shù)據(jù)集比較難收斂

3)如果各隱含類別的數(shù)據(jù)不平衡,比如各隱含類別的數(shù)據(jù)量嚴(yán)重失衡到涂,或者各隱含類別的方差不同脊框,則聚類效果不佳。

4) 采用迭代方法践啄,得到的結(jié)果只是局部最優(yōu)浇雹。

5) 對噪音和異常點比較的敏感。

BIRCH

BIRCH(Balanced Iterative Reducing and Clustering Using Hierarchies, 利用層次方法的平衡迭代規(guī)約和聚類)算法提供了一種類似B樹的數(shù)據(jù)結(jié)構(gòu)屿讽,能夠在單次掃描完所有的數(shù)據(jù)就能實現(xiàn)聚類昭灵。

聚類特征CF(cluster feature)

每一個CF是一個三元組吠裆,可以用(N,LS烂完,SS)表示试疙。其中N代表了這個CF中擁有的樣本點的數(shù)量,這個好理解抠蚣;LS代表了這個CF中擁有的樣本點各特征維度的和向量祝旷,SS代表了這個CF中擁有的樣本點各特征維度的平方和。

CF滿足線性性嘶窄,即: CF_1+CF_2=(N_1+N_2,LS_1+LS_2,SS_1+SS_2)

聚類特征樹CFT(cluster feature tree)

生成過程參考B樹的生成過程怀跛。構(gòu)建CFT的過程,需要定義內(nèi)部節(jié)點的最大CF數(shù)量B柄冲,葉子節(jié)點的最大CF數(shù)L吻谋,葉子節(jié)點每個CF的最大樣本半徑閾值T。T值的大小能夠確定CFTree的規(guī)模现横,如果T太小滨溉,簇的數(shù)量將會非常的大,導(dǎo)致樹節(jié)點數(shù)量也會增大长赞,內(nèi)存消耗較大。

參考文檔

最后編輯于
?著作權(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)容