K-Means算法是最古老也是應(yīng)用最廣泛的聚類算法,它使用質(zhì)心定義原型,質(zhì)心是一組點(diǎn)的均值,通常該算法用于n維連續(xù)空間中的對(duì)象。
K-Means算法流程
step1:選擇K個(gè)點(diǎn)作為初始質(zhì)心
step2:repeat
將每個(gè)點(diǎn)指派到最近的質(zhì)心,形成K個(gè)簇
重新計(jì)算每個(gè)簇的質(zhì)心
until 質(zhì)心不在變化
例如下圖的樣本集,初始選擇是三個(gè)質(zhì)心比較集中,但是迭代3次之后,質(zhì)心趨于穩(wěn)定,并將樣本集分為3部分
我們對(duì)每一個(gè)步驟都進(jìn)行分析
step1:選擇K個(gè)點(diǎn)作為初始質(zhì)心
這一步首先要知道K的值,也就是說K是手動(dòng)設(shè)置的,而不是像EM算法那樣自動(dòng)聚類成n個(gè)簇
其次,如何選擇初始質(zhì)心
最簡(jiǎn)單的方式無異于,隨機(jī)選取質(zhì)心了,然后多次運(yùn)行,取效果最好的那個(gè)結(jié)果。這個(gè)方法,簡(jiǎn)單但不見得有效,有很大的可能是得到局部最優(yōu)。
另一種復(fù)雜的方式是,隨機(jī)選取一個(gè)質(zhì)心,然后計(jì)算離這個(gè)質(zhì)心最遠(yuǎn)的樣本點(diǎn),對(duì)于每個(gè)后繼質(zhì)心都選取已經(jīng)選取過的質(zhì)心的最遠(yuǎn)點(diǎn)。使用這種方式,可以確保質(zhì)心是隨機(jī)的,并且是散開的。
step2:repeat
將每個(gè)點(diǎn)指派到最近的質(zhì)心,形成K個(gè)簇
重新計(jì)算每個(gè)簇的質(zhì)心
until 質(zhì)心不在變化
如何定義最近的概念,對(duì)于歐式空間中的點(diǎn),可以使用歐式空間,對(duì)于文檔可以用余弦相似性等等。對(duì)于給定的數(shù)據(jù),可能適應(yīng)與多種合適的鄰近性度量。
標(biāo)簽:
K-means
Java
數(shù)據(jù)挖掘
聚類
算法
上傳時(shí)間:
2018-11-27
上傳用戶:1159474180