聚類是最常見(jiàn)的無(wú)監(jiān)督機(jī)器學(xué)習(xí)問(wèn)題之一。通過(guò)一些相似性度量方法把一些觀測(cè)值分成同一類。
共有5類聚類方法:
起初,我寫(xiě)這篇文章主要是由于我閱讀了關(guān)于clustree包,dendextend文檔以及由Alboekadel Kassambara撰寫(xiě)的factoextra編寫(xiě)的關(guān)于聚類分析的實(shí)用指南。
數(shù)據(jù)集
我將使用集群包中一個(gè)鮮為人知的數(shù)據(jù)集:all.mammals.milk.1956,這是我之前沒(méi)有研究過(guò)的一個(gè)數(shù)據(jù)集。
數(shù)據(jù)集傳送門(mén):https://www.rdocumentation.org/packages/cluster.datasets/versions/1.0-1/topics/all.mammals.milk.1956
這個(gè)小數(shù)據(jù)集包含了25種哺乳動(dòng)物及其牛奶成分(水,蛋白質(zhì),脂肪,乳糖,灰分百分比)的清單。
首先讓我們加載所需的包。
現(xiàn)在加載數(shù)據(jù)。
讓我們研究并可視化這些數(shù)據(jù)。
所有變量用數(shù)字來(lái)表示,那么,統(tǒng)計(jì)分布呢?
不同屬性之間的關(guān)系是什么?使用corrplot()創(chuàng)建相關(guān)矩陣。
當(dāng)您擁有以不同比例測(cè)量的變量時(shí),縮放數(shù)據(jù)很有用。
降維可以幫助數(shù)據(jù)可視化(例如PCA方法)。
這些是掌握80%差異的5臺(tái)PC。scree圖顯示,PC1捕獲了大約75%的方差。
從這些可視化中可以看出水和乳糖一起增加,蛋白質(zhì),灰分和脂肪一起增加;這兩組是負(fù)相關(guān)的。
Na?ve(K-means)方法
分區(qū)聚類方法(如k-means和Partitioning Around Medoids(PAM))要求您指定要生成的聚類數(shù)。
k-means聚類可能是最著名的分區(qū)方法之一。 k均值聚類背后的想法是定義聚類,即在聚類內(nèi)的總變異量,以最小化聚類的緊湊性。
我們可以使用kmeans()函數(shù)計(jì)算R中的k-means:
上面的示例將數(shù)據(jù)分組為兩個(gè)聚類,center = 2,并嘗試多個(gè)初始配置,報(bào)告最佳配置。例如,由于此算法對(duì)聚類質(zhì)心的初始位置敏感,因此添加nstart = 30將生成30個(gè)初始配置,然后平均所有質(zhì)心結(jié)果。
因?yàn)樵谖覀冮_(kāi)始之前需要設(shè)置聚類(k)的數(shù)量,所以事先檢查k的幾個(gè)不同值可能會(huì)比較有利。
雖然這種視覺(jué)評(píng)估告訴我們聚類之間的界定,但它并沒(méi)有告訴我們聚類的最佳數(shù)量是多少。
確定最優(yōu)聚類數(shù)
文獻(xiàn)中已經(jīng)提出了各種用于評(píng)估聚類結(jié)果的措施。術(shù)語(yǔ)聚類驗(yàn)證用于設(shè)計(jì)評(píng)估聚類算法結(jié)果的過(guò)程。有超過(guò)30個(gè)索引和方法用于識(shí)別最佳聚類數(shù),因此我將重點(diǎn)介紹一些非常簡(jiǎn)潔的clustree包。
“肘子”法(“Elbow” Method)
這種方法也比較著名,其中計(jì)算并繪制每個(gè)聚類數(shù)的平方和,并且用戶尋找從陡峭到淺(肘部)的斜率變化以確定最佳數(shù)量集群。這種方法不精確,但仍有潛在的幫助。
這種方法很有用,因?yàn)樗@示增加了聚類數(shù)量如何以有意義的方式分離聚類,而不是以邊緣的方式。曲線表明除了第三個(gè)之外的其他聚類幾乎沒(méi)有價(jià)值(參見(jiàn)[此處]以獲得更加數(shù)學(xué)上嚴(yán)格的解釋和此方法的實(shí)現(xiàn))。如果不是基于群內(nèi)方差的簡(jiǎn)單解決方案,則肘子法是相當(dāng)清楚的。差距統(tǒng)計(jì)是處理具有沒(méi)有明顯聚類的分布的數(shù)據(jù)的更復(fù)雜的方法(對(duì)于球狀的、高斯分布的、輕度不相交的數(shù)據(jù)分布,可以找到正確的k值)。
差距統(tǒng)計(jì)
間隙統(tǒng)計(jì)量將不同k值的聚類內(nèi)變化內(nèi)的總量與它們?cè)跀?shù)據(jù)的空參考分布下的預(yù)期值進(jìn)行比較。最優(yōu)聚類的估計(jì)將是使得差距統(tǒng)計(jì)最大化的值(即,產(chǎn)生最大間隙統(tǒng)計(jì)量)。這意味著聚類結(jié)構(gòu)遠(yuǎn)離點(diǎn)的隨機(jī)均勻分布。
gap stats圖顯示了用垂直段繪制的具有標(biāo)準(zhǔn)錯(cuò)誤的聚類數(shù)量(k)和用垂直虛線藍(lán)線標(biāo)記的k的最優(yōu)值。根據(jù)這一觀察,k = 2是數(shù)據(jù)中最優(yōu)聚類。
輪廓法
另一種可以幫助確定最優(yōu)聚類數(shù)量的可視化方法稱為輪廓法。平均輪廓方法計(jì)算不同k值的觀測(cè)值的平均輪廓。群集k的最佳數(shù)量是使k的可能值范圍內(nèi)的平均輪廓最大化的群集。
這也表明了2個(gè)聚類是最優(yōu)的。
離差平方和法
另一種聚類驗(yàn)證方法是通過(guò)最小化聚類內(nèi)的平方和(每個(gè)聚類有多緊密度的度量)和最大化聚類之間的平方和(每個(gè)聚類的分離程度的度量)來(lái)選擇最佳聚類數(shù)。來(lái)自其他人)。
從這個(gè)測(cè)量結(jié)果來(lái)看,7個(gè)聚類似乎是合適的選擇。
NbClust
NbClust包提供了30個(gè)用于確定相關(guān)聚類的索引,并根據(jù)不同的聚類數(shù)量組合、距離度量和聚類方法得到的不同結(jié)果向用戶提出最佳的聚類方案。
這表明最佳簇聚類數(shù)為3。
Clustree
上面的統(tǒng)計(jì)方法生成一個(gè)每次只考慮一組集群的得分。 clustree R包采用另一種方法,考慮樣本如何隨著聚類數(shù)的增加而改變分組。這對(duì)于顯示哪些聚類是不同的以及哪些聚類不穩(wěn)定非常有用。它沒(méi)有明確告訴您哪種聚類選擇最佳,但它對(duì)于探索可能的選擇很有用。
我們來(lái)看看1到11個(gè)聚類。
在該圖中,每個(gè)節(jié)點(diǎn)的大小對(duì)應(yīng)于每個(gè)聚類中的樣本數(shù)量,并且箭頭根據(jù)每個(gè)聚類接收的樣本數(shù)量著色。一組單獨(dú)的箭頭,即透明的箭頭,稱為傳入節(jié)點(diǎn)比例,也是彩色的,并顯示來(lái)自一個(gè)組的樣本如何最終在另一個(gè)組中 - 這是聚類不穩(wěn)定性的指標(biāo)。
在該圖中,我們看到當(dāng)我們從k = 2移動(dòng)到k = 3時(shí),來(lái)自左側(cè)聚類的一些物種被重新分配到右側(cè)的第三個(gè)聚類。當(dāng)我們從k = 8移動(dòng)到k = 9時(shí),我們看到一個(gè)節(jié)點(diǎn)具有多條傳入邊,這表明我們對(duì)數(shù)據(jù)進(jìn)行了過(guò)度聚類。
將此維度疊加在數(shù)據(jù)中的其他維度上也是有用的,特別是那些來(lái)自降維技術(shù)的維度。我們可以使用clustree_overlay()函數(shù)執(zhí)行此操作:
我更喜歡從側(cè)面看到它,在分辨率維度上顯示x或y維度之一。
這表明我們可以通過(guò)檢查邊緣來(lái)指示正確的聚類分辨率,并且我們可以過(guò)度信息來(lái)評(píng)估聚類的質(zhì)量。
選擇合適的算法
如何選擇合適的聚類算法? cValid包可用于同時(shí)比較多個(gè)聚類算法,以確定最佳聚類方法和最佳聚類數(shù)。我們將比較k-means、分層和PAM聚類。
連通性和輪廓是連通性的度量,而Dunn指數(shù)是不在同一聚類中的觀測(cè)值與最大聚類內(nèi)距離之間的最小距離的比率。
提取聚類的特征
我們想回答諸如“什么使這個(gè)聚類與眾不同?”以及“彼此相似的聚類是什么”之類的問(wèn)題。
如前所述,很難評(píng)估聚類結(jié)果的質(zhì)量。我們沒(méi)有真正的標(biāo)簽,因此聚類是一個(gè)很好的EDA起點(diǎn),可以更詳細(xì)地探索這些聚類之間的差異。讓我們選擇五個(gè)來(lái)看看,并研究下他們的特征。
讓我們提取聚類并將它們添加回我們的初始數(shù)據(jù),以便在聚類級(jí)別執(zhí)行一些描述性統(tǒng)計(jì):
我們看到僅由兔子組成的聚類2具有灰分很高。由海豹和海豚組成的第3組脂肪含量很高,這是有道理的,因?yàn)樵谶@樣寒冷的氣候下,第四組的乳糖含量很高。
聯(lián)系客服