聚類是一種無監(jiān)督的學(xué)習(xí)(無監(jiān)督學(xué)習(xí)不依賴預(yù)先定義的類或帶類標(biāo)記的訓(xùn)練實(shí)例),它將相似的對(duì)象歸到同一個(gè)簇中,它是觀察式學(xué)習(xí),而非示例式的學(xué)習(xí),有點(diǎn)像全自動(dòng)分類。
說白了,聚類(clustering)是完全可以按字面意思來理解的——將相同、相似、相近、相關(guān)的對(duì)象實(shí)例聚成一類的過程。機(jī)器學(xué)習(xí)中常見的聚類算法包括 k-Means算法、期望最大化算法(Expectation Maximization,EM,參考“EM算法原理”)、譜聚類算法(參考機(jī)器學(xué)習(xí)算法復(fù)習(xí)-譜聚類)以及人工神經(jīng)網(wǎng)絡(luò)算法,本文闡述的是K-均值聚類算法,本文介紹K-均值(K-means)和二分K-均值聚類算法。
機(jī)器學(xué)習(xí)經(jīng)典算法詳解及Python實(shí)現(xiàn)–K近鄰(KNN)算法
機(jī)器學(xué)習(xí)經(jīng)典算法詳解及Python實(shí)現(xiàn)–線性回歸(Linear Regression)算法
機(jī)器學(xué)習(xí)經(jīng)典算法詳解及Python實(shí)現(xiàn)–決策樹(Decision Tree)
機(jī)器學(xué)習(xí)經(jīng)典算法詳解及Python實(shí)現(xiàn)–CART分類決策樹、回歸樹和模型樹
(一)何謂聚類
還是那句“物以類聚、人以群分”,如果預(yù)先知道人群的標(biāo)簽(如文藝、普通、2B),那么根據(jù)監(jiān)督學(xué)習(xí)的分類算法可將一個(gè)人明確的劃分到某一類;如果預(yù)先不知道人群的標(biāo)簽,那就只有根據(jù)人的特征(如愛好、學(xué)歷、職業(yè)等)劃堆了,這就是聚類算法。
聚類是一種無監(jiān)督的學(xué)習(xí)(無監(jiān)督學(xué)習(xí)不依賴預(yù)先定義的類或帶類標(biāo)記的訓(xùn)練實(shí)例),它將相似的對(duì)象歸到同一個(gè)簇中,它是觀察式學(xué)習(xí),而非示例式的學(xué)習(xí),有點(diǎn)像全自動(dòng)分類。
所謂簇就是該集合中的對(duì)象有很大的相似性,而不同集合間的對(duì)象有很大的相異性。簇識(shí)別(cluster identification)給出了聚類結(jié)果的含義,告訴我們這些簇到底都是些什么。通常情況下,簇質(zhì)心可以代表整個(gè)簇的數(shù)據(jù)來做出決策。聚類方法幾乎可以應(yīng)用于所有對(duì)象,簇內(nèi)的對(duì)象越相似,聚類的效果越好。
從機(jī)器學(xué)習(xí)的角度講,簇相當(dāng)于隱藏模式,聚類與分類的最大不同在于,分類學(xué)習(xí)的實(shí)例或數(shù)據(jù)對(duì)象有類別標(biāo)記,而聚類則不一樣,需要由聚類學(xué)習(xí)算法自動(dòng)確定標(biāo)記。因?yàn)槠洚a(chǎn)生的結(jié)果與分類相同,而只是類別沒有預(yù)先定義,所以聚類也被稱為無監(jiān)督分類(unsupervised classification )。
聚類分析是一種探索性的分析,在分類的過程中,人們不必事先給出一個(gè)分類的標(biāo)準(zhǔn),聚類分析能夠從樣本數(shù)據(jù)出發(fā),自動(dòng)進(jìn)行分類。聚類分析所使用方法的不同,常常會(huì)得到不同的結(jié)論。不同研究者對(duì)于同一組數(shù)據(jù)進(jìn)行聚類分析,所得到的聚類數(shù)未必一致。
從實(shí)際應(yīng)用的角度看,聚類分析是數(shù)據(jù)挖掘的主要任務(wù)之一。而且聚類能夠作為一個(gè)獨(dú)立的工具獲得數(shù)據(jù)的分布狀況,觀察每一簇?cái)?shù)據(jù)的特征,集中對(duì)特定的聚簇集合作進(jìn)一步地分析。聚類分析還可以作為其他算法(如分類和定性歸納算法)的預(yù)處理步驟。
聚類分析試圖將相似對(duì)象歸入同一簇,將不相似對(duì)象歸到不同簇,那么是否“相似”就要有所選擇的相似度計(jì)算方法?,F(xiàn)在,存在多種不同的相似度計(jì)算方法,到底使用哪種相似度計(jì)算方法取決于具體應(yīng)用,選擇合適的相似度計(jì)算方法才會(huì)提高聚類算法的性能。機(jī)器學(xué)習(xí)中常用的相似性度量方法參考博文“機(jī)器學(xué)習(xí)中的相似性度量”。
聚類算法通常按照中心點(diǎn)或者分層的方式對(duì)輸入數(shù)據(jù)進(jìn)行歸并,所以的聚類算法都試圖找到數(shù)據(jù)的內(nèi)在結(jié)構(gòu),以便按照最大的共同點(diǎn)將數(shù)據(jù)進(jìn)行歸類,其目標(biāo)是使同一類對(duì)象的相似度盡可能地大;不同類對(duì)象之間的相似度盡可能地小。
目前聚類的方法很多,根據(jù)基本思想的不同,大致可以將聚類算法分為五大類:層次聚類算法、分割聚類算法、基于約束的聚類算法、機(jī)器學(xué)習(xí)中的聚類算法和用于高維度的聚類算法,參考“各種聚類算法的比較”。聚類算法的基本過程包含特征選擇、相似性度量、聚類準(zhǔn)則、聚類算法和結(jié)果驗(yàn)證等,具體參考“聚類算法學(xué)習(xí)筆記(一)——基礎(chǔ)”。
說白了,聚類(clustering)是完全可以按字面意思來理解的——將相同、相似、相近、相關(guān)的對(duì)象實(shí)例聚成一類的過程。簡單理解,如果一個(gè)數(shù)據(jù)集合包含N個(gè)實(shí)例,根據(jù)某種準(zhǔn)則可以將這N個(gè)實(shí)例劃分為m個(gè)類別,每個(gè)類別中的實(shí)例都是相關(guān)的,而不同類別之間是區(qū)別的也就是不相關(guān)的,這就得到了一個(gè)聚類模型了。判別新樣本點(diǎn)的所屬類時(shí),就通過計(jì)算該點(diǎn)與這m個(gè)類別的相似度,選擇最相似的那個(gè)類作為該點(diǎn)的歸類。