一箕戳、k-means
k-means算法并沒(méi)有顯示的學(xué)習(xí)過(guò)程,而且很簡(jiǎn)單国撵,給定一個(gè)訓(xùn)練數(shù)據(jù)集陵吸,其中的實(shí)例類別已定,分類時(shí)介牙,對(duì)新的輸入實(shí)例壮虫,根據(jù)其k個(gè)最近鄰的訓(xùn)練實(shí)例的類別,通過(guò)多數(shù)表決等方式進(jìn)行預(yù)測(cè)环础。k-means實(shí)際上利用訓(xùn)練數(shù)據(jù)集對(duì)特征向量空間進(jìn)行劃分囚似,并作為其對(duì)分類的“模型”。
k-means主要是在對(duì)k值的選擇线得,距離的度量以及分類決策規(guī)則的調(diào)控饶唤。
K-means方法尋找的是球形或超球面形類,所以并不適用以下幾種類型的分類:
注意不要混淆K-近鄰算法和K均值聚類贯钩。 K-近鄰算法是一種分類算法募狂,也是監(jiān)督學(xué)習(xí)的一個(gè)子集。 K-means是一種聚類算法角雷,也是非監(jiān)督學(xué)習(xí)的一個(gè)子集熬尺。
那么就引入了其他的聚類方法:
二、層次聚類Hierarchical Clustering
部分內(nèi)容出自這里
層次聚類能讓人直觀的了解到類之間的關(guān)系谓罗。
層次聚類( Hierarchical Clustering )是聚類算法的一種粱哼,通過(guò)計(jì)算不同類別的相似度類創(chuàng)建一個(gè)有層次的嵌套的樹。
假設(shè)有 n 個(gè)待聚類的樣本檩咱,對(duì)于層次聚類算法揭措,它的步驟是:
- 步驟一:(初始化)將每個(gè)樣本都視為一個(gè)聚類;
- 步驟二:計(jì)算各個(gè)聚類之間的相似度刻蚯;
- 步驟三:尋找最近的兩個(gè)聚類绊含,將他們歸為一類;
- 步驟四:重復(fù)步驟二炊汹,步驟三躬充;直到所有樣本歸好類。
整個(gè)過(guò)程就是建立一棵樹,在建立的過(guò)程中充甚,可以在步驟四設(shè)置所需分類的類別個(gè)數(shù)以政,作為迭代的終止條件,畢竟都?xì)w為一類并不實(shí)際伴找。
sklearn的層次聚類
scipy畫系統(tǒng)樹圖
層次聚類的優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
- 一次性得到聚類樹盈蛮,后期再分類無(wú)需重新計(jì)算;
- 相似度規(guī)則容易定義技矮;
- 可以發(fā)現(xiàn)類別的層次關(guān)系抖誉,而且層次信息非常豐富;
- 可以將數(shù)據(jù)集的聚類結(jié)構(gòu)視覺(jué)化
缺點(diǎn):
- 計(jì)算復(fù)雜度高衰倦,不適合數(shù)據(jù)量大的袒炉;
- 算法很可能形成鏈狀。
- 對(duì)噪音和離群值很敏感
下面是層次聚類的幾種分類:
1樊零、單連接聚類法Single Linkage
又叫做 nearest-neighbor 我磁,就是取兩個(gè)類中距離最近的兩個(gè)樣本的距離作為這兩個(gè)集合的距離。這種計(jì)算方式容易造成一種叫做 Chaining 的效果淹接,兩個(gè) cluster 明明從“大局”上離得比較遠(yuǎn)十性,但是由于其中個(gè)別的點(diǎn)距離比較近就被合并了,并且這樣合并之后 Chaining 效應(yīng)會(huì)進(jìn)一步擴(kuò)大塑悼,最后會(huì)得到比較松散的 cluster 劲适。單連接是查看與聚類最近的點(diǎn),這可能導(dǎo)致形成各種形狀的聚類厢蒜。
跟上面的步驟一樣霞势,我們分解來(lái)看:
-
步驟一:(初始化)將每個(gè)樣本都視為一個(gè)聚類;
層次聚類1.png -
步驟二:計(jì)算各個(gè)聚類之間的相似度斑鸦,簡(jiǎn)單來(lái)說(shuō)就是計(jì)算任意兩點(diǎn)之間的距離
層次聚類2.png -
步驟三:尋找最近的兩個(gè)聚類愕贡,將他們歸為一類,就是選擇兩個(gè)類之間的最短距離巷屿,然后將這兩個(gè)點(diǎn)作為一個(gè)聚類固以,在旁邊就能畫出第一個(gè)節(jié)點(diǎn)的層次。
層次聚類3.png
-
步驟四:重復(fù)步驟二和步驟三嘱巾,當(dāng)不再有單獨(dú)的點(diǎn)作為一個(gè)類憨琳,而是要判斷多個(gè)類和多個(gè)類之間的距離的地方(這是個(gè)關(guān)鍵的地方,這一步是區(qū)分不同層次聚類的方法的標(biāo)準(zhǔn)旬昭,究竟是看單個(gè)類篙螟,還是類的平均距離等等。)單連接聚類法關(guān)乎的是兩類間的最短距離问拘,所以他衡量的依然是單個(gè)類與另一個(gè)類節(jié)點(diǎn)的最短距離遍略,以圖例來(lái)說(shuō)就是6和7是最短距離
層次聚類4.png
判斷好最短距離后惧所,將這個(gè)單獨(dú)節(jié)點(diǎn)再歸到整體聚類中,成為了一個(gè)新的類绪杏,這個(gè)新的類中含有另外一個(gè)類作為子類
層次聚類5.png
如此循環(huán)規(guī)整完畢后下愈,就生成了系統(tǒng)樹圖
層次聚類6.png
就像上面說(shuō)的,歸為一個(gè)類是不切實(shí)際的寞忿,所以我們會(huì)給層次聚類一個(gè)輸入驰唬,那就是有多少個(gè)類顶岸,通過(guò)有多少個(gè)類腔彰,來(lái)在系統(tǒng)樹圖上進(jìn)行切割劃分,比如我們分兩個(gè)聚類辖佣,那么如圖霹抛,截掉不必要的層次即可:
層次聚類7.png
所以 單連接聚類法 或廣義上的層次聚類法能幫我們得到一個(gè)類 或者樣本數(shù)量等等。
與k-means的區(qū)別
下圖是同樣的數(shù)據(jù)卷谈,使用k-means和使用單連接層次聚類法的區(qū)別
同樣我們通過(guò)單連接層次聚類能畫出系統(tǒng)樹圖來(lái)看數(shù)據(jù)的規(guī)律
雖然我們不一定能通過(guò)單連接聚類法得出最好的分類結(jié)果杯拐,但是系統(tǒng)樹圖還是能讓我們看出來(lái)規(guī)律,再使用其他的聚類方法來(lái)得到劃分世蔗。
2端逼、全連接聚類Complete Linkage
這個(gè)則完全是 Single Linkage 的反面極端,取兩個(gè)集合中距離最遠(yuǎn)的兩個(gè)點(diǎn)的距離作為兩個(gè)集合的距離污淋。全連接聚類法中 這樣的距離衡量方法使得產(chǎn)生的類比較緊湊顶滩,比單連接聚類法產(chǎn)生的類更緊湊 更好,但畢竟也是只考慮單個(gè)點(diǎn)的存在寸爆,其效果也是剛好相反的礁鲁,限制也很大。Single Linkage和Complete Linkage這兩種相似度的定義方法的共同問(wèn)題就是指考慮了某個(gè)有特點(diǎn)的數(shù)據(jù)赁豆,而沒(méi)有考慮類內(nèi)數(shù)據(jù)的整體特點(diǎn)仅醇。
來(lái)看具體步驟,它整體的步驟跟單連接聚類很接近魔种,只是在步驟四時(shí)有區(qū)分
- 步驟四:之前也有說(shuō)過(guò)析二,判斷距離方式的不同造就了不同的聚類方法,全連接聚類不再是判斷兩個(gè)類最近的距離节预,而是將一個(gè)類與另一個(gè)類中節(jié)點(diǎn)最遠(yuǎn)的那個(gè)點(diǎn)作為最小距離的判斷依據(jù)(全連接聚類法關(guān)注的是兩個(gè)類中兩點(diǎn)之間的最遠(yuǎn)距離作為最小距離)叶摄,有點(diǎn)繞,看圖:
層次聚類10.png
3心铃、組平均聚類average link
這種方法跟上兩個(gè)其實(shí)也很相似准谚,就是把兩個(gè)集合中的點(diǎn)兩兩的距離全部放在一起求均值,相對(duì)也能得到合適一點(diǎn)的結(jié)果(詳細(xì)來(lái)說(shuō)去扣,它計(jì)算的是任意兩類中任意兩點(diǎn)之間的距離柱衔,然后取平均值 即為兩類之間的距離樊破,然后判斷最小類距離作為聚類標(biāo)準(zhǔn))。有時(shí)異常點(diǎn)的存在會(huì)影響均值唆铐,平常人和富豪平均一下收入會(huì)被拉高是吧哲戚,因此這種計(jì)算方法的一個(gè)變種就是取兩兩距離的中位數(shù)。
上圖舉例兩類距離求平均艾岂。
4顺少、Ward's method離差平方和法
這種方法是 Scikit-learn 框架中一種預(yù)設(shè)的層次聚類法,它的目的是把合并類時(shí)的變量最小化王浴,離差平方和法計(jì)算兩類間的距離的方法是:先找出這兩個(gè)聚類總體的中心位置O脆炎,然后計(jì)算每個(gè)節(jié)點(diǎn)和中心位置的距離記做C,分別計(jì)算這些距離C的平方氓辣,并且相加記為delta秒裕,然后找出這兩個(gè)聚類分別的中心位置O1,O2钞啸,比如第一個(gè)類的中心是O1几蜻,那么第一類的節(jié)點(diǎn)與O1的距離記做A,那么之前求出來(lái)的平方和delta減去所有A的平方体斩,這樣循環(huán)得出來(lái)各個(gè)類之間的最小距離梭稚,將最小距離的類化為一類。這樣離差平方和法會(huì)最小化在每個(gè)合并步驟中的方差絮吵。
整體流程如圖:
離差平方和法和平均連接算法一般傾向于導(dǎo)致緊湊的聚類弧烤。
三、密度聚類Density-based Clustering
最主要的算法叫DBScan源武,指的是 具有噪聲的基于密度的聚類方法扼褪,對(duì)有噪聲的數(shù)據(jù)集具有很強(qiáng)的適用性,它并不要求我們具體說(shuō)明一系列的類粱栖,一般把一些密集分布的點(diǎn)聚類话浇,再將其他剩余的點(diǎn)標(biāo)記為噪音。
具體步驟如下:
步驟一:設(shè)置最小距離闹究,用來(lái)決定在某個(gè)范圍內(nèi)是否有其他點(diǎn)的這個(gè)范圍幔崖,設(shè)置點(diǎn)的個(gè)數(shù),即在這個(gè)范圍內(nèi)是否有這么多的點(diǎn)存在渣淤,如果存在設(shè)置為Core point赏寇,如果不存在設(shè)置為Noise point,如果不存在价认,但是在之前設(shè)置的core point范圍內(nèi)嗅定,那么就為border point。
步驟二:隨機(jī)找到一個(gè)數(shù)據(jù)點(diǎn)用踩,看是否有足夠數(shù)量的點(diǎn)在范圍內(nèi)
步驟三:重復(fù)步驟二
以下圖為例渠退,可以將數(shù)據(jù)點(diǎn)劃為下面幾種:
DBSCAN優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
- 不需要指明類數(shù)量忙迁,而是通過(guò)舉例和點(diǎn)數(shù)量來(lái)分的,即點(diǎn)的密度
- 能夠找到并分離各種形狀和大小的聚類碎乃,不局限于外形
- 能夠處理噪聲和離群值
缺點(diǎn): - 邊界點(diǎn)很有可能在多次運(yùn)行時(shí)不會(huì)被劃分為同一個(gè)類姊扔,因?yàn)檫\(yùn)行算法時(shí)的點(diǎn)是隨機(jī)選取的
- 在找到不同密度的聚類方面有一定的困難,畢竟只能設(shè)置一個(gè)密度(所以我們可以用 DBSCAN 的變體 HDBSCAN 即具有噪聲的基于密度的高層次空間聚類算法)
DBSCAN和Kmeans的對(duì)比
sklearn實(shí)現(xiàn)DBSCAN
因?yàn)榭煽貐?shù)不太多梅誓,那么有一些基本的規(guī)律在里面:
- 如果聚類后有很多小的聚類恰梢。超出了數(shù)據(jù)集的預(yù)期數(shù)量。
措施:增大 min_samples 和 ε - 很多點(diǎn)都屬于一個(gè)聚類
措施:降低 ε 并增大 min_samples - 大部分/所有數(shù)據(jù)點(diǎn)都標(biāo)記為噪點(diǎn)
措施:增大 ε 并降低 min_sample - 除了非常密集的區(qū)域之外梗掰,大部分/所有數(shù)據(jù)點(diǎn)都標(biāo)記為噪點(diǎn)(或者所有點(diǎn)都標(biāo)記為噪點(diǎn))嵌言。
措施:降低 min_samples 和 ε
四、高斯混合模型聚類Gaussian Mixture Model Clustering
部分參考這里和這里
統(tǒng)計(jì)的先修知識(shí)也可以先查看我以前寫過(guò)的文章愧怜。
GMM和k-means其實(shí)是十分相似的呀页,區(qū)別僅僅在于對(duì)GMM來(lái)說(shuō)妈拌,我們引入了概率拥坛,這種聚類算法假定每個(gè)類都遵循特定的統(tǒng)計(jì)分布,它大量使用概率和統(tǒng)計(jì)學(xué)知識(shí)來(lái)找出這些類尘分。說(shuō)到這里猜惋,我想先補(bǔ)充一點(diǎn)東西。統(tǒng)計(jì)學(xué)習(xí)的模型有兩種培愁,一種是概率模型著摔,一種是非概率模型。所謂概率模型定续,就是指我們要學(xué)習(xí)的模型的形式是P(Y|X)谍咆,這樣在分類的過(guò)程中,我們通過(guò)未知數(shù)據(jù)X可以獲得Y取值的一個(gè)概率分布私股,也就是訓(xùn)練后模型得到的輸出不是一個(gè)具體的值摹察,而是一系列值的概率(對(duì)應(yīng)于分類問(wèn)題來(lái)說(shuō),就是對(duì)應(yīng)于各個(gè)不同的類的概率)倡鲸,然后我們可以選取概率最大的那個(gè)類作為判決對(duì)象(算軟分類soft assignment)供嚎。而非概率模型,就是指我們學(xué)習(xí)的模型是一個(gè)決策函數(shù)Y=f(X)峭状,輸入數(shù)據(jù)X是多少就可以投影得到唯一的一個(gè)Y克滴,就是判決結(jié)果(算硬分類hard assignment)∮糯玻回到GMM劝赔,學(xué)習(xí)的過(guò)程就是訓(xùn)練出幾個(gè)概率分布,所謂混合高斯模型就是指對(duì)樣本的概率密度分布進(jìn)行估計(jì)胆敞,而估計(jì)的模型是幾個(gè)高斯模型加權(quán)之和(具體是幾個(gè)要在模型訓(xùn)練前建立好)着帽。每個(gè)高斯模型就代表了一個(gè)類(一個(gè)Cluster)罩阵。對(duì)樣本中的數(shù)據(jù)分別在幾個(gè)高斯模型上投影,就會(huì)分別得到在各個(gè)類上的概率启摄。然后我們可以選取概率最大的類所為判決結(jié)果稿壁。
如圖:
單高斯模型
要理解高斯混合模型,首先要知道最基本的高斯模型是什么歉备,下面是找到的定義:
高斯混合模型(GMM)
那么再回到高斯混合模型傅是,高斯混合模型可以看作是由 K 個(gè)單高斯模型組合而成的模型,這 K 個(gè)子模型是混合模型的隱變量(Hidden variable)蕾羊。一般來(lái)說(shuō)喧笔,一個(gè)混合模型可以使用任何概率分布,這里使用高斯混合模型是因?yàn)楦咚狗植季邆浜芎玫臄?shù)學(xué)性質(zhì)以及良好的計(jì)算性能龟再。
舉個(gè)不是特別穩(wěn)妥的例子书闸,比如我們現(xiàn)在有一組狗的樣本數(shù)據(jù),不同種類的狗利凑,體型浆劲、顏色、長(zhǎng)相各不相同哀澈,但都屬于狗這個(gè)種類牌借,此時(shí)單高斯模型可能不能很好的來(lái)描述這個(gè)分布,因?yàn)闃颖緮?shù)據(jù)分布并不是一個(gè)單一的橢圓割按,所以用混合高斯分布可以更好的描述這個(gè)問(wèn)題膨报,如下圖所示:
模型參數(shù)學(xué)習(xí)
對(duì)于單高斯模型,我們可以用最大似然法(Maximum likelihood)估算參數(shù)θ的值适荣,
這里我們假設(shè)了每個(gè)數(shù)據(jù)點(diǎn)都是獨(dú)立的(Independent)现柠,似然函數(shù)由概率密度函數(shù)(PDF)給出。
由于每個(gè)點(diǎn)發(fā)生的概率都很小弛矛,乘積會(huì)變得極其小够吩,不利于計(jì)算和觀察,因此通常我們用 Maximum Log-Likelihood 來(lái)計(jì)算(因?yàn)?Log 函數(shù)具備單調(diào)性汪诉,不會(huì)改變極值的位置废恋,同時(shí)在 0-1 之間輸入值很小的變化可以引起輸出值相對(duì)較大的變動(dòng)):
對(duì)于高斯混合模型,Log-Likelihood 函數(shù)是:
如何計(jì)算高斯混合模型的參數(shù)呢扒寄?這里我們無(wú)法像單高斯模型那樣使用最大似然法來(lái)求導(dǎo)求得使 likelihood 最大的參數(shù)鱼鼓,因?yàn)閷?duì)于每個(gè)觀測(cè)數(shù)據(jù)點(diǎn)來(lái)說(shuō),事先并不知道它是屬于哪個(gè)子分布的(hidden variable)该编,因此 log 里面還有求和迄本, K 個(gè)高斯模型的和不是一個(gè)高斯模型,對(duì)于每個(gè)子模型都有未知的α课竣,μ嘉赎,σ 置媳,直接求導(dǎo)無(wú)法計(jì)算。需要通過(guò)迭代的方法求解公条。
這就引出了下面這個(gè)算法EM算法:
期望最大化算法(EM算法)概述
先來(lái)看下整體的步驟的定義:
那么拆解下來(lái)詳細(xì)看:
第一步 初始化 K 個(gè)高斯分布
那么需要設(shè)置這幾個(gè)高斯分布的均值和標(biāo)準(zhǔn)差拇囊,最簡(jiǎn)單的方法是設(shè)定為數(shù)據(jù)集本身的均值和標(biāo)準(zhǔn)差,另一種方法是在數(shù)據(jù)集使用k-means靶橱,然后使用由 k means生成的聚類來(lái)初始化這K個(gè)高斯分布寥袭。
下面的例子假設(shè)為2個(gè)高斯分布,隨機(jī)初始化了兩個(gè)分布的均值和標(biāo)準(zhǔn)差:
第二步 假設(shè)參數(shù)已知关霸,去估計(jì)隱藏變量的期望传黄,即將數(shù)據(jù)軟聚類成我們初始化的兩個(gè)高斯,這一步稱為期望步驟 或 E-step
公式如圖队寇,中間N()是正態(tài)分布的概率密度函數(shù)膘掰,那么N(A)是指屬于A正太的概率密度是多少,同理N(B)是指屬于B正太的概率密度是多少佳遣,那么E(Z_1A)中识埋,1是指某一個(gè)點(diǎn),A是指屬于A正太分布苍日,Z是所謂的隱藏變量或潛在變量惭聂,那么通過(guò)公式和具體的點(diǎn)和正態(tài)分布的均值標(biāo)準(zhǔn)差,就能計(jì)算出所有點(diǎn)的期望值相恃。
第三步 利用E步求得的隱藏變量的期望,根據(jù)最大似然估計(jì)求得參數(shù)笨觅,然后新得到的參數(shù)值重新被用于E步拦耐,即基于軟聚類重新估計(jì)高斯,即求極大见剩,計(jì)算新一輪迭代的模型參數(shù)杀糯,這一步稱為最大化步驟 或 M-step
這一步就是用第二步的結(jié)果作為輸入,來(lái)生成新的均值和標(biāo)準(zhǔn)差苍苞。
那么新均值固翰,怎么出來(lái)的呢?是所有屬于這一類的點(diǎn)的加權(quán)平均值羹呵,權(quán)值就是上面的期望值骂际,如圖:
這樣就得出了聚類A的新均值。
接著計(jì)算新標(biāo)準(zhǔn)差的平方即方差冈欢,整體思路差不多歉铝,套公式(跟傳統(tǒng)計(jì)算方差的公式很像)帶進(jìn)去算屬于該類的所有點(diǎn)加權(quán)平均的方差即可,同樣E是之前第二步計(jì)算出的期望值:
第四步 我們?cè)u(píng)估對(duì)數(shù)似然來(lái)檢查收斂凑耻,如果它收斂太示,則認(rèn)為一切正常柠贤,返回結(jié)果,如果它不收斂 我們回到第二步直到它收斂
這個(gè)計(jì)算出來(lái)的結(jié)果越高类缤,我們?cè)侥艽_定生成的混合模型適合我們有的數(shù)據(jù)集臼勉,所以我們的目的就是通過(guò)改變合適的混合系數(shù)π,均值μ餐弱,方差σ^2坚俗,從而來(lái)最大化這個(gè)值,即達(dá)到最大值或每一步開始增加一小部分岸裙,這樣就停止運(yùn)算猖败,然后選擇那些計(jì)算好的模型作為高斯混合模型的組成部分。
上面例子是使用方差來(lái)降允,只能衡量一維數(shù)據(jù)的離散程度恩闻,對(duì)于二維數(shù)據(jù),就用到了協(xié)方差(最上面提過(guò)的那個(gè)式子)剧董,那么就不單單是方差的圓形范圍而可以是橢圓范圍了幢尚。
使用協(xié)方差來(lái)進(jìn)行運(yùn)算,上面那些數(shù)據(jù)點(diǎn)就可以分成這樣:
具體的公式與推導(dǎo)可以看這里.
sklearn實(shí)現(xiàn)GMM
GMM優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
- 為我們提供軟聚類翅楼,軟聚類是多個(gè)聚類的示例性隸屬度尉剩。
- 在聚類外觀方面很有靈活性
缺點(diǎn): - 對(duì)初始化值很敏感
- 有可能收斂到局部最優(yōu)
- 收斂速度慢
五、聚類分析過(guò)程
1毅臊、總體流程
第一步 特征選擇和特征提取
特征選擇是從一組候選特征中選擇特征理茎,我們不必對(duì)所有的數(shù)據(jù)集都使用聚類方法,畢竟運(yùn)算量非常大管嬉,進(jìn)行選擇并提取后皂林,留下與所需數(shù)據(jù)強(qiáng)相關(guān)的數(shù)據(jù)從而來(lái)進(jìn)行運(yùn)算即可,特征提取是對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換蚯撩,以生成新的有用特征(例如PCA)
sklearn實(shí)現(xiàn)特征縮放
>>> from sklearn.preprocessing import MinMaxScaler
>>>
>>> data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
>>> scaler = MinMaxScaler()
>>> print(scaler.fit(data))
MinMaxScaler(copy=True, feature_range=(0, 1))
>>> print(scaler.data_max_)
[ 1. 18.]
>>> print(scaler.transform(data))
[[0. 0. ]
[0.25 0.25]
[0.5 0.5 ]
[1. 1. ]]
>>> print(scaler.transform([[2, 2]]))
[[1.5 0. ]]
第二步 選擇一個(gè)聚類算法
根據(jù)需要做什么和數(shù)據(jù)的外觀础倍,試驗(yàn)?zāi)囊粋€(gè)算法可以給你更好的結(jié)果,沒(méi)有任何算法可以普遍地適用于我們可能面臨的問(wèn)題胎挎,在這一步沟启,我們必須選擇一個(gè)鄰近度度量,比如歐幾里得距離犹菇,余弦距離德迹,Pearson 相關(guān)系數(shù)等等。
第三步 聚類評(píng)價(jià)
評(píng)估一個(gè)聚類的效果如何项栏,除了在可能的情況下對(duì)聚類結(jié)果進(jìn)行可視化以外浦辨,我們還可以使用一些評(píng)分方法來(lái)評(píng)估,基于特定標(biāo)準(zhǔn)的聚類結(jié)構(gòu)的質(zhì)量,這些評(píng)分方法被稱為指數(shù)流酬,每一個(gè)指數(shù)稱為聚類有效性指標(biāo)
第四步 聚類結(jié)果解釋
可以從最終的聚類結(jié)構(gòu)中學(xué)習(xí)到什么樣的見(jiàn)解币厕,這一步驟需要領(lǐng)域?qū)I(yè)知識(shí)為集群提供標(biāo)簽,并試圖從中推斷出一些見(jiàn)解
2芽腾、詳解聚類評(píng)價(jià)
聚類評(píng)價(jià)是客觀和定量評(píng)估聚類結(jié)果的過(guò)程旦装,大多數(shù)評(píng)價(jià)指標(biāo)是通過(guò)緊湊性和可分性來(lái)定義的,緊湊性是衡量一個(gè)聚類中的元素彼此之間的距離摊滔,可分性是表示不同聚類之間的距離阴绢,聚類方法通常希望產(chǎn)生一個(gè)聚類中的元素彼此最相似,而聚類之間最不相同的聚類艰躺,聚類評(píng)價(jià)方法總共有三種:
2.1呻袭、外部指標(biāo)
處理有標(biāo)簽數(shù)據(jù)時(shí)使用的評(píng)分
調(diào)整蘭德系數(shù)定義
調(diào)整蘭德系數(shù)優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
- 對(duì)任意數(shù)量的聚類中心和樣本數(shù),隨機(jī)聚類的ARI都非常接近于0腺兴;
- 取值在[-1左电,1]之間,負(fù)數(shù)代表結(jié)果不好页响,越接近于1越好篓足;
- 可用于聚類算法之間的比較。
缺點(diǎn):
- 需要真實(shí)標(biāo)簽
舉例調(diào)整蘭德系數(shù)求解過(guò)程:
Sklearn實(shí)現(xiàn)
>>> from sklearn import metrics
>>> labels_true = [0, 0, 0, 1, 1, 1]
>>> labels_pred = [0, 0, 1, 1, 2, 2]
>>> metrics.adjusted_rand_score(labels_true, labels_pred)
0.24
2.2闰蚕、內(nèi)部指標(biāo)
大部分非監(jiān)督學(xué)習(xí)是沒(méi)有評(píng)分栈拖,所以一般用內(nèi)部指標(biāo)比較合理,內(nèi)部指標(biāo)僅使用數(shù)據(jù)來(lái)衡量數(shù)據(jù)和結(jié)構(gòu)之間的吻合度
輪廓系數(shù)定義
另外提示下:處理 DBSCAN 時(shí)没陡,不要使用輪廓系數(shù)涩哟,而使用DBCV評(píng)價(jià)指標(biāo)。
舉例輪廓系數(shù)求解過(guò)程:
Sklearn實(shí)現(xiàn)
>>> import numpy as np
>>> from sklearn.cluster import KMeans
>>> kmeans_model = KMeans(n_clusters=3, random_state=1).fit(X)
>>> labels = kmeans_model.labels_
>>> metrics.silhouette_score(X, labels, metric='euclidean')
...
0.55
...
2.3诗鸭、相對(duì)指標(biāo)
這個(gè)指標(biāo)表明兩個(gè)聚類結(jié)構(gòu)中哪一個(gè)在某種意義上更好染簇,基本上所有的外部指標(biāo)都能作為相對(duì)指標(biāo)
更多指標(biāo)詳解可以看這里