假設(shè)您想根據(jù)內(nèi)容和主題對(duì)數(shù)百(或數(shù)千)個(gè)文檔進(jìn)行分類,或者您希望出于某種原因?qū)⒉煌膱D像組合在一起。或者更重要的是,假設(shè)你有相同的數(shù)據(jù)已經(jīng)被分類但是你想要挑戰(zhàn)這個(gè)標(biāo)簽,您想知道數(shù)據(jù)分類是否有意義,或者是否可以改進(jìn)。
好吧,我的建議是你對(duì)數(shù)據(jù)進(jìn)行聚類。信息經(jīng)常會(huì)因?yàn)槿哂嗟雀鞣N原因變得模糊不清,而將數(shù)據(jù)分組到具有相似特征的群集(群集)中是一種有效的方式。
聚類是一種廣泛用于查找具有相似特征的觀察組(稱為聚類)的技術(shù)。此過(guò)程不是由特定目的驅(qū)動(dòng)的,這意味著您不必專門告訴您的算法如何對(duì)這些觀察進(jìn)行分組,因?yàn)樗仟?dú)立進(jìn)行(組有機(jī)地形成)分組的。結(jié)果是,同一組中的觀察(或數(shù)據(jù)點(diǎn))在它們之間比另一組中的其他觀察更相似。目標(biāo)是獲得盡可能相似的同一組中的數(shù)據(jù)點(diǎn),并使不同組中的數(shù)據(jù)點(diǎn)盡可能不相似。
K-means非常適合探索性分析,非常適合了解您的數(shù)據(jù)并提供幾乎所有數(shù)據(jù)類型的見(jiàn)解。無(wú)論是圖像、圖形還是文本,K-means都非常靈活,幾乎可以滿足所有需求。
無(wú)監(jiān)督學(xué)習(xí)中的搖滾明星之一
聚類(包括K均值聚類)是一種用于數(shù)據(jù)分類的無(wú)監(jiān)督學(xué)習(xí)技術(shù)。
無(wú)監(jiān)督學(xué)習(xí)意味著沒(méi)有輸出變量來(lái)指導(dǎo)學(xué)習(xí)過(guò)程(沒(méi)有這個(gè)或那個(gè),沒(méi)有對(duì)錯(cuò)),數(shù)據(jù)由算法來(lái)探索以發(fā)現(xiàn)模式。我們只觀察這些特征,但沒(méi)有對(duì)結(jié)果進(jìn)行確定的測(cè)量值,因?yàn)槲覀兿胍页鏊鼈儭?/p>
與監(jiān)督學(xué)習(xí)不同的是,非監(jiān)督學(xué)習(xí)技術(shù)不使用帶標(biāo)簽的數(shù)據(jù),算法需要自己去發(fā)現(xiàn)數(shù)據(jù)中的結(jié)構(gòu)。
在聚類技術(shù)領(lǐng)域中,K-means可能是最常見(jiàn)和經(jīng)常使用的技術(shù)之一。K-means使用迭代細(xì)化方法,基于用戶定義的集群數(shù)量(由變量K表示)和數(shù)據(jù)集來(lái)產(chǎn)生其最終聚類。例如,如果將K設(shè)置為3,則數(shù)據(jù)集將分組為3個(gè)群集,如果將K設(shè)置為4,則將數(shù)據(jù)分組為4個(gè)群集,依此類推。
K-means從任意選擇的數(shù)據(jù)點(diǎn)開(kāi)始,作為數(shù)據(jù)組的提議方法,并迭代地重新計(jì)算新的均值,以便收斂到數(shù)據(jù)點(diǎn)的最終聚類。
但是,如果您只提供一個(gè)值(K),算法如何決定如何對(duì)數(shù)據(jù)進(jìn)行分組?當(dāng)您定義K的值時(shí),您實(shí)際上是在告訴算法您需要多少均值或質(zhì)心(如果設(shè)置K = 3,則創(chuàng)建了3個(gè)均值或質(zhì)心,其中包含3個(gè)聚類)。質(zhì)心是表示聚類中心的數(shù)據(jù)點(diǎn)(均值),它可能不一定是數(shù)據(jù)集的成員。
這就是算法的工作原理:
K個(gè)質(zhì)心是隨機(jī)創(chuàng)建的(基于預(yù)定義的K值)
K-means將數(shù)據(jù)集中的每個(gè)數(shù)據(jù)點(diǎn)分配到最近的質(zhì)心(最小化它們之間的歐幾里德距離),這意味著如果數(shù)據(jù)點(diǎn)比任何其他質(zhì)心更接近該群集的質(zhì)心,則認(rèn)為該數(shù)據(jù)點(diǎn)位于特定集群中。
然后K-means通過(guò)獲取分配給該質(zhì)心集群的所有數(shù)據(jù)點(diǎn)的平均值來(lái)重新計(jì)算質(zhì)心,從而減少與前一步驟相關(guān)的集群內(nèi)總方差。K均值中的“均值”是指對(duì)數(shù)據(jù)求均值并找到新的質(zhì)心。
該算法在步驟2和3之間迭代,直到滿足一些標(biāo)準(zhǔn)(例如最小化數(shù)據(jù)點(diǎn)與其對(duì)應(yīng)質(zhì)心的距離之和,達(dá)到最大迭代次數(shù),質(zhì)心值不變或數(shù)據(jù)點(diǎn)沒(méi)有變化集群)
在該示例中,經(jīng)過(guò)5次迭代之后,計(jì)算的質(zhì)心保持相同,并且數(shù)據(jù)點(diǎn)不再交換集群(算法收斂)。這里,每個(gè)質(zhì)心都顯示為一個(gè)深色的數(shù)據(jù)點(diǎn)。
運(yùn)行此算法的初始結(jié)果可能不是最佳結(jié)果,并且使用不同的隨機(jī)起始質(zhì)心重新運(yùn)行它可能提供更好的性能(不同的初始對(duì)象可能產(chǎn)生不同的聚類結(jié)果)。出于這個(gè)原因,通常的做法是使用不同的起點(diǎn)多次運(yùn)行算法,并評(píng)估不同的初始化方法(例如Forgy或Kaufman方法)。
但另一個(gè)問(wèn)題出現(xiàn)了:你如何知道K的正確值,或者要?jiǎng)?chuàng)建多少個(gè)質(zhì)心?對(duì)此這個(gè)問(wèn)題沒(méi)有普遍的答案,雖然質(zhì)心或集群的最佳數(shù)量還不是先驗(yàn)的,但是存在不同的方法來(lái)估計(jì)它。一種常用的方法是測(cè)試不同數(shù)量的集群并測(cè)量得到的誤差平方之和,選擇K值,在該值處增加將導(dǎo)致誤差和減小的非常小,而減小時(shí)將急劇增加誤差和。定義最佳集群數(shù)的這一點(diǎn)被稱為“肘點(diǎn)”,可以用作一個(gè)視覺(jué)度量來(lái)找到K值的最佳選擇。
在此示例中,肘點(diǎn)位于3個(gè)集群中
K-means是您的數(shù)據(jù)科學(xué)工具包中必不可少的,有幾個(gè)原因。首先,它易于實(shí)現(xiàn)并帶來(lái)高效的性能。畢竟,您只需要定義一個(gè)參數(shù)(K的值)來(lái)查看結(jié)果。它的速度很快并且可以很好地處理大型數(shù)據(jù)集,使其能夠處理當(dāng)前的海量數(shù)據(jù)。它非常靈活,可以與幾乎任何數(shù)據(jù)類型一起使用,其結(jié)果易于解釋,并且比其他算法更易于解釋。此外,該算法非常受歡迎,您幾乎可以在任何學(xué)科中找到用例和實(shí)現(xiàn)。
但凡事都有不利的一面
K-means也存在一些缺點(diǎn)。第一個(gè)是你需要定義集群的數(shù)量,這個(gè)決定會(huì)嚴(yán)重影響結(jié)果。此外,由于初始質(zhì)心的位置是隨機(jī)的,因此結(jié)果可能不具有可比性并且顯示缺乏一致性。K-means生成具有統(tǒng)一大小的聚類(每個(gè)聚類具有大致相同的觀察量),即使數(shù)據(jù)可能以不同的方式運(yùn)行,并且它對(duì)異常值和噪聲數(shù)據(jù)非常敏感。此外,它假設(shè)每個(gè)聚類中的數(shù)據(jù)點(diǎn)被建模為位于該聚類質(zhì)心周圍的球體內(nèi)(球形限制),但是當(dāng)違反此條件(或任何先前的條件)時(shí),算法可以以非直觀的方式運(yùn)行。
例1
示例1:在左側(cè),數(shù)據(jù)的直觀聚類,兩組數(shù)據(jù)點(diǎn)之間有明顯分離(由一個(gè)較大的數(shù)據(jù)點(diǎn)包圍的一個(gè)小環(huán)的形狀)。在右側(cè),通過(guò)K均值算法(K值為2)聚類的相同數(shù)據(jù)點(diǎn),其中每個(gè)質(zhì)心用菱形表示。如您所見(jiàn),該算法無(wú)法識(shí)別直觀的聚類。
例2
示例2:左側(cè)是兩個(gè)可識(shí)別數(shù)據(jù)組的聚類。在右側(cè),K-means聚類在相同數(shù)據(jù)點(diǎn)上的結(jié)果不適合直觀的聚類。與示例1的情況一樣,由于算法的球形限制,K-means創(chuàng)建的分區(qū)不能反映我們?cè)谝曈X(jué)上識(shí)別的內(nèi)容。它試圖找到圍繞它們的整個(gè)數(shù)據(jù)球體的質(zhì)心,并且當(dāng)聚類的幾何形狀偏離球體時(shí)表現(xiàn)很差。
例3
示例3:再次,在左側(cè)有兩個(gè)清晰的集群(一個(gè)小而緊密的數(shù)據(jù)組和另一個(gè)較大且分散的集群),K-means無(wú)法識(shí)別(右側(cè))。這里,為了平衡兩個(gè)數(shù)據(jù)組之間的集群內(nèi)距離并生成具有統(tǒng)一大小的集群,該算法混合兩個(gè)數(shù)據(jù)組并創(chuàng)建2個(gè)不代表數(shù)據(jù)集的人工集群。
有趣的是,無(wú)論這些數(shù)據(jù)點(diǎn)之間的關(guān)系多么明顯,K-means都不允許彼此遠(yuǎn)離的數(shù)據(jù)點(diǎn)共享同一個(gè)集群。
現(xiàn)在做什么?
事情是現(xiàn)實(shí)生活中的數(shù)據(jù)幾乎總是復(fù)雜、雜亂無(wú)章和嘈雜的?,F(xiàn)實(shí)世界中的情況很少能反映出明確的條件,即可立即應(yīng)用這些類型的算法。在K-means算法的情況下,預(yù)計(jì)至少有一個(gè)假設(shè)會(huì)被違反,因此我們不僅要識(shí)別它,還需要知道在這種情況下該做什么。
好消息是還有其他選擇,可以糾正缺陷。例如,將數(shù)據(jù)轉(zhuǎn)換為極坐標(biāo)可以解決我們?cè)谑纠?中描述的球形限制。如果發(fā)現(xiàn)嚴(yán)重的限制,還可以考慮使用其他類型的聚類算法??赡艿姆椒ㄊ鞘褂没诿芏然蚧趯哟蔚乃惴?,這些算法修復(fù)了一些K均值限制(但也有其自身的局限性)。
總之,K-means是一種具有大量潛在用途的精彩算法,因此它具有多種功能,幾乎可用于任何類型的數(shù)據(jù)分組。但是從來(lái)沒(méi)有免費(fèi)的午餐:如果你不想被引導(dǎo)到錯(cuò)誤的結(jié)果,你需要了解它的假設(shè)和它的運(yùn)作方式。
審核編輯 :李倩
-
聚類算法
+關(guān)注
關(guān)注
2文章
118瀏覽量
12278 -
K-means
+關(guān)注
關(guān)注
0文章
28瀏覽量
11465
原文標(biāo)題:一個(gè)完整的K-means聚類算法指南!
文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺(jué)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
數(shù)據(jù)降維聚類工具介紹——SpatialPCA

2K0300 OpenHarmony源碼構(gòu)建指南
S32K3xx微控制器的硬件設(shè)計(jì)指南
G.726/G.711 CST算法用戶指南

TLV320AIC3107EVM-K用戶指南

TLV320AIC3204EVM-K用戶指南

舒適噪聲發(fā)生器(CNG)算法用戶指南

TLV320DAC3203EVM-K用戶指南

BOOSTXL-K350QVG-S1 QVGA顯示BoosterPack?插件模塊用戶指南

STM32應(yīng)用中UL/CSA/IEC 60730-1/60335-1的B類認(rèn)證獲取指南
DLP ECD 4K UHD EVM用戶指南

LMQ61460EVM-400K用戶指南

人員軌跡分析算法有哪些?
D類音頻放大器無(wú)源元件選擇指南

評(píng)論