Hierarchical Clustering — Average Linkage with R
السَّلاَمُ عَلَيْكُمْ وَرَحْمَةُ اللهِ وَبَرَكَاتُهُ
Hai semuanyaa…
Selamat datang di artikel aku yang kedua.
Setelah membahas Algorithm Agglomerative Hierarchical Clustering — and Practice with R pada artikel sebelumnya, so… sekarang aku akan memenuhi janji untuk mengulas analisis cluster hirarki dengan asumsi yang harus dipenuhi.
>> Asumsi pada Cluster <<
Dalam melakukan analisis cluster, terdapat syarat yang harus dipenuhi antara lain:
- Sampel Representatif
Penggunaan sampel yang representatif akan memberikan hasil yang maksimal dan sesuai dengan kondisi populasi yang ada. Jika penelitian menggunakan data populasi, maka dapat disimpulkan bahwa asumsi representatif telah terpenuhi. (Hair, dkk., 1998) - Tidak ada multikolinearitas
Multikolinearitas adalah suatu peristiwa terjadinya korelasi yang kuat antara dua atau lebih variabel kelompok. Multikolinearitas merupakan masalah yang perlu diperhatikan dalam analisis multivariat pada umumnya, karena pengaruhnya yang sangat besar dalam menghasilkan solusi, sehingga mengganggu proses analisis. (Hair, dkk., 1998)
Salah satu cara pengujian multikolinearitas dalam data adalah menggunakan koefisien korelasi.
Koefisien korelasi merupakan indeks atau bilangan yang digunakan untuk mengukur keeratan hubungan antar variabel. Perhitungan koefisien korelasi yang dapat digunakan untuk data dengan skala pengukuran interval dan rasio adalah koefisien korelasi Pearson.
Nah, asumsi pada cluster ngga banyak kan teman-teman…
Karna kita udah tau apa aja asumsi pada cluster, sekarang saatnya untuk praktek menyelesaikan studi kasus.
Contoh Studi Kasus
Klik download untuk mendapatkan data studi kasus yang akan digunakan.
Data tersebut merupakan data iklim di 30 Provinsi tahun 2017 yang terdiri dari 4 variabel yaitu Provinsi, suhu (C), angin (m/det), dan hujan (mm).
Setelah data iklim berhasil di-download, simpanlah dalam suatu folder.
Kemudian lakukan input data dengan script berikut.
## Input data
setwd("E:\\Medium")
data2 = read.csv("Data iklim.csv")
head(data2)
nrow(data2)
summary(is.na(data2[,2:4]))
setwd adalah perintah yang menghubungkan folder penyimpanan data yang akan kita gunakan. Dalam script di atas tertera “E:\\Medium” itu karena data iklim aku simpan dalam folder Medium.
Dari output di atas, kita dapat informasi bahwa data iklim terdiri dari 4 variabel yaitu Provinsi, Suhu, Angin, dan Hujan dengan jumlah sebanyak 30 data.
Nah, karena yang numerik adalah data kolom ke 2 sampai 4 maka pemeriksaan missing value hanya dilakukan pada kolom itu saja. Ternyata, data iklim tidak memiliki missing value (data hilang atau kosong).
Karena tidak ada kendala, yuk kita lanjut ke asumsi cluster.
Dalam analisis cluster kali ini, data studi kasus akan digunakan seluruhnya sehingga asumsi sampel representatif telah terpenuhi.
Pengujian untuk asumsi tidak terjadi multikolinearitas dilakukan dengan melihat nilai korelasi Pearson.
Berikut adalah script matriks korelasi Pearson pada software R.
## Uji asumsi multikolinearitas
library(car)
cor(data2[,2:4])
Menurut (Gujarati, 2003), jika nilai korelasi melebihi 0.8 maka hal itu menandakan bahwa terjadi multikolinearitas.
Dari output matriks korelasi 3x3 pada gambar di atas, terlihat bahwa nilai korelasi antar variabel berada di bawah 0.8 sehingga dapat disimpulkan bahwa asumsi tidak terjadi multikolinearitas telah terpenuhi.
Sehingga, variabel-variabel tersebut dapat digunakan untuk analisis cluster.
Analisis cluster melakukan pengelompokan berdasarkan karakteristik yang sama dengan melihat jarak terdekat. Sehingga perhitungan matriks jarak adalah hal terpenting.
Berikut adalah script matriks jarak Euclidean.
## Jarak antar data
dist(data2[,2:4])
Karena output matriks jarak adalah 30x30 jadi tidak perlu ditampilkan ya teman-teman, nanti kalian bisa lihat sendiri ketika mencoba langsung.
Setelah matriks jarak diperoleh, langkah selanjutnya adalah analisis cluster.
Nah… teman-teman, kali ini ketiga teknik agglomerative akan digunakan pada data iklim yang kemudian dibandingkan nilai korelasi cophenetic-nya. Teknik agglomerative yang memiliki korelasi cophenetic tertinggi (nilainya mendekati 1) adalah teknik yang terbaik.
Berikut adalah script untuk melihat masing-masing nilai korelasi cophenetic.
## Perbandingan korelasi antar metode hirarki
# Single
d1=dist(data2[,2:4])
hc = hclust(d1,"single")
d2 = cophenetic(hc)
cor.sing = cor (d1,d2)
cor.sing
# Average
d1=dist(data2[,2:4])
hc = hclust(d1,"ave")
d2 = cophenetic(hc)
cor.ave = cor (d1,d2)
cor.ave
# Complete
d1=dist(data2[,2:4])
hc = hclust(d1,"complete")
d2 = cophenetic(hc)
cor.comp = cor (d1,d2)
cor.comp
Berdasarkan nilai korelasi cophenetic dari ketiga teknik agglomerative, ternyata teknik average linkage adalah teknik agglomerative terbaik untuk data iklim karena memiliki nilai korelasi cophenetic tertinggi yaitu 0.7687918 sehingga analisis cluster pada data iklim akan dilakukan menggunakan teknik average linkage.
## Analisis cluster dgn hirarki average
hirarki.ave=hclust(dist(data2[,2:4]),method = "ave")
hirarki.ave
# dendrogram
plot(hirarki.ave, labels = data2$Provinsi)
Berbeda dengan artikel sebelumnya yang hanya sampai dendrogram, pada artikel yang kedua ini kita akan membagi cluster berdasarkan output dendrogram.
Menurut teman-teman, berapa nih jumlah cluster yang terbentuk?
Apakah 2 atau 3 cluster?
Nah… untuk menentukan banyaknya cluster yang terbentuk, kita dapat melihat saran k (cluster) optimum dari metode Silhouette, WSS, dsb.
Metode yang paling sering dipakai adalah metode Silhouette. Namun kembali lagi bahwa itu hanyalah “saran”, jadi kita bisa juga memutuskan untuk tidak menggunakan saran tersebut.
Metode Silhouette menggunakan pendekatan nilai rata-rata untuk menduga kualitas dari cluster yang terbentuk. Semakin tinggi nilai rata-ratanya maka akan semakin baik.
Berikut adalah script metode Silhouette.
## Jumlah cluster yg optimal
library(factoextra)
fviz_nbclust(data2[,2:4], hcut, method = "silhouette")
Dari output metode Silhouette di atas, jumlah cluster yang disarankan adalah 2. Hal ini ditandai dengan garis vertikal putus-putus yang menunjukkan nilai rata-rata tertinggi.
Berdasarkan saran metode Silhouette, yuk kita coba membuat cluster-nya.
## Plot mengelompokkan data
plot(hirarki.ave, labels = data2$Provinsi)
rect.hclust(hirarki.ave, k=2, border=2:3)
Wah ternyata pembagian cluster sebanyak 2 terlihat kurang bervariasi ya teman-teman.
Mmm… sepertinya aku ngga akan pakai saran dari si Silhouette deh, maaf ya Silhouette…
Sekarang yuk kita coba pembagian cluster sebanyak 3.
## Plot mengelompokkan data
plot(hirarki.ave, labels = data2$Provinsi)
rect.hclust(hirarki.ave, k=3, border=2:3)
Oke… setelah cluster terbentuk, sekarang saatnya kita melihat jumlah anggota masing-masing cluster.
## Anggota cluster
hasil.cut = cutree(hirarki.ave,3)
table(hasil.cut)
Dari tabel di atas, kita dapat informasi bahwa cluster-1 memiliki 19 anggota, cluster-2 memiliki 10 anggota, dan cluster-3 memiliki 1 anggota.
Anggota dari masing-masing cluster dapat dilihat dari output script berikut ini.
rownames(data2)[hasil.cut==1]
rownames(data2)[hasil.cut==2]
rownames(data2)[hasil.cut==3]
Output di atas menunjukkan anggota cluster dengan nomor urut data iklim.
Karna output tersebut berupa nomor urut, mungkin… anggota cluster jadi lebih mudah dilihat dari output dendrogram.
Nah, berikut adalah tabel anggota masing-masing cluster.
Langkah terakhir dalam analisis cluster adalah menghitung rata-rata dari masing-masing cluster untuk melihat bagaimana karakteristiknya.
Dari hasil perhitungan rata-rata, terlihat bahwa cluster 2 merupakan cluster dengan karakteristik tinggi, cluster 1 merupakan cluster dengan karakteristik sedang, dan cluster 3 merupakan cluster dengan karakteristik rendah.
Yeayy… artikel kedua finish !!
Selamat mencoba, semoga bermanfaat yaaa
Terimakasih sudah mampir ke sini…
وَ السَّلاَمُ عَلَيْكُمْ وَرَحْمَةُ اللهِ وَبَرَكَاتُهُ
Referensi
Hair, e. a. (1998). Multivariate Data Analysis, Fifth Edition. New Jersey: Upper Saddle River.
Gujarati, D. N. (2003). Basic Econometrics. Third Edition.Mc. . Graw-Hill: Singapore.
https://www.youtube.com/watch?v=bn3_KZx6pV4
https://www.youtube.com/watch?v=ZBP8Mw8CKxM