K-Means Clustering Menggunakan R Studio
Assalamu’alaikum Warahmatullahi Wabarakatuh.
Pada kesempatan kali ini saya akan membahas tentang K-Means Clustering dengan menggunakan bahasa pemprograman R Studio. Sebelum kita lanjut membahas materi tersebut perlu kita ketahui apa itu K-Means Clustering ini.
PENDAHULUAN
A. Apa itu K-Means Clustering
K-Means Clustering adalah suatu metode penganalisaan data atau metode data mining yang melakukan proses pemodelan tanpa supervisi dan merupakan salah satu metode yang melakukan pengelompokan data dengan sistem partisi.
K-Means Clustering merupakan salah satu metode clustering non hirarki yang berusaha mempartisi data yang ada kedalam bentuk satu atau lebih cluster. metode ini mempartisi data kedalam cluster hingga data yang memiliki karakteristik yang sama dikelompokan kedalam satu cluster yang sama dan data yang mempunyai karakteristik yang berbeda dikelompokan kedalam cluster yang lainnya.
Algoritma K-Means merupakan salah satu dari algoritma yang banyak digunakan dalam pengelompokan karena kesederhanaan dan efisiensi [9] dan diakui sebagai salah satu dari 10 algoritma data mining teratas oleh IEEE. Dengan menggunakan bahasa pemrograman R yang mana bahasa pemrograman ini berbasis pada bahasa pemrograman S. R memiliki kemampuan menganalisis data dengan sangat efektif dan dilengkapi dengan operator pengolahan array serta matriks
K-Means Clustering bertujuan untuk meminimalisasikan objective function yang diset dalam proses clustering dengan cara meminimalkan variasi antar data yang ada didalam suatu cluster dan memaksimalkan variasi dengan data yang ada. Cluster lainnya juga bertujuan untuk menemukan grup dalam data dengan jumlah grup yang diwakili oleh variabel K.
Terdapat dua jenis data clustering yang sering digunakan dalam proses pengelompokan data yaitu Hierarchical dan Non Hierarchical. Data clustering menggunakan metode K-Means Clustering ini secara umum dilakukan dengan algorotma dasar seperti berikut:
- Tentukan jumlah cluster
- Alokasi data kedalam cluster secara random
- Hitung centroid / rata-rata dari data yang ada di masing-masing cluster
- Alokasi masing-masing data centroid / rata-rata terdekat
- Kembali ke step 3, apabila masih ada data yang berpindah cluster atau apabila perubahan nilai centroid, ada yang diatas nilai threshold yang ditentukan atau apabila perubahan nilai pada objective function yang digunakan diatas nilai threshold yang ditentukan
PEMBAHASAN
Disini saya mengambil contoh yaitu menerapkan K-Means Clustering pada Datasets Iris dengan menggunakan bahasa pemograman R Studio. Adapun langkah-langkah yang harus kita lakukan sebagai berikut:
Pertama : Sebelum menganalisa K-Means Clustering, terlebih dahulu kita menginstal package dengan menggunakan perintah library yang ditunjukan pada sintax berikut:
# Install dan Panggil Packages #
install.packages(“tidyverse”)
library(tidyverse)
install.packages(“cluster”) #Algoritma klastering
library(cluster)
install.packages(“factoextra”) #Algoritma klastering dan visualisasi
library(factoextra)
output yang dihasilkan sebagai berikut:
Selanjutnya : kita lakukan pemanggilan data Iris dengan sintax sebagai berikut:
# Load Data #
data <- iris #Load data Iris dengan nama ‘data’
View(data) #Melihat data
str(data) #Melihat struktur data
head(data) #Melihat 5 data teratas
summary(data) #Deskriptif data
output yang dihasilkan sebagai berikut:
data yang diperoleh dari syntax diatas:
Diketahui dari dataset tersebut terdapat jumlah data sebanyak 150 data dengan 5 variabel yaitu : variabel Sepal.Length , Sepal.Width, Petal.Length, Petal.Width, dan Species. lalu kita lakukan pengujian pada data tersebut.
Berikutnya : dilakukan Standarisasi data
Standarisasi data hanya digunakan ketika datanya numerik. Sehingga peneliti hanya akan memanggil data untuk kolom 1 sampai 4 saja, sehingga pada kolom 5 tidak digunakan karena datanya tidak bersifat numerik, syntax yang digunakan sebagai berikut:
# Standarisasi Data #
data2=data.frame(data[1:4]) #Mengambil kolom yang digunakan
data2
datafix <- scale(data2) #Standarisasi atau scalling data
datafix
output yang dihasilkan sebagai berikut:
Langkah selanjutnya : Menentukan Nilai K Optimum dengan beberapa metode:
kita menggunakan k=3 , untuk membuktikan nilai k yang digunakan paling optimal bisa dengan membandingkan tiga metode yaitu metode wss, sillhoutten, dan gap_statistic dengan sintakx sebagai berikut:
# Mencari Nilai K Optimal # METODE ELBOW atau WSS
fviz_nbclust(datafix, kmeans, method = “wss”)# METODE SILHOUETTE
fviz_nbclust(datafix, kmeans, method = “silhouette”)# METODE GAP STATISTIC
dim(data2)
set.seed(9999) #Mengunci data ,nilainya ditentukan sendiri
gap_stat <-clusGap(datafix, FUN=kmeans, nstart=25, K.max=10, B= 150)
fviz_gap_stat(gap_stat)
Dari ketiga metode yang digunakan, kemudian dapat menentukan jumlah k yang optimal , jika ketiga metode menghasilkan nilai k yang sama maka nilai k yang didapat dari tiga metode tersebut yang digunakan, namun jika terdapat nilai k yang berbeda di salah satu metode nya, maka digunakan nilai k yang paling banyak sama untuk metode terbanyak.
output yang dihasilkan sebagai berikut:
menggunakan metode wss, dari gambar dapat dilihat bahwa grafik yang pergerakannya landai pertama yaitu pada angka 3–4, berarti nilai K optimum metode wss adalah 3.
menggunakan metode silhouette, dari gambar dapat dilihat bahwa grafik yang pergerakannya k optimum yaitu 2, namun ada opsional lain yaitu menentukan nilai K dengan menggunakan grafik paling tinggi berikutnya setelah grafik paling tinggi pertama yakni grafik tertingi kedua , yaitu di angka 3, berarti nilai K optimum metode silhouette adalah 3 .
menggunakan metode GAP Statistic, dengan jumah data 150 jika dilakukan pengklasteran sebanyak 10 terlalu banyak sehingga dilihat kembali bahwa garis yang tertinggi lainnya yaitu 3 , hal ini berarti nilai K optimum metode gap_stat adalah 3 .
sehingga dapat ditarik kesimpulan bahwa dengan menggunakan 3 metode tersebut nilai K Optimum yang dihasilkan yaitu 3.
Langkah selanjutnya: Mengklaster dengan K-Means syntaxnya sebagai berikut:
# Membuat Cluster K Means #
final <- kmeans(datafix, 3)
print(final)
fviz_cluster(final, data = datafix)
iris %>%
mutate(Cluster = final$cluster) %>%
group_by(Cluster) %>%
summarise_all(“mean”)
final2=data.frame(datafix, final$cluster)
View(final2)
output yang dihasilkan sebagai berikut:
KESIMPULAN
Dapat ditarik kesimpulan bahwa dengan menggunakan k=3 ,diketahui cluster 1 memiliki jumlah data sebesar 53 ,
cluster 2 memiliki jumlah data sebesar 50,
cluster 3 memiliki jumlah data sebesar 47.
Setelah diketahui bahwa data 1–150 masuk ke cluster mana, selanjutnya didapatkan nilai within cluster sum of squares dari cluster k-means dengan k=3 yaitu untuk cluster 1 sebesar 44.08754, cluster 2 sebesar 47.35062, dan cluster 3 sebesar 47.45019. Dengan nilai between_SS atau between sum of squares dibagi nilai total_SS sebesar 76.7%.
Sekian pembahasan saya kali ini
Wasalammualaikum Warahmatullahi Wabarakatuh.
DAFTAR PUSTAKA
Syafnidawati. 2020. “K-Means Clustering”. Universitas Raharja”.
Sihombing, Rika Elizabet dkk. 2019. “Program Aplikasi R Untuk Mengelompokkan Objekmenggunakan Metode K-Means Clustering”. Jurnal Eurekamatika, 7(1), hlm.
Gustientiedina dkk. 2019. “Penerapan Algoritma K-Means Untuk Clustering Data Obat-Obatan Pada RSUD Pekabaru”. Jurnal Nasional Dan Sistem Informasi, 5(1), hlm.