聚類(lèi)分析是我們數(shù)據(jù)挖掘中常用的算法平夜,常常用于沒(méi)有分類(lèi),但又有相關(guān)相似性的樣本研究當(dāng)中赐稽,包括了K-Means、K-中心點(diǎn)和系統(tǒng)聚類(lèi)三種算法浑侥,各自有各自的特點(diǎn)和適用環(huán)境姊舵。今天我們大圣眾包(www.dashengzb.cn)根據(jù)網(wǎng)絡(luò)資源詳細(xì)介紹下K-Means聚類(lèi)算法。
首先寓落,先看看K-Means聚類(lèi)算法是什么括丁?一般來(lái)說(shuō),K-Means算法是典型的基于距離的非層次聚類(lèi)算法伶选,在最小化誤差函數(shù)的基礎(chǔ)上將數(shù)據(jù)劃分為預(yù)定的類(lèi)數(shù)K史飞,采用距離作為相似性的評(píng)價(jià)指標(biāo),即認(rèn)為兩個(gè)對(duì)象的距離越近考蕾,其相似度就越大祸憋。
k-means算法基本步驟
(1)從數(shù)據(jù)中選擇k個(gè)對(duì)象作為初始聚類(lèi)中心;
(2)計(jì)算每個(gè)聚類(lèi)對(duì)象到聚類(lèi)中心的距離來(lái)劃分;
(3)再次計(jì)算每個(gè)聚類(lèi)中心
(4)計(jì)算標(biāo)準(zhǔn)測(cè)度函數(shù)肖卧,之道達(dá)到最大迭代次數(shù)蚯窥,則停止,否則塞帐,繼續(xù)操作拦赠。
K如何確定
與層次聚類(lèi)結(jié)合,經(jīng)常會(huì)產(chǎn)生較好的聚類(lèi)結(jié)果的一個(gè)有趣策略是葵姥,首先采用層次凝聚算法決定結(jié)果粗的數(shù)目荷鼠,并找到一個(gè)初始聚類(lèi),然后用迭代重定位來(lái)改進(jìn)該聚類(lèi)榔幸。
初始質(zhì)心的選取
常見(jiàn)的方法是隨機(jī)的選取初始質(zhì)心允乐,但是這樣簇的質(zhì)量常常很差矮嫉。
(1)多次運(yùn)行,每次使用一組不同的隨機(jī)初始質(zhì)心牍疏,然后選取具有最小SSE(誤差的平方和)的簇集蠢笋。這種策略簡(jiǎn)單,但是效果可能不好鳞陨,這取決于數(shù)據(jù)集和尋找的簇的個(gè)數(shù)昨寞。
(2)取一個(gè)樣本,并使用層次聚類(lèi)技術(shù)對(duì)它聚類(lèi)厦滤。從層次聚類(lèi)中提取K個(gè)簇援岩,并用這些簇的質(zhì)心作為初始質(zhì)心。該方法通常很有效掏导,但僅對(duì)下列情況有效:樣本相對(duì)較邢砘场;K相對(duì)于樣本大小較小碘菜。
(3)取所有點(diǎn)的質(zhì)心作為第一個(gè)點(diǎn)凹蜈。然后限寞,對(duì)于每個(gè)后繼初始質(zhì)心忍啸,選擇離已經(jīng)選取過(guò)的初始質(zhì)心最遠(yuǎn)的點(diǎn)。使用這種方法履植,確保了選擇的初始質(zhì)心不僅是隨機(jī)的计雌,而且是散開(kāi)的。但是玫霎,這種方法可能選中離群點(diǎn)凿滤。
距離的度量
常用的距離度量方法包括:歐幾里得距離和余弦相似度。歐幾里得距離度量會(huì)受指標(biāo)不同單位刻度的影響庶近,所以一般需要先進(jìn)行標(biāo)準(zhǔn)化翁脆,同時(shí)距離越大,個(gè)體間差異越大鼻种;空間向量余弦?jiàn)A角的相似度度量不會(huì)受指標(biāo)刻度的影響反番,余弦值落于區(qū)間[-1,1],值越大叉钥,差異越小罢缸。
質(zhì)心的計(jì)算
對(duì)于距離度量不管是采用歐式距離還是采用余弦相似度,簇的質(zhì)心都是其均值投队。
? 算法停止條件
一般是目標(biāo)函數(shù)達(dá)到最優(yōu)或者達(dá)到最大的迭代次數(shù)即可終止枫疆。對(duì)于不同的距離度量,目標(biāo)函數(shù)往往不同敷鸦。當(dāng)采用歐式距離時(shí)息楔,目標(biāo)函數(shù)一般為最小化對(duì)象到其簇質(zhì)心的距離的平方和寝贡;當(dāng)采用余弦相似度時(shí),目標(biāo)函數(shù)一般為最大化對(duì)象到其簇質(zhì)心的余弦相似度和值依。
空聚類(lèi)的處理
如果所有的點(diǎn)在指派步驟都未分配到某個(gè)簇兔甘,就會(huì)得到空簇。如果這種情況發(fā)生鳞滨,則需要某種策略來(lái)選擇一個(gè)替補(bǔ)質(zhì)心洞焙,否則的話,平方誤差將會(huì)偏大拯啦。
(1)選擇一個(gè)距離當(dāng)前任何質(zhì)心最遠(yuǎn)的點(diǎn)澡匪。這將消除當(dāng)前對(duì)總平方誤差影響最大的點(diǎn)。
(2)從具有最大SSE的簇中選擇一個(gè)替補(bǔ)的質(zhì)心褒链,這將分裂簇并降低聚類(lèi)的總SSE唁情。如果有多個(gè)空簇,則該過(guò)程重復(fù)多次甫匹。
適用范圍及缺陷
K-Menas算法試圖找到使平方誤差準(zhǔn)則函數(shù)最小的簇甸鸟。當(dāng)潛在的簇形狀是凸面的,簇與簇之間區(qū)別較明顯兵迅,且簇大小相近時(shí)抢韭,其聚類(lèi)結(jié)果較理想。對(duì)于處理大數(shù)據(jù)集合,該算法非常高效,且伸縮性較好腰根。
但該算法除了要事先確定簇?cái)?shù)K和對(duì)初始聚類(lèi)中心敏感外,經(jīng)常以局部最優(yōu)結(jié)束鳍贾,同時(shí)對(duì)“噪聲”和孤立點(diǎn)敏感,并且該方法不適于發(fā)現(xiàn)非凸面形狀的簇或大小差別很大的簇交洗。
克服缺點(diǎn)的方法:使用盡量多的數(shù)據(jù)骑科;使用中位數(shù)代替均值來(lái)克服outlier的問(wèn)題。
(更多大數(shù)據(jù)與商業(yè)智能干貨构拳、或電子書(shū)請(qǐng)關(guān)注大圣眾包咆爽,或添加個(gè)人微信號(hào)(dashenghuaer))