自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

究竟應(yīng)該聚多少類?聚類分析

大數(shù)據(jù) 數(shù)據(jù)分析
聚類分析(Cluster analysis)是一組將研究對象分為相對同質(zhì)的群組(Clusters)的統(tǒng)計分析技術(shù)。 聚類分析區(qū)別于分類分析(Classification analysis) ,前者是無監(jiān)督學(xué)習(xí),而后者是有監(jiān)督學(xué)習(xí)。本文通過一個實例對幾種常見確定聚類數(shù)目的方法進(jìn)行介紹。

分析(Classification analysis) ,前者是無監(jiān)督學(xué)習(xí),而后者是有監(jiān)督學(xué)習(xí)。

聚類分析(Cluster analysis)是一組將研究對象分為相對同質(zhì)的群組(Clusters)的統(tǒng)計分析技術(shù)。 聚類分析區(qū)別于分類分析(Classification analysis) ,前者是無監(jiān)督學(xué)習(xí),而后者是有監(jiān)督學(xué)習(xí)。

無監(jiān)督學(xué)習(xí)也就是預(yù)先沒有類別的標(biāo)準(zhǔn),K-means方法是最常見的聚類方法之一,在R語言的kmeans()函數(shù)中,聚類數(shù)目的參數(shù)centers是必須人為輸入的。那么究竟如何確定聚類的數(shù)目呢?這里引用一句話(參考文獻(xiàn)1)"While there are no best solutions for the problem of determining the number of clusters to extract...",這里的潛臺詞是目前有很多方法,只是不知道選哪種。Anyway,大家知道有哪些方法嗎?

下面通過一個實例對幾種常見確定聚類數(shù)目的方法進(jìn)行介紹。

數(shù)據(jù)

收集了96例患者的兩個生化指標(biāo)(a、b),研究者擬根據(jù)a、b兩個指標(biāo)將96例患者分類若干組,進(jìn)而對不同的組深入分析,制定不同的治療方案。a、b兩個指標(biāo)的關(guān)系如下圖(下面是模擬數(shù)據(jù),實際情況通常沒有那么明顯的距離)。那么,我們該聚多少類呢?

 

  1. set.seed(2018)  
  2. n=100;g=6  
  3. mydata=data.frame(a=unlist(lapply(1:g,function(i) rnorm(n/g, runif(1)*i^2))), b=unlist(lapply(1:g,function(i) rnorm(n/g, runif(1)*i^2)))) 
  4. mydata=scale(mydata) 

 

1. 組內(nèi)平方和

該方法是畫出不同聚類數(shù)目(通常是1到10)對應(yīng)的組內(nèi)平方和,以組內(nèi)平方和基本不再明顯變化為標(biāo)準(zhǔn)(較為主觀),從而確定聚類的數(shù)目。如下圖,我們可以看到組內(nèi)平方和在聚類數(shù)目為5之后,基本不再變化,所以可以確定聚類數(shù)目為5。

 

  1. ss=(nrow(mydata)-1)*sum(apply(mydata,2,var))  
  2. for(i in 2:10){ss[i]=kmeans(mydata,centers=i)$tot.withinss}  
  3. plot(1:10,ss,type="b",xlab="聚類數(shù)目",ylab="組內(nèi)平方和"

 

2. Medoids周圍分類法

這個方法的操作比較簡單,顧名思義就是通過partitioning around medoids來估計最優(yōu)的聚類數(shù)目。從下圖的橢圓數(shù)目可以看出聚類數(shù)目應(yīng)該為5。

 

  1. library(fpc)  
  2. library(cluster)  
  3. fit=pamk(mydata)  
  4. plot(pam(mydata,fit$nc)) 

 

3. Calinsky準(zhǔn)則

Calinsky是一個定量的評價指標(biāo),該值越大越好。下圖的右邊可以看出Calinsky較大值對應(yīng)的聚類數(shù)目為5。

 

  1. library(vegan)  
  2. fit=cascadeKM(mydata,inf.gr=1,sup.gr=10,iter=1000)  
  3. plot(fit,sortg=TRUE,grpmts.plot=TRUE

 

4. BIC

沒錯,此處的BIC就是貝葉斯信息準(zhǔn)則(Bayesian Information Criterion),但與其用于模型的擬合判斷(越小越好)不同的是,這里用于判斷聚類數(shù)目的判斷標(biāo)準(zhǔn)為越大越好。如下圖,右下角的圖例表示各種不同的模型,從折線可以看出,所有的模型都在聚類數(shù)目為5時,BIC取得較大。

 

  1. library(mclust)  
  2. fit=Mclust(mydata)  
  3. plot(fit) 

 

5. AP法

AP表示Affinity propagation的意思,旨在通過Affinity propagation的方法估計最優(yōu)的聚類數(shù)目。如下圖,左側(cè)和上側(cè)的彩色帶的顏色種類表示聚類的數(shù)目,為5。

 

  1. library(apcluster)  
  2. fit=apcluster(negDistMat(r=2),mydata)  
  3. heatmap(fit) 

 

6. 多目標(biāo)決策

NbClust函數(shù)提供30種的判斷指標(biāo),我們可以用類似投票的原理,看看通過30種指標(biāo)選出的最優(yōu)聚類數(shù)目。如下圖,最后一句表示,聚類數(shù)目應(yīng)該取3,這個結(jié)果與前述所有結(jié)果不一致,根據(jù)原始數(shù)據(jù)的情況,這個方法不太可靠,建議選擇前述的方法。

 

  1. library(NbClust)  
  2. fit=NbClust(mydata,min.nc=2,max.nc=10,method="kmeans",index="alllong"

 

參考文獻(xiàn)

https://www.statmethods.net/advstats/cluster.html

https://stackoverflow.com/questions/15376075/cluster-analysis-in-r-determine-the-optimal-number-of-clusters

責(zé)任編輯:未麗燕 來源: 網(wǎng)絡(luò)大數(shù)據(jù)
相關(guān)推薦

2015-08-19 10:13:53

DaasVDI

2020-07-23 09:15:25

Python機器學(xué)習(xí)聚類分析

2024-08-20 08:22:21

2011-08-25 12:51:02

2023-05-10 08:00:00

聚類分析數(shù)據(jù)分析聚類算法

2018-06-06 14:17:44

聚類分析算法大數(shù)據(jù)

2016-05-06 08:08:29

2009-10-26 09:26:42

Windows7多核評Windows 7多核

2021-10-18 11:55:10

SMTCPU線程

2020-03-12 09:06:05

數(shù)據(jù)挖掘聚類分析學(xué)習(xí)

2017-07-10 16:23:29

線程CPU單核

2020-05-13 15:57:59

聚類分析算法監(jiān)督學(xué)習(xí)

2023-10-31 09:00:00

2014-07-29 15:20:15

2021-10-10 18:29:27

URL編碼Go

2018-10-18 09:41:41

2020-07-09 15:26:18

Python聚類算法語言

2024-10-18 17:14:13

2025-03-31 08:28:24

大型語言模型LLMDeepSeek

2017-05-15 11:10:10

大數(shù)據(jù)聚類算法
點贊
收藏

51CTO技術(shù)棧公眾號