K-Means Cluster Analysis Using R

Berbagi itu indah dan menyenangkan, berpahala pula (jika yang di bagikan hal-hal yang positif) :D 

Pada postingan ini, saya akan berbagi bagaimana cara melakukan analisis cluster dengan metode K-Means Cluster menggunakan program R. Disini saya menggunakan data "wine" yang di ambil dari packages "rattle" yang didalamnya terdiri dari beberapa variabel seperti terlihat pada gambar berikut:



Packages yang saya gunakan dalam analisis ini adalah 'NbClust' , 'fpc', dan 'MASS'
library(rattle) 
library(NbClust)
library(fpc)
library(MASS)

Untuk menyeragamkan data, maka akan dilakukan normalisasi data dengan cara melakukan transformasi menggunakan perintah 'scale'. Sebelum melakukan analisis (berlaku untuk semua jenis data), terlebih dahulu jangan lupa melakukan analisis deskriptif, untuk mengetahui gambaran umum data, sehingga dengan cara mengetahui gambaran umum tersebut, maka dapat memudahkan kita mengambil langkah analisis. Selain itu, kita juga harus tahu struktur dari data yang akan kita analisis. Berikut script untuk melakukan transformasi dan melihat gambaran umum (berupa ringkasan data secara keseluruhan).

head(wine)
str(wine)
class(wine$Type)
train <- scale(wine[-1])
summary(train) 

Kemudian, masuk pada tahap analisis cluster. Mula-mula saya akan menentukan berapa jumlah cluster terbaik berdasarkan data 'wine'. Untuk menentukan jumlah cluster, ada beberapa metode yang dapat digunakan, tapi dalam hal ini saya akan menggunakan index Hubert dan index D. Berikut script yang digunakan untuk mengetahui jumlah cluster terbaik.

#Model Fitting Using NbClust
nc <- NbClust(train,
              min.nc=2, max.nc=15,

              method="kmeans")

Dengan menggunakan perintah 'NbClust', kita dapat mengetahui secara langsung berapa jumlah cluster terbaik yang seharusnya digunakan untuk proses klasterisasi. Berikut output yang dihasilkan:


Jika dilihat berdasarkan grafik, kita dapat memilih jumlah cluster berdasarkan angka pada titik yang menunjukkan plot mulai landai yang menunjukkan angka 3. Selain dengan melihat grafik, kita juga dapat mengetahui berdasarkan output pada 'conclusion' --> According to the majority rule, the best number of clusters is 3. Wow amazing! LANJUT!!

Kemudian, untuk melakukan proses analisis cluster dengan metode K-Means, dapat menggunakan perintah 'kmeans' diikuti dengan nama data yang telah dilakukan transformasi dan jumlah cluster (3) seperti berikut:


Hasil diatas menunjukkan informasi tentang rata-rata cluster, kelompok cluster, dan jumlah kuadrat per cluster. Untuk melakukan visualisasi cluster dapat menggunakan perintah berikut :

plotcluster(train, fit$cluster) #Library fpc

Outputnya:
Berdasarkan plot diatas, data dapat mengelompok dengan baik sesuai dengan kesamaan karakteristiknya, cluster 1 ditunjukkan dengan plot berwarna hitam, cluster 2 warna merah, dan cluster 3 berwarna hijau. Untuk melihat karakteristik dari masing-masing cluster di atas dapat dilakukan dengan menjalankan script berikut:

aggregate(out[-1],by=list(out$clusterNum),FUN=mean)

Output:


Berdasarkan output diatas, dapat diketahui karakteristik pada masing-masing kelompok adalah sebagai berikut:

Kluster
Karakteristik
Rendah
Sedang
Tinggi
1
-      Alcalinity
-      Nonflavanoids
-     Malic
-     Color
-    Alcohol
-    Ash
-    Pronthocyanins
-    Hue
-    Dilution
-    Proline
-    Magnesium
-    Phenols
-    Flavanoids
2
-      Alcohol
-      Malic
-      Ash
-      Magnesium
-      Color
-      Proline

-     Alcalinity
-     Phenols
-     Flavanoids
-     Nonflavanoids
-     Proanthocyanins
-     Hue
-     Dilution
-     Proline
-     
3
-      Phenols
-      Flavanoids
-      Proanthocyanins
-      Hue
-      Dilution
-     Alcohol
-     Ash
-     Magnesium
-    Malic
-    Alcalinity
-    Nonflavanoids
-    Color

  1. Cluster 1, memiliki karakteristik tinggi pada kadar Alcohol, Ash, Proanthocyanins, Hue, Dilution, Proline, Magnesium, Phenol, dan Flavanoids, memiliki kadar sedang pada Malic, dan Color, serta memiliki kadar rendah pada Alcalinity dan Nonflavanoids.
  2. Cluster 2, memiliki karakteristik sedang pada kadar Alcalinity, Phenols, Flavanoids, Nonflavonoids, Proanthocyanins, Hue, dan Dilution, serta memiliki kadar rendah pada Alcohol, Malic, Ash, Magnesium, Color, dan Proline.
  3. Cluster 3, memiliki karakteristik kadar rendah pada Phenols, Flavanoids, Proanthocyanins, Hue dan Dilution, memiliki kadar sedang pada Alcohol, Ash, Magnesium, dan Proline serta memiliki kadar tinggi pada Malic, Alcalinity, Nonflavanoids, dan Color.
Untuk melakukan visualisasi cluster berdasarkan karakteristiknya dapat digunakan perintah berikut:

parcoord(train, fit$cluster) #Library MASS

Output:



Garis warna hitam menunjukkan cluster 1, garis warna merah menunjukkan cluster 2, dan garis warna hijau menunjukkan cluster 3. 

Untuk melakukan evaluasi (mengetahui seberapa baik cluster tersebut dalam melakukan pengelompokkan data) disini digunakan data type sebagai pembanding cluster, untuk mengevaluasi model tersebut dapat digunakan confusion matrix menggunakan perintah berikut:

confussion <- table(wine$Type, fit$cluster)


Output:


Berdasarkan confusion matrix diatas dapat diketahui bahwa hanya terdapat 6 sampel hasil cluster yang tidak sesuai dengan kelompok pada type. Untuk mengevaluasi seberapa baik hasil klaster dengan data Type pada sampel,  maka digunakan randIndex dengan hasil sebagai berikut:


Hasil estimasi dengan menggunakan metode K-means cukup baik, yakni dengan ketepatan (tingkat akurasi) sebesar 89,74%.

Thank you :)
Previous
Next Post »


:) :( hihi :-) :D =D :-d ;( ;-( @-) :P :o -_- (o) :p :-? (p) :-s (m) 8-) :-t :-b b-( :-# =p~ $-) (y) (f) x-) (k) (h) cheer lol rock angry @@ :ng pin poop :* :v 100

Weekly