Penentuan K Opitmum dengan nilai Dunn Index dan Davies Bouldin Index, Serta Evaluasi Model Cluster Menggunakan Average Within dan Average Between di R

SRI ARISTA PANGGOLA
6 min readJul 17, 2020

--

Assalamualaiku, wr, wb…

Pada pembahasan kali ini, akan diberikan cara penentuan k optimum cluster dengan metode lain yaitu menggunakan nilai Dunn dan Davies Bouldin Index, serta Evaluasi Model Cluster.

Untuk analisis cluster, pada artikel sebelumnya telah dibahas analisis cluster menggunakan algoritma K-Means dan K-Medoid yang penentuan k optimunya dilihat dari plot metode ellbow, Silhouette, dan Gap Statistic.

Dunn Index

Indeks validitas Dunn (DN) menghitung nilai minimum dari perbandingan antara nilai fungsi dissimilaritas antara dua klaster sebagai separation dan nilai maksimum dari diameter klaster sebagai compactness. Jumlah klaster terbaik ditunjukkan dengan semakin besar nilai DN. (Dunn, J.C., 1974)

Davies Bouldin Index

Indeks validitas Davies-Bouldin (DB) menghitung rata-rata nilai setiap titik pada himpunan data. Perhitungan nilai setiap titik adalah jumlah nilai compactness yang dibagi dengan jarak antara kedua titik pusat klaster sebagai separation. Jumlah klaster terbaik ditunjukkan dengan nilai DB yang semakin kecil (Davies & Bouldin, 1979)

Average Within dan Average Between

Sebuah metode pengelompokkan dikatakan baik jika memiliki nilai simpangan bagus dalam kelompok (Average within) Sw yang minimum dan nilai simpangan baku antar kelomopk (average between) Sb yang maksimum (Bunkers,2006).

Baik teman-teman, Langsung ke tutorial di R-nya aja yaa..

Data yang digunakan untuk analisis ini adalah data terkait kualitas pendidikan pemuda menurut Provinsi di Indonesia tahun 2019. Data ini diperoleh dari website resmi Badan Pusat Statistik (BPS). Variabel yang digunakan sebanyak 6variabel yaitu, Angka Buta Huruf (ABH), Lulusan SD, SMP, SMA, Perguruan Tinggi, dan Penggunaan Komputer.

##Input Data
klas<- read.delim('clipboard')
##Merubah Rownames Data
rownames(klas)<-klas$Provinsi

Selanjutnya melakukan pengecekkan data Outlier dengan menggunakan sintaks berikut.

library(MVN)
outlier=mvn(klas[,2:8],multivariateOutlierMethod = "quan", showNewData = TRUE)

Berdasarkan qqplot Outlier diatas, diketahui bahwa terdapat 1 outlier yang sangat jauh yaitu pada Provinsi Papua, sehingga akan dikeluarkan dari data karena akan memberikan hasil cluster yang kurang optimal. berikut sintaks untuk membuat data baru tanpa data outlier Provinsi Papua.

##membuang data di baris ke 34, dan membuang kolom 1 berupa Provinsi
dt.klas <-klas[-34,-1]
##Menampilkan data teratas
head(dt.klas)

Selanjutnya adalah memanggil package yang dibutuhkan dalam analisis.

##Instal Packages
install.packages(cluster)
install.packages(fpc)
install.packages(factoextra)
install.packages(scale)
##Mengatifkan Package
library(cluster)
library(fpc)
library(factoextra)
library(scale)

Selanjutnya, akan dibuat perbandingan antara cluster dengan algoritma K-Means dan K-Medoid. berikut adalah 4 bentuk model kmeans dengan k=2, k=3, k=4, dan k=5.

# K-means clustering
kmean2 <- eclust(dt.klas, "kmeans", k = 2, nstart = 25, graph = FALSE)
kmean2_stats <- cluster.stats(dist(dt.klas), kmean2$cluster)
kmean3 <- eclust(dt.klas, "kmeans", k = 3, nstart = 25, graph = FALSE)
kmean3_stats <- cluster.stats(dist(dt.klas), kmean3$cluster)
kmean4 <- eclust(dt.klas, "kmeans", k = 4, nstart = 25, graph = FALSE)
kmean4_stats <- cluster.stats(dist(dt.klas), kmean4$cluster)
kmean5 <- eclust(dt.klas, "kmeans", k = 5, nstart = 25, graph = FALSE)
kmean5_stats <- cluster.stats(dist(dt.klas), kmean5$cluster)

Selanjutnya, akan di cek nilai Dunn Indeks dari masing-masing model K- Means.

##Indeks dun
kmean2_stats$dunn
kmean3_stats$dunn
kmean4_stats$dunn
kmean5_stats$dunn
Nilai Dunn Indeks Model K-Means

Pada Dunn Index, k optimum adalah k dengan nilai Dunn Index paling besar. Berdasarkan hasil pada gambar diatas, diketahui bahwa model K-Means dengan k optimum adalah pada saat k = 4 karena memiliki nilai Dunn Indekx yang paling besar dibandingkan 3 k lainnya.

Kemudian dilihat pula k optimum menggunakan nilai Davies Bouldin Index untuk model K-Means dengan menggunakan sintaks berikut.

library(clusterSim)
d <-dist(dt.klas)
dbi_kmean2 <-print(index.DB(dt.klas, kmean2$cluster, d, centrotypes = 'centroids'))
dbi_kmean3 <-print(index.DB(dt.klas, kmean3$cluster, d, centrotypes = 'centroids'))
dbi_kmean4 <-print(index.DB(dt.klas, kmean4$cluster, d, centrotypes = 'centroids'))
dbi_kmean5 <-print(index.DB(dt.klas, kmean5$cluster, d, centrotypes = 'centroids'))
##Melihat Nilai DB
dbi_kmean2$DB
dbi_kmean3$DB
dbi_kmean4$DB
dbi_kmean5$DB

hasil davies Bouldin Index model K-Means adalah berikut

DBI Kmeans

dilihat dari Davie Bouldin Index, k optimum adalah k dengan nilai DBI paling kecil. berdasarkan gambar diatas, diperoleh k optimum adalah pada saat k=4 karena memiliki nilai DBI yang paling kecil dibandingkan 3 k lainnya.

Dari hasil penentuan k optimum untuk K-Means, diperoleh k optimum berada pada saat k=4 karena memiliki nilai Dunn Index paling besar dan DBI yang paling kecil.

kemudian dibentuk 4 model K-Medoid dengan k=2, k=3, k=4, dan k=5.

# K-medoid clustering
kmedo2 <- eclust(dt.klas, "pam", k = 2,graph = FALSE)
kmedo2_stats <- cluster.stats(dist(dt.klas), kmedo2$clustering)
kmedo3 <- eclust(dt.klas, "pam", k = 3, graph = FALSE)
kmedo3_stats <- cluster.stats(dist(dt.klas), kmedo3$clustering)
kmedo4 <- eclust(dt.klas, "pam", k = 4, graph = FALSE)
kmedo4_stats <- cluster.stats(dist(dt.klas), kmedo4$clustering)
kmedo5 <- eclust(dt.klas, "pam", k = 5, graph = FALSE)
kmedo5_stats <- cluster.stats(dist(dt.klas), kmedo5$clustering)

Selanjutnya, akan di cek nilai Dunn Indeks dari masing-masing model K- Medoid.

#Index dunn
kmedo2_stats$dunn
kmedo3_stats$dunn
kmedo4_stats$dunn
kmedo5_stats$dunn
Dunn Index K-Medoid

Berdasarkan Dunn Index model K-Medoid pada gambar diatas, diperoleh bahwa k optimum saat k =5 karenaa memiliki nilai Dunn Index yang lebih besar dibandingkan 3 k lainnya.

selanjutnya penentuan k optim K-Medoid dengan menggunakan nilai Davies Bouldin Index.

##DBI
dbmedo2<- print(index.DB(dt.klas,kmedo2$clustering, centrotypes='medoids',
d=dist(dt.klas)))
dbmedo3<- print(index.DB(dt.klas,kmedo3$clustering, centrotypes='medoids',
d=dist(dt.klas)))
dbmedo4<- print(index.DB(dt.klas,kmedo4$clustering, centrotypes='medoids',
d=dist(dt.klas)))
dbmedo5<- print(index.DB(dt.klas,kmedo5$clustering, centrotypes='medoids',
d=dist(dt.klas)))
##Melihat nilai DBI
dbmedo2$DB
dbmedo3$DB
dbmedo4$DB
dbmedo5$DB
DBI K-Medoid

dilihat dari Davie Bouldin Index K-Medoid berdasarkan gambar diatas, diperoleh k optimum adalah pada saat k=5 karena memiliki nilai DBI yang paling kecil dibandingkan 3 k lainnya.

Dari hasil penentuan k optimum untuk K-Medoid, diperoleh k optimum berada pada saat k=5 karena memiliki nilai Dunn Index paling besar dan DBI yang paling kecil.

Evaluasi Model

Untuk evaluasi model dapat dilihat dari nilai average within dan average between cluster. cluster yang baik adalah yang memiliki nilai average within yang sangat kecil dan memiliki average between yang sangat besar.

berikut diberikan nilai average within dan average between K-Means.

#Nilai av within dan between
kmean4_stats$average.within
kmean4_stats$average.between

Berdasarkan gambar diatas, diperoleh bahwa nilai average within K-Means lebih kecil dari niali average between K-Means. sehingga dapat dikatakan bahwa model cluster yang terbentuk sudah baik.

kemudian untuk nilai average within dan average between K-Medoid sebagai berikut.

##Within Between
kmedo5_stats$average.within
kmedo5_stats$average.between

Berdasarkan gambar diatas, diperoleh bahwa nilai average within K-Medoid lebih kecil dari niali average between K-Medoid. sehingga dapat dikatakan bahwa model cluster yang terbentuk sudah baik.

Lalu model cluster dengan algoritma manakah yang paling baik? apakah menggunakan K-Means ? atau K-Medoid ?

Untuk memabandingkan kedua model, dapat dilihat dari nilai rationya. model terbaik adalah model dengan nilai ratio paling kecil. niali ratio diperoleh dari hasil pembagian average withindengan average between. atau dapat menggunakan sintaks berikut.

##ratio K-Means
kmean4_stat$wb.ratio
##Ratio Kmedoid
kmedo5_stat$wb.ratio

Berdasarkan gambar diatas, diketahui bahwa nilai ratio keduanya hampir sama. Namun, nila ratio yang paling kecil ada pada model K-Medoid dengan k optimum =5. sehingga Model clustering dengan algortima K-Medoid lebih baik dibandingkan K-Means. Hal ini mungkin juga dipengaruhi oleh data yang terdapat outlier. karena K-Medoid lebih robust terhadap outlier dibandingkan K-Means.

Baik teman-teman. sampai disini dulu yaa. Semoga pembahasan kali ini dapat memberikan manfaat dan selamat mencobaa..

Sumber:

  1. https://www.datanovia.com/en/lessons/cluster-validation-statistics-must-know-methods/
  2. https://journal.unnes.ac.id/sju/index.php/prisma/article/download/28906/12636/#:~:text=2.5.3.%20Indeks%20Dunn%20Indeks,Dunn%2C%20J.C.%2C%201974).

--

--