Fuzzy C-Means Clustering with R Studio

Exsight ADS

Sobat Exsight tau gak nih, dalam statistika khususnya pada metode Clustering terdapat suatu algoritma yang cukup unik yaitu algoritma Fuzzy C-Means. Mau tau apa aja keunikan-keunikannya? Yuk yuk simak artikel ini dengan seksama yaa!

Definisi

Clustering Fuzzy C-Means (FCM) merupakan sebuah algoritma dalam statistika yang digunakan untuk mengelompokkan data ke dalam beberapa kelompok atau cluster. Fuzzy C-Means termasuk dalam kategori metode non hierarchical clustering. Metode ini menggambarkan tingkat ketidakpastian dalam pengelompokan data dengan mengizinkan setiap data untuk termasuk dalam beberapa kelompok dengan derajat keanggotaan yang berbeda-beda. Dimana tentunya algoritma FCM berbeda dengan algoritma clustering k-means yang memaksa setiap data termasuk ke dalam satu kelompok tertentu.

Konsep Dasar Clustering Fuzzy C-Means (FCM)

Beberapa konsep dasar dari Fuzzy C-Means (FCM) adalah sebagai berikut:

A. Pengelompokan Data
Penerapan algoritma clustering Fuzzy C-Means digunakan untuk mengelompokkan data ke dalam beberapa kelompok berdasarkan kesamaan karakteristik. Tujuan utama FCM adalah untuk mengidentifikasi kelompok data yang memiliki tingkat kemiripan tinggi.

B. Pendekatan Fuzzy
FCM menggunakan pendekatan “fuzzy” dalam pengelompokan data. Ini berarti bahwa dalam FCM, setiap data dapat termasuk dalam semua kelompok dengan derajat keanggotaan yang berbeda-beda. Sebagai contoh, data tidak harus tegas termasuk dalam satu kelompok tertentu, tetapi bisa memiliki derajat keanggotaan yang menunjukkan sejauh mana data tersebut cocok dengan masing-masing kelompok.

C. Fungsi Objektif
Algoritma Fuzzy C-Means berusaha untuk meminimalkan fungsi objektif, yang mengukur sejauh mana data sesuai dengan kelompok yang dihasilkan. Fungsi objektif dalam hal ini melibatkan derajat keanggotaan dan pusat kelompok cluster.

d. Iteratif
Fuzzy C-Means adalah algoritma iteratif di mana pusat kelompok dan derajat keanggotaan diperbarui secara berulang sampai kondisi konvergensi tercapai. Konvergensi terjadi ketika perubahan dalam derajat keanggotaan dan pusat kelompok menjadi sangat kecil.

e. Parameter Fuzziness
Fuzzy C-Means memiliki parameter keanggotaan (fuzziness) yang memungkinkan kita untuk mengontrol sejauh mana data dapat termasuk dalam kelompok lain. Nilai fuzziness yang tinggi akan memberikan derajat keanggotaan yang lebih merata, sementara nilai yang rendah akan membuat derajat keanggotaan lebih pasti.

Tahapan Matematis FCM

Algoritma Clustering Fuzzy C-Means (FCM) memiliki beberapa tahapan secara matematis meliputi:

  1. Melakukan input data yang nantinya akan dikelompokkan, berupa matriks berukuran n x p (di mana n =jumlah sampel data, p = variabel setiap data).
  2. Menentukan jumlah cluster (c), pangkat pembobot (m > 1), maksimum iterasi (MaxIter), error terkecil yang diharapkan (ε), serta fungsi objektif awal (P0 = 0).
  3. Membangkitkan bilangan random Uik, dimana i = 1,2,3,…,n dan k = 1,2,…,c.
  4. Menghitung pusat cluster ke-k pada variabel ke-j dalam hal ini disimbollkan dengan vkj, dimana k = 1,2,…,c dan j =1,2,…,p.
V=\left [ v_{kj} \right ]=\frac{\sum_{i=1}^{n}\left ( u_{ik} \right )^{m}x_{ij}}{\sum_{i=1}^{n}\left ( u_{ik} \right )^{m}}

5. Menghitung nilai fungsi objektif pada iterasi ke-t (Pt) dengan formula yaitu.

P_{t}=\sum_{i=1}^{n}\sum_{k=1}^{c}\left ( u_{ik} \right )^{m}d_{ik}\left ( x_{i},v_{kj} \right )

6. Selanjutnya menghitung perubahan matriks keanggotaan uik dengan formula sebagai berikut.

u_{ik}=\left [ \frac{\left [ \sum_{j=1}^{p}d_{jk}\right ]^{{\frac{1}{m-1}} }}{\sum_{k=1}^{c}\left [ \sum_{j=1}^{p}d_{jk} \right ]^{\frac{1}{m-1}}} \right ]^{-1}

7. Lalu memeriksa kondisi berhenti. Jika (|Pt – Pt-1|) < ε) atau (t > MaxIter) maka iterasi berhenti. Jika tidak, maka t = t+1, kembali ke langkah 4.

Kelebihan dan Kelemahan

Dalam penggunaanya sebagai algoritma clustering, Fuzzy C-Means (FCM) memiliki beberapa kelebihan dan kelemahan, diantaranya:

Kelebihan

  1. Bersifat Feksibel
    Salah satu kelebihan utama dari FCM adalah kemampuannya dalam mengelompokkan data dengan lebih fleksibel. Data dapat termasuk dalam beberapa kelompok dengan derajat keanggotaan yang berbeda, sehingga lebih mencerminkan ketidakpastian dalam pengelompokan.
  2. Mengatasi Data yang Ambigu
    FCM mampu mengatasi data yang tidak memiliki batasan pengelompokan yang jelas sehingga FCM sangat berguna dalam situasi di mana ketika data dapat secara masuk akal bisa masuk dalam beberapa kategori sekaligus.
  3. Hasil yang Lebih Akurat
    Karena setiap data memiliki derajat keanggotaan dalam semua kelompok, FCM dapat memberikan hasil yang lebih akurat dan informatif dalam pengelompokan.
  4. Mudah diimplementasikan
    Algoritma FCM relatif mudah diimplementasikan, selain itu terdapat banyak perangkat lunak (software) dan library tersedia yang mendukungnya.
  5. Penggunaan yang Luas
    Algoritma FCM dapat diterapkan dalam berbagai bidang, diantaranya meliputi pengolahan citra, analisis data, dan machine learning.

Kelemahan

  1. Sensitif terhadap Inisialisasi
    Hasil pengelompokan pada algoritma FCM dapat bergantung pada inisialisasi awal pusat kelompok, lalu apabila inisialisasi bernilai buruk maka dapat menghasilkan hasil yang tidak memuaskan.
  2. Komputasi yang Intensif
    Algoritma FCM memerlukan komputasi yang intensif, terutama ketika bekerja dengan jumlah data atau dimensi yang besar.
  3. Kemungkinan Konvergensi ke Optimum Lokal
    Seperti algoritma clustering lainnya, algoritma FCM rentan terhadap konvergensi ke optimum lokal yang mungkin tidak menghasilkan pengelompokan yang optimal.
  4. Kesulitan Menentukan Jumlah Kelompok
    Seperti k-means, menentukan jumlah kelompok yang optimal dalam FCM bisa menjadi tantangan, dan hasilnya dapat bervariasi tergantung pada jumlah kelompok yang dipilih.
  5. Ketergantungan pada Parameter
    FCM memiliki parameter seperti parameter keanggotaan (fuzziness) yang perlu ditentukan, dan pemilihan parameter yang tidak tepat dapat mempengaruhi hasil pengelompokan.

Kelebihan dan kelemahan FCM harus dipertimbangkan dengan cermat ketika memilih algoritma clustering yang sesuai untuk suatu data maupun aplikasi tertentu. Algoritma FCM cocok untuk situasi di mana data memiliki ketidakpastian dan fleksibilitas dalam pengelompokan.

Penerapan FCM dalam Berbagai Bidang

Algoritma Fuzzy C-Means (FCM) merupakan algoritma clustering yang memiliki berbagai penerapan dalam berbagai bidang. Berikut adalah beberapa contoh penerapannya.

A. Bidang Keuangan
Algoritma FCM dapat digunakan dalam analisis keuangan untuk mengelompokkan portofolio investasi dari suatu perusahaan berdasarkan kinerja atau risiko dari perusahaan tersebut.

C-Means

B. Sistem Kendali dan Robotika
FCM dapat digunakan dalam sistem kendali maupun robotika untuk mengendalikan pergerakan robot atau sistem otomatis. Algoritma FCM dapat membantu robot atau sistem untuk mengidentifikasi lingkungan sekitarnya dan membuat keputusan berdasarkan data yang diterima.

C-Means

C. Manajemen Inventori
Dalam manajemen inventori, algoritma FCM dapat digunakan untuk mengelompokkan produk berdasarkan karakteristik tertentu, yang dapat membantu dalam perencanaan dan pengelolaan stok.

C-Means

Tutorial Algoritma FCM dengan R

Studi Kasus

Studi kasus yang akan kita gunakan dalam hal ini menggunakan data terkait Tindak Pindak Kriminal yang didapatkan dari situs Badan Pusat Statistik Indonesia tahun 2022. Adapun data bisa di-download disini.
* Tidak terdapat missing value pada data.
* Data terdiri atas 34 observasi.

C-Means

Tahapan R Studio Fuzzy C-Means

* Load Library

Tahapan awal, sebelum melakukan running syntax di software R terlebih dahulu melakukan load library R.  Adapun syntax R yang digunakan adalah sebagai berikut.

#Library
library(cluster) # Algoritma Clustering
library(factoextra) # Algoritma Clustering dan visualisasi
library(tidyverse)
library(Rcpp)
library(ppclust)
library(factoextra)
library(dplyr)
library(fclust)
library(psych)
library(clusterSim)
library(clValid)
library(olsrr)
library(car)
library(corrplot)
library(MVN)
library(readxl)

* Load Data

data<-read.csv(file.choose(),header=TRUE,sep=”,”)
rownames(data) <- data$Provinsi
dataclus <- data[,-1]

datafix<-scale(dataclus)

* Clustering Fuzzy C-Means

Tahapan berikutnya melakukan clustering Fuzzy C-Means. Dalam hal ini algoritma dicobakan dengan jumlah cluster sebanyak 2, 3, dan 4.

##JUMLAH CLUSTER 2
set.seed(1)
fcm2<- fcm(datafix, 2, m=2, dmetric="sqeuclidean", pw = 2, 
                    alginitv="kmpp", alginitu="imembrand", 
                    nstart=1, iter.max=1000, con.val=1e-09)
summary(fcm2)

##JUMLAH CLUSTER 3
set.seed(1)
fcm3<- fcm(datafix, 3, m=2, dmetric="sqeuclidean", pw = 2, 
           alginitv="kmpp", alginitu="imembrand", 
           nstart=1, iter.max=1000, con.val=1e-09)
summary(fcm3)

##JUMLAH CLUSTER 4
set.seed(1)
fcm4<- fcm(datafix, 4, m=2, dmetric="sqeuclidean", pw = 2, 
           alginitv="kmpp", alginitu="imembrand", 
           nstart=1, iter.max=1000, con.val=1e-09)
summary(fcm4)

Berdasarkan hasil running dari cluster sebanyak 2, 3, dan 4, selanjutnya akan ditentukan jumlah cluster optimal. Dalam hal ini menggunakan bantuan validasi Davies Bouldin Index (DBI) dan validasi Calinski-Harabasz .

*Indeks Davies bouldin merupakan suatu ukuran yang menunjukkan kesamaan cluster yang kerapatan datanya merupakan fungsi penurunan jarak dari karakteristik vektor cluster. Semakin kecil nilai indeks Davies Bouldin pada suatu cluster, semakin baik hasil clustering-nya. Dengan meminimalkan indeks ini terdapat perbedaan yang jelas antara satu cluster dengan cluster lainnya sehingga dapat mencapai partisi terbaik.

*Indeks Calinski-Harabasz merupakan rasio antara nilai Sum of Square between cluster (SSB) dan nilai Sum of Square within-cluster (SSW) yang dikalikan dengan faktor normalisasi. Faktor normaliasi ini akan mengurangi nilai indeks ketika jumlah cluster (k) bertambah. Semakin besar nilai indeks calinski-harabasz pada suatu cluster, semakin baik hasil clustering-nya.

#VALIDASI DAVIES BOULDIN INDEX (DBI)
d <-dist(datafix)
dbi_fcm2 <-print(index.DB(datafix,fcm2$cluster, d, centrotypes = 'centroids'))
dbi_fcm3 <-print(index.DB(datafix,fcm3$cluster, d, centrotypes = 'centroids'))
dbi_fcm4 <-print(index.DB(datafix,fcm4$cluster, d, centrotypes = 'centroids'))
dbi_fcm5 <-print(index.DB(datafix,fcm5$cluster, d, centrotypes = 'centroids'))
dbi_fcm6 <-print(index.DB(datafix,fcm6$cluster, d, centrotypes = 'centroids'))

##Melihat Nilai DB
dbi_fcm2$DB
dbi_fcm3$DB
dbi_fcm4$DB
dbi_fcm5$DB
dbi_fcm6$DB

################################################################################
#VALIDASI CALINSKI-HARABASZ
index.G1(datafix,fcm2$cluster)
index.G1(datafix,fcm3$cluster)
index.G1(datafix,fcm4$cluster)
index.G1(datafix,fcm5$cluster)
index.G1(datafix,fcm6$cluster)
Jumlah ClusterDavies Bouldin IndexCalinski- Harabasz
20,890549436,42613
31,31718923,5736
41,11381224,53334
Tabel 1. Indeks Validasi Penentuan Cluster Optimal

Apabila kita perhatikan pada Tabel 1, diketahui bahwa pada nilai Davies Bouldin Index terkecil yaitu sebesar 0,8905494 di mana dalam hal ini terdapat 2 cluster. Hasil ini juga sejalan dengan nilai Calinski-Harabasz terbesar yaitu sebesar 36,42613 untuk cluster 2. Jadi, dengan kedua indeks tersebut dapat dikatakan jumlah cluster optimal adalah sebanyak 2.

Selanjutnya melakukan visualisasi hasil clustering Fuzzy C-Means, dalam hal ini syntax R yang digunakan adalah sebagai berikut.

#Berdasarkan Hasil Validasi Jumlah Cluster (2) adalah yg terbaik

#Visualisasi Hasil Cluster Fuzzy C-Means
fcm.visual<- ppclust2(fcm2,"fanny")
factoextra::fviz_cluster(fcm.visual, data = datafix, 
                         ellipse.type = "convex",
                         palette = "jco",
                         repel = TRUE)
c-means
Image Source: R Pribadi

Referensi

Suraya, G., & Wijayanto, A. (2022). Comparison of Hierarchical Clustering, K-Means, K-Medoids, and Fuzzy C-Means Methods in Grouping Provinces in Indonesia According to The Special Index for Handling Stunting. Indonesia Journal of Statistics and Its Applications, Vol.8, No.2, 180-201.

Chusna, H., & Rumiati, A. (2020). Penerapan Metode K-Means dan Fuzzy C-Means untuk Pengelompokan Sekolah Menengah Pertama (SMP) di Indonesia Berdasarkan Standar Nasional Pendidikan (SNP). Jurnal Sains dan Seni ITS, Vol.9, No.2.

Ningrat, D., Maruddani, D., & Wuryandari, T. (2016). Analisis Cluster dengan Algoritma K-Means dan Fuzzy C-Means Clustering untuk Pengelompokan Data Obligasi Korporasi. Jurnal Gaussian, Volume 5, No.4.

Nah, sekian penjelasan terkait Clustering Fuzzy C-Means. Jika sobat Exsight masih ada yang dibingungkan, bisa langsung saja ramaikan kolom komentar atau hubungi admin melalui tombol bantuan di kanan bawah. Stay tuned di website https://exsight.id/blog/ agar tidak ketinggalan artikel-artikel menarik lainnya.

Sstt...
Mau Kiriman Artikel Terbaru Exsight
Tanpa Biaya Langganan? ????

Nama Kamu

Email Kamu

Dapatkan Akses Informasi Terupdate Seputar Dunia Data dan Statistika 🙂

Exsight ADS

Leave a Comment