K-means原理、優(yōu)化儡陨、應(yīng)用

一褪子、了解 K-means。

 K-Means算法是無監(jiān)督的聚類算法骗村,它實(shí)現(xiàn)起來比較簡單嫌褪,聚類效果也不錯(cuò),因此應(yīng)用很廣泛胚股。K-Means算法有大量的變體笼痛,本文就從最傳統(tǒng)的K-Means算法講起,在其基礎(chǔ)上講述K-Means的優(yōu)化變體方法信轿。包括初始化優(yōu)化K-Means++, 距離計(jì)算優(yōu)化elkan K-Means算法和大數(shù)據(jù)情況下的優(yōu)化Mini Batch K-Means算法晃痴。

? ??K-Means算法的思想很簡單残吩,對于給定的樣本集,按照樣本之間的距離大小倘核,將樣本集劃分為K個(gè)簇泣侮。讓簇內(nèi)的點(diǎn)盡量緊密的連在一起,而讓簇間的距離盡量的大紧唱。

二活尊、傳統(tǒng)K-Means算法流程。

1漏益、隨機(jī)選擇K個(gè)聚類的初始中心蛹锰。

2、對任意一個(gè)樣本點(diǎn)绰疤,求其到K個(gè)聚類中心的距離铜犬,將樣本點(diǎn)歸類到距離最小的中心的聚類。

3轻庆、每次迭代過程中癣猾,利用均值等方法更新各個(gè)聚類的中心點(diǎn)(質(zhì)心)。

4余爆、對K個(gè)聚類中心纷宇,利用2、3步迭代更新后蛾方,如果位置點(diǎn)變化很小(可以設(shè)置閾值)像捶,則認(rèn)為達(dá)到穩(wěn)定狀態(tài),迭代結(jié)束桩砰。(畫圖時(shí)拓春,可以對不同的聚類塊和聚類中心可選擇不同的顏色標(biāo)注)

優(yōu)點(diǎn)?

1、原理比較簡單五芝,實(shí)現(xiàn)也是很容易痘儡,收斂速度快。?

2枢步、聚類效果較優(yōu)沉删。?

3、算法的可解釋度比較強(qiáng)醉途。?

4矾瑰、主要需要調(diào)參的參數(shù)僅僅是簇?cái)?shù)k。

缺點(diǎn)?

1隘擎、K值的選取不好把握?

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

3、如果各隱含類別的數(shù)據(jù)不平衡,比如各隱含類別的數(shù)據(jù)量嚴(yán)重失衡采幌,或者各隱含類別的方差不同劲够,則聚類效果不佳。?

4休傍、 最終結(jié)果和初始點(diǎn)的選擇有關(guān)征绎,容易陷入局部最優(yōu)。

5磨取、對噪音和異常點(diǎn)比較的敏感人柿。

三、 K-Means初始化優(yōu)化

二分K-Means

????解決K-Means算法對初始簇心比較敏感的問題忙厌,二分K-Means算法是一種弱化初始質(zhì)心的一種算法凫岖。

算法流程:

1、將所有樣本數(shù)據(jù)作為一個(gè)簇放到一個(gè)隊(duì)列中逢净。

2哥放、從隊(duì)列中選擇一個(gè)簇進(jìn)行K-Means算法劃分,劃分為兩個(gè)子簇汹胃,并將子簇添加到隊(duì)列中婶芭。

3、循環(huán)迭代步驟2操作着饥,直到中止條件達(dá)到(聚簇?cái)?shù)量、最小平方誤差惰赋、迭代次數(shù)等)宰掉。

4、隊(duì)列中的簇就是最終的分類簇集合赁濒。

從隊(duì)列中選擇劃分聚簇的規(guī)則一般有兩種方式轨奄;分別如下:

1、對所有簇計(jì)算誤差和SSE(SSE也可以認(rèn)為是距離函數(shù)的一種變種)拒炎,選擇SSE最大的聚簇進(jìn)行劃分操作(優(yōu)選這種策略)挪拟。

2、選擇樣本數(shù)據(jù)量最多的簇進(jìn)行劃分操作:

K-Means++

????由于 K-means 算法的分類結(jié)果會(huì)受到初始點(diǎn)的選取而有所區(qū)別击你,因此有提出這種算法的改進(jìn):?K-means++?玉组。

????其實(shí)這個(gè)算法也只是對初始點(diǎn)的選擇有改進(jìn)而已,其他步驟都一樣丁侄。初始質(zhì)心選取的基本思路就是惯雳,初始的聚類中心之間的相互距離要盡可能的遠(yuǎn)

算法流程:

1鸿摇、隨機(jī)選取一個(gè)樣本作為第一個(gè)聚類中心 c1石景;

2、計(jì)算每個(gè)樣本與當(dāng)前已有類聚中心最短距離(即與最近一個(gè)聚類中心的距離),用?D(x)表示潮孽;這個(gè)值越大揪荣,表示被選取作為聚類中心的概率較大;最后往史,用輪盤法選出下一個(gè)聚類中心仗颈。

3、重復(fù)步驟2怠堪,知道選出 k 個(gè)聚類中心揽乱。

4、選出初始點(diǎn)(聚類中心)粟矿,就繼續(xù)使用標(biāo)準(zhǔn)的 k-means 算法了凰棉。

盡管K-Means++在聚類中心的計(jì)算上浪費(fèi)了很多時(shí)間,但是在迭代過程中陌粹,k-mean 本身能快速收斂撒犀,因此算法實(shí)際上降低了計(jì)算時(shí)間。

K-Means||

? ? ? 解決K-Means++算法缺點(diǎn)而產(chǎn)生的一種算法掏秩;主要思路是改變每次遍歷時(shí)候的取樣規(guī)則或舞,并非按照K-Means++算法每次遍歷只獲取一個(gè)樣本,而是每次獲取K個(gè)樣本蒙幻,重復(fù)該取樣操作O(logn)次(n是樣本的個(gè)數(shù))映凳,然后再將這些抽樣出來的樣本聚類出K個(gè)點(diǎn),最后使用這K個(gè)點(diǎn)作為K-Means算法的初始聚簇中心點(diǎn)邮破。實(shí)踐證明:一般5次重復(fù)采用就可以保證一個(gè)比較好的聚簇中心點(diǎn)诈豌。

算法流程:

1、在N個(gè)樣本中抽K個(gè)樣本抒和,一共抽logn次矫渔,形成一個(gè)新的樣本集,一共有Klogn個(gè)數(shù)據(jù)摧莽。

2庙洼、在新數(shù)據(jù)集中使用K-Means算法,找到K個(gè)聚簇中心镊辕。

3油够、把這K個(gè)聚簇中心放到最初的樣本集中,作為初始聚簇中心丑蛤。

4叠聋、原數(shù)據(jù)集根據(jù)上述初始聚簇中心,再用K-Means算法計(jì)算出最終的聚簇受裹。

Canopy算法

????????Canopy屬于一種‘粗’聚類算法碌补,即使用一種簡單虏束、快捷的距離計(jì)算方法將數(shù)據(jù)集分為若干可重疊的子集canopy,這種算法不需要指定k值厦章、但精度較低镇匀,可以結(jié)合K-means算法一起使用:先由Canopy算法進(jìn)行粗聚類得到k個(gè)質(zhì)心,再使用K-means算法進(jìn)行聚類袜啃。

?算法流程:

?1汗侵、將原始樣本集隨機(jī)排列成樣本列表L=[x1,x2,...,xm](排列好后不再更改),根據(jù)先驗(yàn)知識(shí)或交叉驗(yàn)證調(diào)參設(shè)定初始距離閾值T1群发、T2晰韵,且T1>T2 。

2熟妓、從列表L中隨機(jī)選取一個(gè)樣本P作為第一個(gè)canopy的質(zhì)心雪猪,并將P從列表中刪除。

3起愈、從列表L中隨機(jī)選取一個(gè)樣本Q只恨,計(jì)算Q到所有質(zhì)心的距離,考察其中最小的距離D:

如果D≤T1抬虽,則給Q一個(gè)弱標(biāo)記官觅,表示Q屬于該canopy,并將Q加入其中阐污;

如果D≤T2休涤,則給Q一個(gè)強(qiáng)標(biāo)記,表示Q屬于該canopy笛辟,且和質(zhì)心非常接近滑绒,所以將該canopy的質(zhì)心設(shè)為所有強(qiáng)標(biāo)記樣本的中心位置,并將Q從列表L中刪除隘膘;

?如果D>T1,則Q形成一個(gè)新的聚簇杠览,并將Q從列表L中刪除弯菊。

4、重復(fù)第三步直到列表L中元素個(gè)數(shù)為零踱阿。

注意

1管钳、‘粗’距離計(jì)算的選擇對canopy的分布非常重要,如選擇其中某個(gè)屬性软舌、其他外部屬性才漆、歐式距離等。

2佛点、當(dāng)T2<D≤T1時(shí)醇滥,樣本不會(huì)從列表中被刪除黎比,而是繼續(xù)參與下一輪迭代,直到成為新的質(zhì)心或者某個(gè)canopy的強(qiáng)標(biāo)記成員鸳玩。

3阅虫、T1、T2的取值影響canopy的重疊率及粒度:當(dāng)T1過大時(shí)不跟,會(huì)使樣本屬于多個(gè)canopy颓帝,各個(gè)canopy間區(qū)別不明顯;當(dāng)T2過大時(shí)窝革,會(huì)減少canopy個(gè)數(shù)购城,而當(dāng)T2過小時(shí),會(huì)增加canopy個(gè)數(shù)虐译,同時(shí)增加計(jì)算時(shí)間瘪板。

4、canopy之間可能存在重疊的情況菱蔬,但是不會(huì)存在某個(gè)樣本不屬于任何canopy的情況篷帅。

5、Canopy算法可以消除孤立點(diǎn)拴泌,即刪除包含樣本數(shù)目較少的canopy魏身,往往這些canopy包含的是孤立點(diǎn)或噪音點(diǎn)。


Canopy算法常用應(yīng)用場景

????由于K-Means算法存在初始聚簇中心點(diǎn)敏感的問題蚪腐,常用使用Canopy+K-Means算法混合形式進(jìn)行模型構(gòu)建箭昵。

1、先使用canopy算法進(jìn)行“粗”聚類得到K個(gè)聚類中心點(diǎn)回季。

2家制、K-Means算法使用Canopy算法得到的K個(gè)聚類中心點(diǎn)作為初始中心點(diǎn),進(jìn)行“細(xì)”聚類泡一。

優(yōu)點(diǎn)

1颤殴、執(zhí)行速度快(先進(jìn)行了一次聚簇中心點(diǎn)選擇的預(yù)處理);

2鼻忠、不需要給定K值涵但,應(yīng)用場景多。

3帖蔓、能夠緩解K-Means算法對于初始聚類中心點(diǎn)敏感的問題矮瘟。

Mini Batch K-Means

????Mini Batch K-Means算法是K-Means算法的一種優(yōu)化變種,采用小規(guī)模的數(shù)據(jù)子集(每次訓(xùn)練使用的數(shù)據(jù)集是在訓(xùn)練算法的時(shí)候隨機(jī)抽取的數(shù)據(jù)子集)減少計(jì)算時(shí)間塑娇,同時(shí)試圖優(yōu)化目標(biāo)函數(shù)澈侠;Mini Batch K-Means算法可以減少K-Means算法的收斂時(shí)間,而且產(chǎn)生的結(jié)果效果只是略差于標(biāo)準(zhǔn)K-Means算法埋酬。

?算法流程:

1哨啃、首先抽取部分?jǐn)?shù)據(jù)集烧栋,使用K-Means算法構(gòu)建出K個(gè)聚簇點(diǎn)的模型。

2棘催、繼續(xù)抽取訓(xùn)練數(shù)據(jù)集中的部分?jǐn)?shù)據(jù)集樣本數(shù)據(jù)劲弦,并將其添加到模型中,分配給距離最近的聚簇中心點(diǎn)醇坝。

3邑跪、更新聚簇的中心點(diǎn)值。

4呼猪、循環(huán)迭代第二步和第三步操作画畅,直到中心點(diǎn)穩(wěn)定或者達(dá)到迭代次數(shù),停止計(jì)算操作宋距。


四轴踱、聚類大綱

http://www.reibang.com/p/f0727880c9c0

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市谚赎,隨后出現(xiàn)的幾起案子淫僻,更是在濱河造成了極大的恐慌,老刑警劉巖壶唤,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雳灵,死亡現(xiàn)場離奇詭異,居然都是意外死亡闸盔,警方通過查閱死者的電腦和手機(jī)悯辙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來迎吵,“玉大人躲撰,你說我怎么就攤上這事』鞣眩” “怎么了拢蛋?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蔫巩。 經(jīng)常有香客問我瓤狐,道長,這世上最難降的妖魔是什么批幌? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮嗓节,結(jié)果婚禮上荧缘,老公的妹妹穿的比我還像新娘。我一直安慰自己拦宣,他們只是感情好截粗,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布信姓。 她就那樣靜靜地躺著,像睡著了一般绸罗。 火紅的嫁衣襯著肌膚如雪意推。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼燎斩。 笑死蝶念,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的熬拒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼儿子!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起砸喻,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤柔逼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后割岛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體愉适,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年蜂桶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了儡毕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡扑媚,死狀恐怖腰湾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情疆股,我是刑警寧澤费坊,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站旬痹,受9級(jí)特大地震影響附井,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜两残,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一永毅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧人弓,春花似錦沼死、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽耸别。三九已至,卻和暖如春县钥,著一層夾襖步出監(jiān)牢的瞬間秀姐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來泰國打工若贮, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留省有,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓兜看,卻偏偏與公主長得像锥咸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子细移,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359