Analisis Cluster Penelitian Hewan Kebun Binatang

Muhammad Isma Prasetiyadi

20 November 2024


> body {
+   text-align: justify; 
+ }
+ 
+ pre, code {
+   text-align: left; 
+ }
> # install.packages("cluster")
> # install.packages("factoextra")
> # install.packages("fpc")
> # install.packages("psych")
> # install.packages("readxl")

1 PENDAHULUAN

1.1 Latar Belakang

Klasifikasi dan pengelompokan data merupakan langkah penting dalam analisis data untuk memahami struktur di dalamnya. Salah satu metode yang sering digunakan dalam pengelompokan adalah clustering, yaitu teknik yang bertujuan untuk mengelompokkan data ke dalam kelompok-kelompok berdasarkan tingkat kemiripan antara data tersebut tanpa memanfaatkan informasi label (unsupervised learning). Dataset Zoo dari UCI Machine Learning Repository menjadi contoh yang sangat relevan untuk studi clustering karena dataset ini mencakup berbagai karakteristik hewan yang heterogen.

Hewan dalam dataset Zoo didefinisikan oleh 16 atribut yang mencakup sifat-sifat biologis dan morfologis, seperti keberadaan bulu, kemampuan bertelur, dan jumlah kaki. Dengan menggunakan data ini, peneliti dapat memahami bagaimana hewan-hewan tersebut secara alami terkelompok berdasarkan karakteristik yang dimiliki. Pentingnya Analisis Clustering pada Dataset Zoo sebagai berikut:

  1. Klasifikasi Tak Terkendali Dalam situasi di mana label kelompok tidak diketahui, clustering dapat membantu dalam memahami struktur data. Misalnya, pengelompokan hewan berdasarkan karakteristik fisik dan perilaku dapat mengungkap pola biologis yang tidak eksplisit atau mengidentifikasi kelompok baru yang belum didefinisikan sebelumnya.

  2. Penanganan Data Campuran Dataset Zoo mengandung variabel kategorik (misalnya, keberadaan bulu) dan numerik (jumlah kaki). Clustering dataset ini memberikan tantangan unik untuk memilih metode jarak yang sesuai, seperti jarak Gower yang dapat menangani data campuran. Hal ini membuat analisis menjadi lebih menarik untuk eksplorasi metodologi.

  3. Identifikasi Anomali Dataset ini juga menyediakan peluang untuk mendeteksi anomali atau outlier, yaitu hewan yang tidak sesuai dengan kelompok biologis mereka. Sebagai contoh, platypus mungkin masuk dalam kelompok mamalia tetapi memiliki sifat bertelur yang menyerupai reptil.

  4. Aplikasi dalam Taksonomi Biologi Clustering pada dataset Zoo tidak hanya memiliki nilai dalam analisis data, tetapi juga dapat memberikan wawasan untuk aplikasi dalam bidang taksonomi biologi, khususnya dalam mengelompokkan spesies berdasarkan ciri-ciri morfologis mereka.

1.2 Metode

1.2.1 Hierarki Clustering

Algoritma cluster hierarki dimulai dengan memperlakukan objek sebagi cluster tunggal. Selanjutnya cluster tunggal digabungkan secara berurutan hingga semua cluster tergabung menjadi satu cluster besar yang berisi semua objek. Hasil akhir dari algoritma hierarki clustering adalah representasi objek berbasis pohon, yang disebut dengan dendogram.

Pada Hierarki clustering, kedekatan cluster ditentukan dengan menggunakan linkage. Terdapat delapan macam linkage, yaitu single, complete, average, mcquitty, median, centroid, ward.D dan ward.D2. Selain itu, mengukur kemiripan suatu objek dengan objek lainnya didasarkan pada ukuran jarak, sekamin dekat jarak dua objek, semakin mirip kedua objek tersbut. Terdapat lima macam metode pengukuran jarak, yaitu euclidean, maximum, manhattan, canberra dan binary.

1.2.2 Non-Hierarki Clustering

K-medoids clustering merupakan salah satu algoritma clustering non-hierarki, sering dikenal sebagai Partitioning Around Medoids (PAM), adalah metode klastering yang membagi data ke dalam kelompok berdasarkan kesamaan. Algoritma ini mirip dengan K-means clustering, tetapi lebih tahan terhadap outlier dan data ekstrim.

K-medoids menggunakan medoid, yaitu titik aktual dalam data yang mewakili pusat cluster, daripada centroid yang dihitung sebagai rata-rata. Algoritma K-medoids cocok untuk data dengan outlier atau data campuran (numerik dan kategorik).

1.3 Data dan Sumber Data

Data yang dipakai adalah data tentang karakteristik hewan dengan 101 hewan dengan 16 variabel yaitu hair, feathers, eggs, milk, airborne, aquatic, predator, toothed, backbone, breathes, venomous, fins, legs, tail, domestic, catsize. Data yang digunakan berasal dari website UCI Machine Learning Repository dengan website sebagai berikut https://archive.ics.uci.edu/dataset/111/zoo.

1.4 Tujuan Penelitian

Tujuan dari penelitian ini adalah untuk mengelompokkan hewan-hewan yang memiliki kemiripan satu sama lain berdasarkan karakteristik 16 variabel. Pengelompokkan hewan dilakukan karena satu family hewan dalam set data memiliki beberapa spesies, namun spesies yang berbeda dari family hewan tersebut memiliki kemiripan dengan family hewan berbeda pula, sehingga ingin diketahui apakah spesies hewan memiliki kemiripan dengan family-nya sendiri atau cenderung lebih mirip dengan family hewan lain.

2 DATA PRE-PROCESSING

Sebelum melakukan analisis lebih lanjut alangkah baiknya melakukan identifikasi data yang akan digunakan. Data Pre-Processing dilakukan untuk mendeteksi ada tidaknya duplikasi data dan pengecekan tipe data.

2.1 Data

Data pada kasus hewan di Kebun Binatang memiliki 101 objek hewan dan 16 variabel yang akan di identifikasi. Cuplikan data dapat dilihat sebagai berikut.

> library(readxl)
> 
> data <- read_xlsx("D:/Document/Semestet 5 stat 22/Analisis Multivariat 1/Praktikum/Zoo.xlsx")
> data <- as.data.frame(data)
> num <- data[,-1]
> rownames(num) <- data$name
> head(num)
         hair feathers eggs milk airborne aquatic predator toothed backbone
aardvark    1        0    0    1        0       0        1       1        1
antelope    1        0    0    1        0       0        0       1        1
bass        0        0    1    0        0       1        1       1        1
bear        1        0    0    1        0       0        1       1        1
boar        1        0    0    1        0       0        1       1        1
buffalo     1        0    0    1        0       0        0       1        1
         breathes venomous fins legs tail domestic catsize
aardvark        1        0    0    4    0        0       1
antelope        1        0    0    4    1        0       1
bass            0        0    1    0    1        0       0
bear            1        0    0    4    0        0       1
boar            1        0    0    4    1        0       1
buffalo         1        0    0    4    1        0       1
> str(num)
'data.frame':   101 obs. of  16 variables:
 $ hair    : num  1 1 0 1 1 1 1 0 0 1 ...
 $ feathers: num  0 0 0 0 0 0 0 0 0 0 ...
 $ eggs    : num  0 0 1 0 0 0 0 1 1 0 ...
 $ milk    : num  1 1 0 1 1 1 1 0 0 1 ...
 $ airborne: num  0 0 0 0 0 0 0 0 0 0 ...
 $ aquatic : num  0 0 1 0 0 0 0 1 1 0 ...
 $ predator: num  1 0 1 1 1 0 0 0 1 0 ...
 $ toothed : num  1 1 1 1 1 1 1 1 1 1 ...
 $ backbone: num  1 1 1 1 1 1 1 1 1 1 ...
 $ breathes: num  1 1 0 1 1 1 1 0 0 1 ...
 $ venomous: num  0 0 0 0 0 0 0 0 0 0 ...
 $ fins    : num  0 0 1 0 0 0 0 1 1 0 ...
 $ legs    : num  4 4 0 4 4 4 4 0 0 4 ...
 $ tail    : num  0 1 1 0 1 1 1 1 1 0 ...
 $ domestic: num  0 0 0 0 0 0 1 1 0 1 ...
 $ catsize : num  1 1 0 1 1 1 1 0 0 0 ...

Data yang telah dimasukkan ke dalam analisis masih bertipe numerik yang seharusnya bertipe kategorik dengan beberapa faktor sesuai variabel masing-masing. Perlu dilakukan pengubahan tipe data yang sebelumnya menjadi numerik menjadi kategorik atau faktor. Selain itu objek pada data tidak terdapat duplikasi.

2.2 Ubah Tipe Data

Pengubahan data menjadi kategorik dengan langkah-langkah berikut.

> data1 <- lapply(data[,2:17], as.factor)
> data1 <- as.data.frame(data1)
> zoo <- data1
> rownames(zoo) <- data[,1]
> head(zoo) 
         hair feathers eggs milk airborne aquatic predator toothed backbone
aardvark    1        0    0    1        0       0        1       1        1
antelope    1        0    0    1        0       0        0       1        1
bass        0        0    1    0        0       1        1       1        1
bear        1        0    0    1        0       0        1       1        1
boar        1        0    0    1        0       0        1       1        1
buffalo     1        0    0    1        0       0        0       1        1
         breathes venomous fins legs tail domestic catsize
aardvark        1        0    0    4    0        0       1
antelope        1        0    0    4    1        0       1
bass            0        0    1    0    1        0       0
bear            1        0    0    4    0        0       1
boar            1        0    0    4    1        0       1
buffalo         1        0    0    4    1        0       1
> str(zoo)
'data.frame':   101 obs. of  16 variables:
 $ hair    : Factor w/ 2 levels "0","1": 2 2 1 2 2 2 2 1 1 2 ...
 $ feathers: Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ eggs    : Factor w/ 2 levels "0","1": 1 1 2 1 1 1 1 2 2 1 ...
 $ milk    : Factor w/ 2 levels "0","1": 2 2 1 2 2 2 2 1 1 2 ...
 $ airborne: Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ aquatic : Factor w/ 2 levels "0","1": 1 1 2 1 1 1 1 2 2 1 ...
 $ predator: Factor w/ 2 levels "0","1": 2 1 2 2 2 1 1 1 2 1 ...
 $ toothed : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
 $ backbone: Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
 $ breathes: Factor w/ 2 levels "0","1": 2 2 1 2 2 2 2 1 1 2 ...
 $ venomous: Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ fins    : Factor w/ 2 levels "0","1": 1 1 2 1 1 1 1 2 2 1 ...
 $ legs    : Factor w/ 6 levels "0","2","4","5",..: 3 3 1 3 3 3 3 1 1 3 ...
 $ tail    : Factor w/ 2 levels "0","1": 1 2 2 1 2 2 2 2 2 1 ...
 $ domestic: Factor w/ 2 levels "0","1": 1 1 1 1 1 1 2 2 1 2 ...
 $ catsize : Factor w/ 2 levels "0","1": 2 2 1 2 2 2 2 1 1 1 ...

Tipe data yang sebelumnya numerik telah menjadi kategorik/faktor sehingga dapat dilakukan analisis cluster lebih lanjut.

3 HASIL DAN PEMBAHASAN

3.1 Hierarki Clustering

3.1.1 Memilih Jarak dan Metode Terbaik

Analisis cluster hierarki membutuhkan metode jarak dan linkage yang paling optimal menggunakan korelasi cophenetic untuk mendapatkan hasil clustering yang akurat dan tidak menghasilkan cluster yang salah. Jarak dan linkage yang diuji sesuai pada pendahuluan.

> distance_methods <- c("euclidean", "maximum", "manhattan", "canberra", "binary")
> linkage_methods <- c("single", "complete", "average", "mcquitty", "median", "centroid", "ward.D", "ward.D2")
> 
> results <- data.frame(Distance_Method = character(), 
+                       Linkage_Method = character(), 
+                       Cophenetic_Correlation = numeric(), 
+                       stringsAsFactors = FALSE)
> 
> for (dist_method in distance_methods) {
+   distance_matrix <- dist(zoo, method = dist_method)
+   
+   for (linkage_method in linkage_methods) {
+     hc <- hclust(distance_matrix, method = linkage_method)
+     cophenetic_distance <- cophenetic(hc)
+     cophenetic_corr <- cor(distance_matrix, cophenetic_distance)
+     results <- rbind(results, data.frame(Distance_Method = dist_method,
+                                          Linkage_Method = linkage_method,
+                                          Cophenetic_Correlation = cophenetic_corr))
+   }
+ }
> print(results) 
   Distance_Method Linkage_Method Cophenetic_Correlation
1        euclidean         single              0.7410175
2        euclidean       complete              0.7663244
3        euclidean        average              0.8193769
4        euclidean       mcquitty              0.7823524
5        euclidean         median              0.6857606
6        euclidean       centroid              0.7762508
7        euclidean         ward.D              0.7180992
8        euclidean        ward.D2              0.7513552
9          maximum         single              0.6472185
10         maximum       complete              0.7050395
11         maximum        average              0.7732706
12         maximum       mcquitty              0.7144341
13         maximum         median              0.7122594
14         maximum       centroid              0.7615694
15         maximum         ward.D              0.6982353
16         maximum        ward.D2              0.7117873
17       manhattan         single              0.7091566
18       manhattan       complete              0.8342922
19       manhattan        average              0.8585698
20       manhattan       mcquitty              0.8302854
21       manhattan         median              0.7747890
22       manhattan       centroid              0.8211640
23       manhattan         ward.D              0.7051478
24       manhattan        ward.D2              0.8125133
25        canberra         single              0.8672513
26        canberra       complete              0.8296589
27        canberra        average              0.9119552
28        canberra       mcquitty              0.9005372
29        canberra         median              0.8469013
30        canberra       centroid              0.8464793
31        canberra         ward.D              0.6673702
32        canberra        ward.D2              0.7842208
33          binary         single              0.8469545
34          binary       complete              0.8576614
35          binary        average              0.8869092
36          binary       mcquitty              0.8940948
37          binary         median              0.7969418
38          binary       centroid              0.8509330
39          binary         ward.D              0.6597916
40          binary        ward.D2              0.7701666

Pengujian metode jarak dan linkage menghasilkan kombinasi sebanyak 40 unit. Pemilihan metode jarak dan linkage paling optimal menggunakan nilai korelasi cophenetic yang paling tinggi.

> best_result <- results[which.max(results$Cophenetic_Correlation), ]
> best_result
   Distance_Method Linkage_Method Cophenetic_Correlation
27        canberra        average              0.9119552

Hasil pengujian korelasi cophenetic mendapatkan metode jarak canberra dengan average linkage yang akan digunakan pada analisis cluster hierarki untuk mendapatkan hasil yang paling akurat dan optimal.

3.1.2 Memilih Banyaknya Cluster Optimal

Pemilihan banyaknya cluster yang dibentuk dapat memberikan hasil yang lebih akurat dan mengurangi kesalahan dalam penempatan hewan kedalam cluster berdasarkan kemiripan karakteristik hewan. Penentuan banyaknya cluster yang terbentuk menggunakan indeks silhouette. Indeks silhoutte terbesar dari nilai k tertentu akan dipilih sebagai banyaknya cluster yang akan terbentuk.

> library(factoextra)
> library(cluster)
> library(kableExtra)
> 
> silhouette_list <- list()
> for (k in 2:10) {
+   ahczoo <- hcut(zoo, 
+                  k = k, 
+                  hc_method = "average",
+                  hc_metric = "canberra",
+                  scale = FALSE)
+   silhouette_list[[as.character(k)]] <- ahczoo$silinfo$avg.width
+ }
> 
> silhouettezoo <- data.frame(k = 2:10, Silhoutte = unlist(silhouette_list))
> silhouettezoo
    k Silhoutte
2   2 0.3363370
3   3 0.3256418
4   4 0.2857180
5   5 0.4421314
6   6 0.5397649
7   7 0.5470787
8   8 0.5421396
9   9 0.5444201
10 10 0.5385863

Telah terbentuk indeks silhouette dengan nilai k dari 2 hingga 10, kemudian dipilih indeks yang memiliki nilai terbesar.

> silhouettezoo[which.max(silhouettezoo$Silhoutte), ]
  k Silhoutte
7 7 0.5470787

Telah ditentukan bahwa pembagian cluster yang paling optimal dengan mengelompokkan objek hewan menjadi 7 cluster/kelompok.

3.1.3 Analisis dan Visualisasi

Analisis cluster hierarki dapat dibentuk dengan metode jarak canberra, metode average linkage, dan membagi menjadi 7 cluster menggunakan fungsi hcut, kemudian dapat divisualisasikan dengan dendogram.

> cluster_hierarki <- hcut(zoo,
+                          k=7, 
+                          hc_method = "average",
+                          hc_metric = "canberra",
+                          scale = F)
> fviz_dend(cluster_hierarki,
+           rect = TRUE,
+           cex = 0.8,
+           lwd = 0.8)

Dendogram yang terbentuk membagi menjadi 7 cluster dengan rincian cluster ke-i sebagai berikut:

  1. Cluster 1 - Scorpion
  2. Cluster 2 - Mamalia Darat Kecil
  3. Cluster 3 - Burung dan Hewan Terbang
  4. Cluster 4 - Amfibi dan Reptil Air/Darat
  5. Cluster 5 - Hewan Air dan Mamalia Laut
  6. Cluster 6 - Predator Darat
  7. Cluster 7 - Serangga dan Invertebrata

Didapatkan hasil bahwa adanya indikasi bahwa cluster 1 merupakan pencilan, sehingga dilakukan algoritma clustering yang tahan terhadap adanya pencilan atau outlier.

3.2 Non-Hierarki Clustering

Cluster non-hierarki memperhatikan metode K-MEANS untuk komputasi sederhana dan cepat dengan mendefinisikan centroid secara random menjadi rata-rata point dari cluster tersebut, namun metode K-MEANS tidak tahan terhadap outlier. Alternatif metode lain saat mendapati outlier dalam data dapat menggunakan algoritma K-MEDOIDS yang tahan terhadap adanya pencilan dalam data.

3.2.1 Mendeteksi Outlier

Pendeteksian outlier digunakan untuk mengetahui metode yang lebih tepat untuk digunakan dalam analisis cluster non-hierarki. Pendeteksian menggunakan metode jarak gower dengan pembagian cluster sebanyak 7 sesuai dengan banyaknya pembagian pada cluster hierarki. Pembuktian banyaknya cliuster terbentuk dapat dilihat pada 3.2.2.

> library(cluster)
> library(factoextra)
> gower_dist <- daisy(zoo, 
+                     metric = "gower")
> pam_clusters <- pam(gower_dist, 
+                     k = 7)
> silhouette_info <- silhouette(pam_clusters$clustering, 
+                               gower_dist)
> outliers <- which(silhouette_info[, 3] < 0)
> print(outliers)
[1] 73 91

Didapatkan hasil bahwa amatan ke 73 dan ke 91 adalah outlier dalam data dengan keterangan berikut.

> print(zoo[outliers, ])
         hair feathers eggs milk airborne aquatic predator toothed backbone
scorpion    0        0    0    0        0       0        1       0        0
tortoise    0        0    1    0        0       0        0       0        1
         breathes venomous fins legs tail domestic catsize
scorpion        1        1    0    8    1        0       0
tortoise        1        0    0    4    1        0       1

Hasil pendeteksian outlier didapatkan bahwa hewan scorpion dan tortoise merupakan outlier yang terdapat pada kasus ini. Berikut merupakan visualisasi pendeteksian outlier dimana saat nilai silhoutte objek kurang dari 0, maka objek dapat dikatakan outlier.

> fviz_silhouette(silhouette_info, label = T)
  cluster size ave.sil.width
1       1   20          0.43
2       2   19          0.39
3       3   16          0.56
4       4   20          0.64
5       5    7          0.64
6       6   10          0.54
7       7    9          0.24

3.2.2 Memilih banyaknya cluster optimal

Pembuktian pemilihan banyaknya cluster yang dibentuk pada cluster Non-Hierarki dapat memberikan hasil yang lebih akurat dan mengurangi kesalahan dalam penempatan centroid/titik pusat yang berakibat dalam kesalahan penempatan cluster berdasarkan karakteristik hewan.

> library(factoextra)
> library(cluster)
> library(fpc)
> 
> dunn_index_list <- list()
> for (k in 2:10) {
+   kmedoidclus <- eclust(zoo, 
+                         "pam", 
+                         k = k, 
+                         graph = FALSE)
+   km <- cluster.stats(dist(zoo), 
+                       kmedoidclus$cluster)
+   dunn_index_list[[as.character(k)]] <- km$dunn
+ }
> 
> dunn_df <- data.frame(
+   k = 2:10,
+   Dunn_Index = unlist(dunn_index_list)
+ )
> maxxdunn <- max(dunn_df$Dunn_Index)
> maximaldunn <- dunn_df[dunn_df$Dunn_Index == maxxdunn, ]
> maximaldunn
  k Dunn_Index
6 6  0.2886751
7 7  0.2886751
8 8  0.2886751

Didapatkan hasil bahwa indeks dunn terbaik dengan membagi cluster menjadi 6,7,8 bagian. Karena pada analisis cluster hierarki terbagi menjadi 7 cluster, maka cluster akan dibagi menjadi 7 bagian.

3.2.3 Analisis PCA

Visualisasi pada kasus hewan kebun binatang memiliki 16 variabel sehingga harus menurunkan dimensi menerapkan algoritma reduksi dimensi seperti analisis PCA (Principal Component Analysis).

> library(factoextra)
> library(psych)
> pca_data <- principal(r=cor(num),nfactors=ncol(num), rotate = "varimax", scores=T)
> pca_data$loadings

Loadings:
         RC1    RC3    RC8    RC9    RC5    RC4    RC2    RC6    RC10   RC7   
hair      0.881                0.188                             -0.172  0.143
feathers -0.438  0.296  0.533 -0.137 -0.127        -0.216                     
eggs     -0.916 -0.134  0.183                                     0.119 -0.144
milk      0.916  0.112 -0.165        -0.144                              0.201
airborne -0.231         0.934               -0.147                      -0.145
aquatic  -0.265               -0.129         0.196  0.254         0.859       
predator               -0.130                0.960        -0.155  0.141       
toothed   0.584  0.236 -0.418 -0.146                0.245                     
backbone  0.245  0.659        -0.296 -0.138                              0.147
breathes  0.286         0.214  0.153        -0.117 -0.279        -0.279       
venomous                              0.987                                   
fins             0.126 -0.142 -0.316                0.836         0.282       
legs      0.182 -0.243         0.900               -0.245        -0.115       
tail             0.977        -0.127                                          
domestic  0.106                             -0.145         0.980              
catsize   0.362  0.139 -0.141                                            0.899
         RC11   RC12   RC14   RC13   RC15   RC16  
hair                           0.314              
feathers  0.180         0.562                     
eggs                           0.205         0.107
milk      0.147                              0.130
airborne  0.120                                   
aquatic  -0.225                                   
predator                                          
toothed          0.460 -0.302         0.176       
backbone  0.155  0.565  0.112                     
breathes  0.811                                   
venomous                                          
fins     -0.248                                   
legs      0.116                                   
tail                                              
domestic                                          
catsize                                           

                 RC1   RC3   RC8   RC9   RC5   RC4   RC2   RC6  RC10   RC7
SS loadings    3.456 1.672 1.508 1.137 1.050 1.044 1.036 1.019 1.002 0.960
Proportion Var 0.216 0.105 0.094 0.071 0.066 0.065 0.065 0.064 0.063 0.060
Cumulative Var 0.216 0.320 0.415 0.486 0.551 0.617 0.681 0.745 0.808 0.868
                RC11  RC12  RC14  RC13  RC15  RC16
SS loadings    0.908 0.554 0.441 0.143 0.040 0.029
Proportion Var 0.057 0.035 0.028 0.009 0.002 0.002
Cumulative Var 0.925 0.959 0.987 0.996 0.998 1.000

Didapatkan bahwa RC1 dan RC3 telah menjelaskan data dengan maksimal, sehingga dipilih menjadi perwakilan dalam visualisasi data. Berikut merupakan hasil dari PCA pada 16 variabel.

> predictpca <- predict(pca_data, 
+                       data = num)
> print(predictpca[,1:2])
                        RC1        RC3
aardvark        1.189870582 -1.9863851
antelope        0.975709447  0.5207546
bass           -0.533784713  0.5424403
bear            1.189870582 -1.9863851
boar            1.005930317  0.4910960
buffalo         0.975709447  0.5207546
calf            0.747584492  0.5500879
carp           -0.792130537  0.6014323
catfish        -0.533784713  0.5424403
cavy            1.330900598 -1.7541387
cheetah         1.005930317  0.4910960
chicken        -0.973657465  0.6160891
chub           -0.533784713  0.5424403
clam           -0.502099886 -1.8961608
crab           -0.430809342 -1.4896337
crayfish       -0.538157121 -1.3425993
crow           -0.715311640  0.5570972
deer            0.975709447  0.5207546
dogfish        -0.933160552  0.3691859
dolphin         0.809439819  0.1269154
dove           -0.973657465  0.6160891
duck           -0.459546409  0.6992143
elephant        0.975709447  0.5207546
flamingo       -1.144908350  0.4135014
flea           -1.209388389 -1.4344731
frog           -1.051611885 -1.4106632
poisonous frog -0.860431937 -1.2427196
fruitbat        1.869134425  0.3845697
giraffe         0.975709447  0.5207546
girl            1.069093407 -2.1040860
gnat           -0.822687029 -1.5968781
goat            0.747584492  0.5500879
gorilla         1.266997491 -2.1037608
gull           -0.429325539  0.6695557
haddock        -0.564005583  0.5720989
hamster         1.146960332  0.7233423
hare            1.375085286  0.6940090
hawk           -0.715311640  0.5570972
herring        -0.533784713  0.5424403
honeybee       -0.030412295 -1.4564134
housefly        0.006532711 -1.6536904
kiwi           -1.102013001  0.7195022
ladybird       -0.792466159 -1.6265366
lark           -0.745532511  0.5867558
leopard         1.005930317  0.4910960
lion            1.005930317  0.4910960
lobster        -0.538157121 -1.3425993
lynx            1.005930317  0.4910960
mink            1.291916419  0.6035545
mole            1.405306156  0.6643504
mongoose        1.005930317  0.4910960
moth            0.006532711 -1.6536904
newt           -1.235552150  1.0668179
octopus        -1.044880739 -1.3688194
opossum         1.405306156  0.6643504
oryx            0.975709447  0.5207546
ostrich        -1.531609710  0.5759063
parakeet       -0.973657465  0.6160891
penguin        -1.215402738  0.6587062
pheasant       -0.745532511  0.5867558
pike           -0.933160552  0.3691859
piranha        -0.533784713  0.5424403
pitviper       -1.115662747  0.8282344
platypus        0.214140792  0.9150740
polecat         1.005930317  0.4910960
pony            0.747584492  0.5500879
porpoise        0.809439819  0.1269154
puma            1.005930317  0.4910960
pussycat        0.777805363  0.5204293
raccoon         1.005930317  0.4910960
reindeer        0.747584492  0.5500879
rhea           -1.501388840  0.5462477
scorpion       -0.221270913  1.2082514
seahorse       -0.564005583  0.5720989
seal            1.822599825 -2.4073780
sealion         1.531311781  0.2171374
seasnake        0.583352354  0.8296908
seawasp        -0.024933837 -1.6157587
skimmer        -0.429325539  0.6695557
skua           -0.429325539  0.6695557
slowworm       -1.306842695  0.6602908
slug           -0.887345053 -1.8755760
sole           -0.564005583  0.5720989
sparrow        -0.745532511  0.5867558
squirrel        1.482433065  0.5469747
starfish       -0.484483231 -1.4161165
stingray       -0.741980605  0.5371295
swan           -0.858922248  0.5259599
termite        -1.209388389 -1.4344731
toad           -1.081832755 -1.3810046
tortoise       -1.970905886  1.0022072
tuatara        -1.521538252  0.9543594
tuna           -0.933160552  0.3691859
vampire         1.869134425  0.3845697
vole            1.375085286  0.6940090
vulture        -1.114687480  0.3838428
wallaby         1.083057225  0.3737203
wasp            0.197712659 -1.4857468
wolf            1.005930317  0.4910960
worm           -0.887345053 -1.8755760
wren           -0.745532511  0.5867558

3.2.4 Visualisasi

Hasil dari algoritma K-MEDOIDS dengan pembagian 7 cluster dan analisis PCA didapatkan hasil visualisasi Non-Hierarki clustering sebagai berikut.

> pcak7 <- pam(predictpca[,1:2], 
+              k=7)
> fviz_mclust(pcak7, 
+             data=predictpca)

3.2.5 Identifikasi Cluster

> kmedoidklaster <- data.frame(data$name, 
+                              pcak7$clustering)
> kmedoidklaster[order(kmedoidklaster$pcak7.clustering),]
                    data.name pcak7.clustering
aardvark             aardvark                1
bear                     bear                1
cavy                     cavy                1
girl                     girl                1
gorilla               gorilla                1
seal                     seal                1
antelope             antelope                2
boar                     boar                2
buffalo               buffalo                2
calf                     calf                2
cheetah               cheetah                2
deer                     deer                2
dolphin               dolphin                2
elephant             elephant                2
giraffe               giraffe                2
goat                     goat                2
leopard               leopard                2
lion                     lion                2
lynx                     lynx                2
mongoose             mongoose                2
oryx                     oryx                2
polecat               polecat                2
pony                     pony                2
porpoise             porpoise                2
puma                     puma                2
pussycat             pussycat                2
raccoon               raccoon                2
reindeer             reindeer                2
seasnake             seasnake                2
wallaby               wallaby                2
wolf                     wolf                2
bass                     bass                3
carp                     carp                3
catfish               catfish                3
chub                     chub                3
crow                     crow                3
duck                     duck                3
gull                     gull                3
haddock               haddock                3
hawk                     hawk                3
herring               herring                3
lark                     lark                3
pheasant             pheasant                3
piranha               piranha                3
platypus             platypus                3
scorpion             scorpion                3
seahorse             seahorse                3
skimmer               skimmer                3
skua                     skua                3
sole                     sole                3
sparrow               sparrow                3
stingray             stingray                3
swan                     swan                3
wren                     wren                3
chicken               chicken                4
dogfish               dogfish                4
dove                     dove                4
flamingo             flamingo                4
kiwi                     kiwi                4
newt                     newt                4
ostrich               ostrich                4
parakeet             parakeet                4
penguin               penguin                4
pike                     pike                4
pitviper             pitviper                4
rhea                     rhea                4
slowworm             slowworm                4
tortoise             tortoise                4
tuatara               tuatara                4
tuna                     tuna                4
vulture               vulture                4
clam                     clam                5
crab                     crab                5
crayfish             crayfish                5
flea                     flea                5
frog                     frog                5
poisonous frog poisonous frog                5
gnat                     gnat                5
ladybird             ladybird                5
lobster               lobster                5
octopus               octopus                5
slug                     slug                5
starfish             starfish                5
termite               termite                5
toad                     toad                5
worm                     worm                5
fruitbat             fruitbat                6
hamster               hamster                6
hare                     hare                6
mink                     mink                6
mole                     mole                6
opossum               opossum                6
sealion               sealion                6
squirrel             squirrel                6
vampire               vampire                6
vole                     vole                6
honeybee             honeybee                7
housefly             housefly                7
moth                     moth                7
seawasp               seawasp                7
wasp                     wasp                7

Berikut merupakan hasil Non-Hierarki clustering menjadi 7 kelompok dengan penjelasan masing-masing karakteristik sebagai berikut:

  1. Cluster 1: Mamalia Terestrial Besar dan Adaptif
  2. Cluster 2: Mamalia Darat Karnivora dan Herbivora
  3. Cluster 3: Burung, Hewan Air, dan Vertebrata dengan Adaptasi Khusus
  4. Cluster 4: Reptil, Burung Besar, dan Amfibi
  5. Cluster 5: Invertebrata dan Amfibi Kecil
  6. Cluster 6: Mamalia Kecil dan Nokturnal
  7. Cluster 7: Serangga dan Invertebrata Berbisa

Dapat disimpulkan bahwa dengan algoritma yang tahan terhadap outlier dapat menghasilkan cluster dengan akurat yang dapat merepresentasikan objek/hewan secara merata dengan tingkat validitas tinggi.

4 PENUTUP

4.1 Kesimpulan

Metode clustering non-hierarki sering lebih baik daripada metode hierarki dalam kasus dataset yang besar, dinamis, dan kompleks seperti dataset Zoo. Cluster non-hierarki menawarkan fleksibilitas, efisiensi, dan interpretasi yang lebih mudah. Meskipun cluster hierarki bisa bermanfaat untuk eksplorasi awal atau visualisasi struktur dataset, penggunaannya sering terbatas oleh kendala teknis dan interpretasi dalam skala yang lebih besar.

4.2 Saran

Dalam penelitian yang menggunakan dataset seperti Zoo, sangat penting untuk memilih metrik jarak dan algoritma clustering yang sesuai agar hasilnya akurat, tahan terhadap pencilan, dan mampu menangkap pola dari data campuran yang terdiri dari atribut numerik dan kategorikal. Untuk data campuran seperti ini, penggunaan metrik jarak Gower sangat disarankan karena mampu mengukur kesamaan antara objek dengan kombinasi tipe data yang berbeda. Gower mempertahankan keseimbangan kontribusi antara fitur numerik dan kategorikal, yang sering menjadi tantangan dalam analisis clustering.

Algoritma clustering yang dipilih harus mampu menangani pencilan secara efektif. Dalam konteks ini, K-Medoids adalah salah satu algoritma yang sangat direkomendasikan karena menggunakan medoid sebagai pusat cluster, yang lebih tahan terhadap gangguan dari pencilan dibandingkan dengan pendekatan rata-rata seperti pada K-Means. Alternatif lainnya adalah DBSCAN, algoritma berbasis kerapatan yang tidak hanya mampu membentuk cluster dengan bentuk tidak beraturan tetapi juga dapat mendeteksi dan mengidentifikasi data pencilan secara otomatis.

5 DAFTAR PUSTAKA

Forsyth, R. (1990). Zoo [Dataset]. UCI Machine Learning Repository. https://doi.org/10.24432/C5R59V. Sa’adah, U., Rochayani, M. Y., Lestari, D. W., & Lusia, D. A. (2021). Kupas Tuntas Algoritma Data Mining Dan Implementasinya Menggunakan R. UB Press.