成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

究竟應該聚多少類?聚類分析

大數據 數據分析
聚類分析(Cluster analysis)是一組將研究對象分為相對同質的群組(Clusters)的統計分析技術。 聚類分析區別于分類分析(Classification analysis) ,前者是無監督學習,而后者是有監督學習。本文通過一個實例對幾種常見確定聚類數目的方法進行介紹。

分析(Classification analysis) ,前者是無監督學習,而后者是有監督學習。

聚類分析(Cluster analysis)是一組將研究對象分為相對同質的群組(Clusters)的統計分析技術。 聚類分析區別于分類分析(Classification analysis) ,前者是無監督學習,而后者是有監督學習。

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

下面通過一個實例對幾種常見確定聚類數目的方法進行介紹。

數據

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

 

  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. 組內平方和

該方法是畫出不同聚類數目(通常是1到10)對應的組內平方和,以組內平方和基本不再明顯變化為標準(較為主觀),從而確定聚類的數目。如下圖,我們可以看到組內平方和在聚類數目為5之后,基本不再變化,所以可以確定聚類數目為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="聚類數目",ylab="組內平方和"

 

2. Medoids周圍分類法

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

 

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

 

3. Calinsky準則

Calinsky是一個定量的評價指標,該值越大越好。下圖的右邊可以看出Calinsky較大值對應的聚類數目為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就是貝葉斯信息準則(Bayesian Information Criterion),但與其用于模型的擬合判斷(越小越好)不同的是,這里用于判斷聚類數目的判斷標準為越大越好。如下圖,右下角的圖例表示各種不同的模型,從折線可以看出,所有的模型都在聚類數目為5時,BIC取得較大。

 

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

 

5. AP法

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

 

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

 

6. 多目標決策

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

 

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

 

參考文獻

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

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

責任編輯:未麗燕 來源: 網絡大數據
相關推薦

2015-08-19 10:13:53

DaasVDI

2020-07-23 09:15:25

Python機器學習聚類分析

2011-08-25 12:51:02

2024-08-20 08:22:21

2023-05-10 08:00:00

聚類分析數據分析聚類算法

2016-05-06 08:08:29

2009-10-26 09:26:42

Windows7多核評Windows 7多核

2018-06-06 14:17:44

聚類分析算法大數據

2021-10-18 11:55:10

SMTCPU線程

2017-07-10 16:23:29

線程CPU單核

2020-03-12 09:06:05

數據挖掘聚類分析學習

2025-05-22 10:06:49

2014-07-29 15:20:15

2021-10-10 18:29:27

URL編碼Go

2018-10-18 09:41:41

2020-05-13 15:57:59

聚類分析算法監督學習

2023-10-31 09:00:00

2021-03-30 11:29:02

人工智能深度學習

2015-12-18 10:51:52

2020-07-09 15:26:18

Python聚類算法語言
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久99深爱久久99精品 | 日韩在线中文字幕 | 国产精品久久久久999 | 国产精品久久久久久久一区二区 | 91精品国产色综合久久不卡98口 | 玖玖视频国产 | 欧美三级免费观看 | 性视频网 | 日韩精品一区二区三区免费视频 | 成人精品鲁一区一区二区 | 欧美日韩在线免费 | 亚洲欧美在线免费观看 | 国产一区二区精华 | 91在线一区| 亚洲视频中文字幕 | 视频三区| 欧产日产国产精品视频 | 亚洲一av | 国产精品成人一区二区三区夜夜夜 | 亚洲福利网站 | 91成人在线视频 | 91社区在线高清 | 午夜成人在线视频 | 日韩美女爱爱 | 日韩色视频| 台湾佬久久 | 国产精品网址 | 欧美5区| 7777在线视频 | 亚洲精品在线观看视频 | 韩日一区 | 免费欧美视频 | 日韩一区二区在线播放 | 亚洲一区二区三区四区在线观看 | 国产1区2区| 日本不卡一区二区三区在线观看 | 精品在线一区二区三区 | 999www视频免费观看 | 亚洲一区自拍 | 欧美日在线 | 99精品视频免费在线观看 |