前言
這篇筆記是StatQuest系列教程的第47沾谓,48,49節(jié)冷离。第47節(jié)與第48節(jié)有很在一部分內(nèi)容是重復(fù)的,主要講的是層次聚類纯命,第49節(jié)講提K-means聚類。
熱圖簡(jiǎn)單案例
平時(shí)在讀一個(gè)測(cè)序文章時(shí)痹栖,我們可能會(huì)經(jīng)骋诠看到熱圖,就像現(xiàn)在的這種圖:
現(xiàn)在我們來(lái)解釋一下這張圖:
- 這是一張熱圖(heatmap)揪阿,為什么要叫熱圖呢疗我,因?yàn)樗貌煌念伾珌?lái)表示數(shù)值的大小,通常來(lái)說(shuō)南捂,用暖色(紅色)表示數(shù)值大吴裤,冷色(藍(lán)色)表示數(shù)值小。
- 這個(gè)熱圖的行(row)是基因名(可能太小看不清楚)溺健,列是RNA-seq的樣本名麦牺。
- 當(dāng)原始數(shù)據(jù)通過(guò)熱圖來(lái)展現(xiàn)時(shí),數(shù)據(jù)經(jīng)過(guò)了兩種修飾來(lái)展示出來(lái)鞭缭。第一種修飾就是相對(duì)豐度(relative abundances)剖膳,以這種方式展示的數(shù)據(jù),它研究的是一個(gè)基因在不同樣本中的相對(duì)表達(dá)情況岭辣,這種展示方式吱晒,需要對(duì)同一行(也就是相同的基因在不同樣本中的表達(dá)水平)的數(shù)據(jù)進(jìn)行縮放(scaled),也就是Z轉(zhuǎn)換沦童。從下面的圖中仑濒,我們就可以看到,樣本1的某基因表達(dá)量明顯高于其它樣本(因?yàn)闃颖?的顏色最紅偷遗,根據(jù)圖例墩瞳,它的表達(dá)值就最高),如下所示:
為了方便理解鹦肿,我隨手用Excel做了一下簡(jiǎn)陋的熱圖矗烛,如下所示:
可以看出,基因4在樣本1中的表達(dá)量很高箩溃。不過(guò)按照第一種展示數(shù)據(jù)的方式瞭吃,無(wú)法比較不同基因的表達(dá)水平差異,例如涣旨,在上圖的黑色方框中歪架,基因4顯紅色,這只能表達(dá)霹陡,樣本1中基因4的表達(dá)水平比其它的樣本高和蚪,不能說(shuō)明樣本1中的其它基因(例如基因3)的水平也比其它樣本高止状,這種數(shù)據(jù)的展示方式只用于研究同一個(gè)基因在不同的樣本中的表達(dá)水平差異。
第二處修飾后的展示方式就是根據(jù)這些基因表達(dá)的相似性攒霹,把它們放到一塊怯疤,如下所示:
再看下面的圖形:
從上到下,我們可以看到這些基因的表達(dá)的模式催束。
在第一個(gè)紫紅色的方框中集峦,我們可以看到,這些基因在第2個(gè)樣本中表達(dá)水平最高抠刺,而在第4個(gè)樣本中表達(dá)水平最低塔淤。
在第二個(gè)黑色的方框中,我們可以看到速妖,這些基因在第1個(gè)樣本中表達(dá)水平最高高蜂,而在第4個(gè)樣本中表達(dá)水平最低。
在第三個(gè)橙色方框中中罕容,我們可以看到备恤,這些基因在第2個(gè)樣本中的表達(dá)水平最高,而在第3個(gè)棲中的表達(dá)水平最低锦秒。
根據(jù)不同基因表達(dá)模式的相似性進(jìn)行的“聚類”(clustering)并不是偶然的烘跺,而是通過(guò)一定的算法實(shí)現(xiàn)的,這些算法會(huì)將那些表達(dá)模式類似的基因放到一塊脂崔,如下所示:
如果不進(jìn)行聚類(clustering)滤淳,那么用熱圖展示出來(lái)就是下圖右邊的那個(gè)樣子,如下所示:
如果熱圖中既不進(jìn)行聚類(clustering)砌左,也不進(jìn)行縮放(scaling)脖咐,那么熱圖就變成了如下的這個(gè)樣子:
從圖上我們可以看到,紅色部分的這個(gè)基因表達(dá)水平最高(比其他的基因表達(dá)高太多了)汇歹,可以把它視為一個(gè)異常值屁擅。
熱圖復(fù)雜案例
現(xiàn)在我們?cè)倏匆幌卤容^復(fù)雜的熱圖案例,如下所示:
從這個(gè)圖的標(biāo)題上我們可以看出产弹,這個(gè)貌似是一個(gè)結(jié)腸的單細(xì)胞測(cè)序數(shù)據(jù)的熱圖派歌。這個(gè)熱圖的數(shù)據(jù)經(jīng)過(guò)了縮放(scaled)與聚類(clustered),它的縮放是全局的痰哨,因此胶果,這一組數(shù)據(jù)中并沒(méi)有異常值,這里的縮放要與前面熱圖的縮放區(qū)分開(kāi)來(lái)斤斧,前面的前面是按照某個(gè)基因進(jìn)行縮放的早抠,也就是把同一行的數(shù)據(jù)當(dāng)成整體,進(jìn)行了縮放(也就是z轉(zhuǎn)換)撬讽,而這個(gè)數(shù)據(jù)是把所有的數(shù)據(jù)當(dāng)作整體蕊连,進(jìn)行縮放悬垃。
再看聚類。這個(gè)熱圖的聚類是按照列(column甘苍,也就是樣本)和行(row尝蠕,也就是基因)同時(shí)進(jìn)行的聚類,如下所示:
在上圖中载庭,我們可以看到趟佃,縱矩形的部分表示基因表達(dá)模式相似的樣本聚在了一起,橫矩形表示的是昧捷,表達(dá)模式相似的基因聚集在了一起。它們的交集表示罐寨,這些樣本的基因表達(dá)模式相似靡挥,以及有哪些基因相似。
如果不進(jìn)行聚類鸯绿,也不進(jìn)行數(shù)據(jù)縮放(scaling)跋破,那么下圖的右上表示的就是不聚類的熱圖,右下表示的就是即不進(jìn)行聚類瓶蝴,又不進(jìn)行縮放的熱圖毒返,如下所示:
此時(shí)我們?cè)倩氐角懊娴哪莻€(gè)簡(jiǎn)單熱圖案例中來(lái),我們?cè)囅胍粋€(gè)問(wèn)題舷手,在那張熱圖中拧簸,如果我們對(duì)所有的基因進(jìn)行整體的縮放(global scaling),而非單個(gè)基因的縮放男窟,那么這個(gè)熱圖會(huì)怎么樣盆赤,我們看下圖:
經(jīng)過(guò)全局縮放(global scaling)后,得到下面的圖形歉眷,如下所示:
此時(shí)牺六,我們會(huì)發(fā)現(xiàn),這些聚類的結(jié)果就會(huì)發(fā)生了改變汗捡,并且新生成的圖形中出面了異常高的熱圖淑际,它是異常值,這個(gè)異常值會(huì)導(dǎo)致熱圖整體上出來(lái)嚴(yán)重的偏離扇住,并且不容易觀察基因的變化春缕,如下所示:
因此,我們從上面的結(jié)果可以知道艘蹋,縮放(scaling)會(huì)影響兩個(gè)結(jié)果淡溯,第一,不同表達(dá)水平基因的顏色簿训,這會(huì)影響你比較不同樣本中的相同基因的表達(dá)水平咱娶,第二米间,影響聚類(clustering),如下所示:
如何對(duì)數(shù)據(jù)進(jìn)行縮放(scale)
此時(shí)膘侮,我們?cè)倩氐綌?shù)據(jù)的縮放這個(gè)話題上屈糊,無(wú)論你對(duì)相同基因在不同樣本中進(jìn)行縮放,還是對(duì)全局的基因進(jìn)行縮放琼了,最常用的方法就是Z值縮放法(Z-Score Scaling)逻锐,如下所示:
接著,我們具體看一下這種方法是如何實(shí)現(xiàn)數(shù)據(jù)的縮放的雕薪。在下圖中昧诱,我們看到一個(gè)數(shù)軸上分布了幾個(gè)樣本的reads數(shù),如下所示:
第一步:計(jì)算其均值(均值為16.5)所袁,如下所示:
第二步:每個(gè)樣本的數(shù)值減去均值盏档,此時(shí),如果這個(gè)數(shù)值大燥爷,就表示此樣本的某基因轉(zhuǎn)錄水平高蜈亩;如果數(shù)值小,就表示此樣本的某基因轉(zhuǎn)錄水平低前翎,如下所示:
第三步:計(jì)算標(biāo)準(zhǔn)差(標(biāo)準(zhǔn)差為6.28)稚配;
第四步:將第2步中的數(shù)值除以標(biāo)準(zhǔn)差,如下所示:
經(jīng)過(guò)上述的處理后港华,無(wú)論原始數(shù)據(jù)的變異程度如何道川,這些數(shù)據(jù)的范圍最終會(huì)縮小,之所以這樣處理立宜,就是因?yàn)槿绻紨?shù)據(jù)之間差異過(guò)大愤惰,那么不同基因表達(dá)水平就會(huì)變化程度(more subtle)更高的色度(shade)來(lái)表示,經(jīng)過(guò)這樣的處理赘理,用較小程度的色度(shade)就能表示出基因水平的差異宦言,方便觀察,如下所示:
此時(shí)商模,我們可能會(huì)遇到這樣的一種情況奠旺,例如,如果數(shù)據(jù)中出現(xiàn)異常值時(shí)施流,數(shù)據(jù)會(huì)怎么樣响疚,就像下面的這個(gè)樣子:
此時(shí)如果進(jìn)行Z轉(zhuǎn)換的話,標(biāo)準(zhǔn)差會(huì)很大瞪醋,也就是Z值的分子會(huì)很大忿晕,最終得到的值會(huì)有一部分集中在0附近,只能用很少的色度來(lái)進(jìn)行區(qū)分银受,如下所示:
例如践盼,我們?nèi)绻捎萌挚s放來(lái)處理原始數(shù)據(jù)中鸦采,在第一個(gè)案例中,我們就會(huì)得到下面這樣的圖形咕幻,其中有一個(gè)基因明顯表達(dá)水平非常高渔伯,使得其它的基因差異很難看出來(lái),如下所示:
如何聚類
原始數(shù)據(jù)經(jīng)過(guò)縮放后(scaling)肄程,此時(shí)就可以進(jìn)行聚類了锣吼,聚類有2種方法,分別是層次聚類(hierarchical clustering)和K-均值(K-means)聚類蓝厌,我們先講層次聚類(hierarchical clustering)玄叠,如下所示:
層次聚類(hierarchical clustering)
先看一個(gè)簡(jiǎn)單的案例,在這個(gè)案例中拓提,有3個(gè)樣本读恃,每個(gè)樣本4個(gè)基因,如下所示:
這種聚類方法的思路是這樣的:
第一步崎苗,計(jì)算出哪些基因與基因1最為接近,基因2明顯與基因1表達(dá)模式不同舀寓,基因3與基因1的表達(dá)形式比較類似胆数,基因4與基因1的表達(dá)模式也比較類似,但是互墓,在這幾個(gè)基因中必尼,與基因1表達(dá)模式最接近的還是基因3,如下所示:
第二步篡撵,計(jì)算出哪些基因的表達(dá)模式與基因2最為接近(然后是基因3判莉,基因4),經(jīng)計(jì)算發(fā)現(xiàn)育谬,基因4與基因2的表達(dá)模式最相似券盅,如下所示:
第三步,我們?cè)谇懊嬲业交?和基因3的表達(dá)模式相似膛檀,基因2和基因4的表達(dá)模式相似锰镀,但是,基因1和基因3的相似程度要比基因2和基因4的相似程度高咖刃,我們把前面的組合(基因1和基因3)放到一個(gè)簇(cluster)中泳炉,如下所示:
第四步:此時(shí)再回到第一步,把基因1和基因3構(gòu)成的簇(Cluster # 1)當(dāng)作一個(gè)基因嚎杨,然后再按照第二步花鹅,第三步來(lái)計(jì)算,經(jīng)計(jì)算枫浙,此時(shí)刨肃,基因2和基因4最相似古拴,把它們?cè)俜诺揭粋€(gè)簇中(Cluster #2),如下所示:
通常情況下之景,層次聚類(Hierarchical Clustering)通常會(huì)用一個(gè)樹(shù)形圖(dendrogram)連接起來(lái)斤富,用于表明聚類成員之間的相似性和聚類次序,如下所示:
在右側(cè)的樹(shù)形中锻狗,我們可以發(fā)現(xiàn)满力,Cluster #1
是最先形成的聚類,它們的相似性最高轻纪,如下所示:
Cluster #2
是第二個(gè)形成的聚類油额,它們的相似性次高,如下所示:
而第三個(gè)聚類Cluster #3
則包含了所有的基因刻帚,它是最后形成的潦嘶,如下所示:
層次聚類的原理
前面我們提到過(guò),層次聚類的第一步就是計(jì)算兩組基因的相似性崇众,此時(shí)我們?cè)敿?xì)介紹一下如何進(jìn)行計(jì)算掂僵。
在計(jì)算相似性方面并沒(méi)有一個(gè)統(tǒng)計(jì)的標(biāo)準(zhǔn),但有一些常用的手段顷歌。第一種計(jì)算相似性的方法就是歐氏距離(Euclidian distance)锰蓬,如下所示:
為了簡(jiǎn)單地說(shuō)明歐氏距離(Euclidian distance),我們以最簡(jiǎn)單的例子來(lái)說(shuō)明眯漩,在這個(gè)例子中芹扭,有2個(gè)樣本,每個(gè)樣本有2個(gè)基因赦抖,然后兩個(gè)樣本的相同基因的差值的平方相加舱卡,并開(kāi)平方,得到的數(shù)值就是歐氏距離队萤,如下所示:
除了歐氏距離可以計(jì)算相似性外轮锥,還可以使用曼哈頓距離(Manhattan distance)和坎貝拉距離(Canberra distance)來(lái)計(jì)算相似性,其中曼哈頓距離只是不同樣本之間相同基因差值的絕對(duì)值之和要尔,如下所示:
我們看一下用不同的方法計(jì)算相似性的區(qū)別交胚,下圖的左側(cè)圖使用的歐氏距離(Euclidian distance)來(lái)得到的熱圖,右圖使用的是曼哈頓距離(Manhattan distance)得到的熱圖盈电,如下所示:
從圖上來(lái)看蝴簇,使用這兩種不同的相似性計(jì)算方法得到的熱圖略有差異,具體要使用哪種方法來(lái)計(jì)算相似性匆帚,并沒(méi)有一個(gè)統(tǒng)計(jì)的標(biāo)準(zhǔn)熬词,它們也沒(méi)有什么生物學(xué)意義。
此時(shí),我們?cè)倩氐皆瓉?lái)的案例中來(lái)互拾,在前面部分中我們提到歪今,基因1和基因3的相似程度最高,把它們都放到一個(gè)簇(Cluster #1)中颜矿,此時(shí)寄猩,我們?nèi)绾斡?jì)算Cluster #1和基因2,基因4的相似性呢骑疆?有幾種方法田篇。
其中最簡(jiǎn)單的一種方法就是求出Cluster #1中的兩個(gè)基因的平均值,然后進(jìn)行計(jì)算箍铭。但還有其它的方法泊柬,這些方法同樣會(huì)影響聚類,如下所示:
為了簡(jiǎn)單地說(shuō)明簇(Cluster #1)與其它基因相似性計(jì)算的問(wèn)題诈火,我們假設(shè)有一批數(shù)據(jù)兽赁,分布在X-Y軸上,此時(shí)冷守,我們已經(jīng)生成了2個(gè)簇刀崖,如下所示:
此時(shí),我們僅需要計(jì)算最后一個(gè)點(diǎn)屬于哪個(gè)簇拍摇,如下所示:
此時(shí)我們可以采用以下這些方法進(jìn)行計(jì)算:
第一亮钦,計(jì)算這個(gè)點(diǎn)與兩個(gè)簇平均值的距離(centroid),如下所示:
第二授翻,計(jì)算這個(gè)點(diǎn)到兩個(gè)簇最近的點(diǎn)的距離(single-linkage)或悲,如下所示:
第三孙咪,計(jì)算這個(gè)點(diǎn)到兩個(gè)簇中最遠(yuǎn)的點(diǎn)的距離(complete-linkage)堪唐,如下所示:
我們用前面的單細(xì)胞測(cè)序的熱圖來(lái)說(shuō)明一下這三種方法,從左到右分別是:某點(diǎn)到某簇最遠(yuǎn)點(diǎn)的距離(在R中默認(rèn)的就是這個(gè)選項(xiàng))翎蹈,某點(diǎn)到某簇均值的距離淮菠,某點(diǎn)到某簇最近的點(diǎn)的距離,如下所示:
K-means聚類
什么是K-means
先看一個(gè)場(chǎng)景荤堪,例如我們手中有這樣的一批數(shù)據(jù)合陵,把它們繪制到一個(gè)數(shù)軸上,此時(shí)你的目的就是把它們分成3個(gè)簇(cluster)澄阳,這三個(gè)數(shù)據(jù)或許是來(lái)源于三種不同的細(xì)胞或都是三種不同的腫瘤拥知,如下所示:
我們僅從肉眼觀察,就知道這一批數(shù)據(jù)明顯可以分成3個(gè)簇碎赢,但是低剔,如果我們不用肉眼來(lái)觀察,用計(jì)算機(jī)來(lái)計(jì)算,如何得到這3個(gè)簇呢襟齿?此時(shí)就需要用到一種算法姻锁,即K-means聚類,如下所示:
K-means的基本思想
此時(shí)猜欺,我們先了解一下K-means聚類的基本思想位隶。
第一步:選擇你要聚類的個(gè)數(shù),K-means聚類中的這個(gè)K
就是你要聚類的數(shù)目的意思开皿,此時(shí)涧黄,你們選擇K=3
,這也就是說(shuō)副瀑,我們想把這些數(shù)據(jù)取成3個(gè)簇(cluster)弓熏,對(duì)這個(gè)K
值如何選擇,我們后文會(huì)提到糠睡,如下所示:
第二步挽鞠,隨機(jī)選擇3個(gè)不同的數(shù)據(jù)點(diǎn)當(dāng)成3個(gè)簇,如下所示:
第三步:計(jì)算第1個(gè)點(diǎn)到這三個(gè)簇的距離狈孔,先計(jì)算第1個(gè)點(diǎn)到藍(lán)簇的距離信认,如下所示:
接著,計(jì)算第1個(gè)點(diǎn)到綠簇的距離均抽,如下所示:
最后嫁赏,計(jì)算第1個(gè)點(diǎn)到橘黃簇的距離,如下所示:
第四步:將第1個(gè)點(diǎn)歸于離它最近的簇油挥,在這個(gè)案例中潦蝇,第1個(gè)點(diǎn)就屬于藍(lán)簇,如下所示:
接著深寥,重復(fù)前面的步驟攘乒,只是這次計(jì)算的第2個(gè)點(diǎn),第2個(gè)點(diǎn)最終的計(jì)算結(jié)果它屬于綠簇惋鹅,如下所示:
再計(jì)算第3個(gè)點(diǎn)则酝,它屬于橘黃簇,如下所示:
經(jīng)過(guò)最終計(jì)算闰集,第3個(gè)點(diǎn)到最后的點(diǎn)都屬于橘黃簇沽讹,如下所示:
此時(shí),所有的點(diǎn)都進(jìn)行了聚類武鲁,如下所示:
第五步:計(jì)算每個(gè)簇的均值爽雄,如下所示:
此時(shí),我們還按照前面的方法沐鼠,計(jì)算每個(gè)點(diǎn)到這三個(gè)簇的均值的距離挚瘟,如下所示:
最終計(jì)算結(jié)果如下所示:
經(jīng)過(guò)最終的計(jì)算,我們發(fā)現(xiàn),這些聚類結(jié)果并沒(méi)有發(fā)生改變刽沾,如下所示:
也就是說(shuō)本慕,K-means的聚類結(jié)果似乎比我們?nèi)庋圻M(jìn)行的聚類的結(jié)果還要差,如下所示:
此時(shí)侧漓,我們需要對(duì)聚類的結(jié)果進(jìn)行評(píng)估锅尘,其方法就是計(jì)算每個(gè)簇的變異,如下所示:
由于K-means的聚類過(guò)程并不能“看”到最佳的聚類布蔗,只能追蹤這些簇與這些簇的總變異藤违,然后通過(guò)不斷更改起始的數(shù)據(jù)點(diǎn)進(jìn)行迭代。
此時(shí)我們回到起點(diǎn)纵揍,再將隨機(jī)選擇3個(gè)初始數(shù)據(jù)點(diǎn)作為初始的簇蟋滴,按照前面同樣的自救茂卦,計(jì)算剩余的點(diǎn)到這三個(gè)簇的距離恩掷,計(jì)算每個(gè)簇的均值帚桩,然后基于新的均值進(jìn)行聚類,直接這些簇不再改變?yōu)橹拱杀ⅲ缦滤荆?/p>
計(jì)算的結(jié)果如下所示骨杂,此時(shí)這些數(shù)據(jù)已經(jīng)進(jìn)行了聚類,再計(jì)算這三個(gè)簇的變異雄卷,如下所示:
這一輪迭代結(jié)束搓蚪,然后再來(lái)一輪,如下所示:
我們把這三次的聚類結(jié)果放一塊兒丁鹉,我們可以發(fā)現(xiàn)妒潭,第二次的聚類結(jié)果最好,如下所示:
但是我們并不清楚這個(gè)結(jié)果是不是所有可能的聚類結(jié)果中最好的(總變異最写铡)雳灾,因此我們需要進(jìn)行更多次的聚類,然后才能下結(jié)論拂盯。
此時(shí)我們提出一個(gè)問(wèn)題佑女,K
值應(yīng)該如何選记靡?在這個(gè)案例中谈竿,明顯可以知道K值為3,但是摸吠,有的時(shí)候空凸,這個(gè)K值并不像本案例中這么明顯,如下所示:
其中一種確定K值的方法就是不斷地使用不同的K值寸痢,如下所示:
我們先使用K=1這個(gè)數(shù)值呀洲,通過(guò)計(jì)算總的變異程度,明顯這個(gè)結(jié)果不行,如下所示:
再使用K=2道逗,此時(shí)我們計(jì)算一下總變異兵罢,這個(gè)結(jié)果比K=1的時(shí)候要好一些,如下所示:
接著滓窍,我們使用K=3卖词,通過(guò)計(jì)算它的總變異,我們發(fā)現(xiàn)K=3的結(jié)果要比K=2更好吏夯,因?yàn)樗目傋儺惛痛蓑冢缦滤荆?/p>
再繼續(xù),使K=4噪生,我們發(fā)現(xiàn)裆赵,K=4的總變異比K=3的總變異還要小,如下所示:
從前面的這些計(jì)算結(jié)果來(lái)看跺嗽,我們能總結(jié)出一個(gè)規(guī)律战授,每當(dāng)我們添加一個(gè)新的簇時(shí),總變異就會(huì)降低桨嫁,當(dāng)簇的數(shù)目等于總的數(shù)據(jù)點(diǎn)的數(shù)目時(shí)陈醒,總變異就是0,如下所示:
如果我們把K值與變異降低的程度繪制成曲線瞧甩,那么就能得到下面的這條曲線:
從這個(gè)曲線上我們可以看到钉跷,當(dāng)K=3時(shí),它之后的K值每增加1肚逸,總變異的降低幅度就沒(méi)有前面的快爷辙,我們把K=3這個(gè)點(diǎn)稱為拐點(diǎn)(elbow plot)。
K-mean聚類與層次聚類的區(qū)別
此時(shí)朦促,我們?cè)偬岢鲆粋€(gè)問(wèn)題:K-mean聚類與層次聚類有什么區(qū)別膝晾?
K-means聚類會(huì)把數(shù)據(jù)聚成你所期望的簇的數(shù)目,而層次聚類則中介告訴你务冕,哪兩個(gè)數(shù)據(jù)是最相似的血当,如下所示:
二維坐標(biāo)的K-means
如果我們的數(shù)據(jù)無(wú)法繪制到一條數(shù)軸上時(shí),如何進(jìn)行K-means聚類呢禀忆,如下所示:
這種情況下臊旭,它的聚類原理跟一維數(shù)軸的原理一樣,第一步就是隨機(jī)找到三個(gè)點(diǎn)(前提是你想聚成3個(gè)簇)箩退,如下所示:
然后离熏,計(jì)算不同的點(diǎn)到這三個(gè)簇的歐氏距離(Euclidean distance),在二維坐標(biāo)中戴涝,計(jì)算這個(gè)歐氏距離就是采用勾股定理滋戳,如下所示:
接著钻蔑,就像前面講的那樣,距離最近的就屬于某個(gè)簇奸鸯,如下所示:
第一次的聚類結(jié)果如下所示:
再接著咪笑,我們會(huì)像前面是找到的那樣,計(jì)算出每個(gè)族的中心點(diǎn)(也就是均值)娄涩,然后再聚類蒲肋,如下所示:
最后,得到比較滿意的聚類圖钝满,如下所示:
熱圖的K-means
如果我們的數(shù)據(jù)是熱圖兜粘,那么如何進(jìn)行K-means聚類呢?
為了方便描述弯蚜,我們就以下面的案例說(shuō)明一下孔轴,兩個(gè)樣本(sample 1和sample 2),分別有4個(gè)基因碎捺,現(xiàn)在把這兩個(gè)樣本分別命令為X路鹰,Y,把它們的基因放到二維坐標(biāo)軸上收厨,如下所示:
然后像前面那樣進(jìn)行聚類晋柱,如下所示:
事實(shí)上,在實(shí)際的計(jì)算過(guò)程中诵叁,我們并不需要把數(shù)據(jù)投射到二維坐標(biāo)上雁竞,只用計(jì)算不同樣本之間的距離即可,例如歐氏距離拧额,如下所示:
R的kmeans()函數(shù)備注
在R中碑诉,進(jìn)行K-menas聚類的函數(shù)是kmeans()
,它有一些注意事項(xiàng)侥锦。
- 此函數(shù)會(huì)對(duì)每個(gè)距離加上權(quán)重进栽,因此那些大簇(large clusters)的權(quán)重要略高于小簇(small clusters)的權(quán)重。
- 默認(rèn)情況下恭垦,此函數(shù)只有一組原始的簇快毛,如果你要使用多個(gè)不同的起始數(shù)據(jù)點(diǎn),那么你需要設(shè)定參數(shù)
nclust=25
或者是25左右的數(shù)字番挺,例如(kmans(data, k=3, nclust=25)
)唠帝。
如下所示: