Fuzzy Gustafson Kessel Clustering

DW ADS

Fuzzy Gustafson Kessel merupakan metode clustering pengembangan dari algoritma fuzzy c-means (FCM). Sebelumnya kita pernah membahas nih terkait clustering Fuzzy C-Means pada artikel Fuzzy C-Means Clustering with R Studio. Algoritma ini pertama kali diperkenalkan oleh Donald Gustafson dan William Kessel pada tahun 1979. Tujuannya adalah mengatasi keterbatasan FCM yang hanya dapat mengelompokkan data dalam bentuk klaster bulat (spherical clusters). Nah lebih lanjut pada artikel ini kita akan membahas lebih dalam terkait clustering Fuzzy Gustafson Kessel. Tanpa berlama- lama lagi, yuk yuk simak artikel ini dengan seksama yaa!

Konsep Dasar

Clustering Fuzzy Gustafson Kessel adalah metode clustering berbasis fuzzy yang bertujuan untuk mengelompokkan data ke dalam beberapa klaster dengan keanggotaan fuzzy. Metode ini merupakan pengembangan lebih lanjut dari konsep fuzzy c-means (FCM) yang memungkinkan bentuk klaster yang lebih fleksibel, seperti elips, menggunakan matriks covariance untuk setiap klaster. Pendekatan metode clustering ini sangat berguna untuk data multidimensional (data yang memiliki banyak variabel atau fitur (dimensi)) yang memiliki varians berbeda pada masing-masing dimensi atau struktur klaster yang kompleks.

Algoritma Fuzzy Gustafson Kessel

Algoritma dari Fuzzy Gustafson Kessel Clustering adalah sebagai berikut:

1. Melakukan input data yang akan dikelompokkan.

2. Menentukan banyak kelompok yang akan dibentuk (1 < c < N), weighting exponent (m > 1), maksimum iterasi (Maxlter), error terkecil (𝜀 > 0), fungsi objektif awal = 0, dan iterasi awal (t=1).

3. Membentuk matrik partisi awal U, dimana matriks U adalah sebagai berikut.

 U=\begin{bmatrix}
u _{11}\left ( x_{1} \right ) &u _{12}\left ( x_{2} \right )  &\cdots   &u _{1I}\left ( x_{I} \right )  \\
 u _{21}\left ( x_{1} \right )&u _{22}\left ( x_{2} \right )  &\cdots   &u _{2I}\left ( x_{I} \right )  \\
 \vdots &\vdots   &\ddots   &\vdots   \\
u _{c1}\left ( x_{1} \right ) &u _{c2}\left ( x_{2} \right )  &\cdots   &u _{cI}\left ( x_{I} \right )  \\
\end{bmatrix}

Keterangan:
U merupakan matriks derajat keanggotaan dalam cluster
u merupakan derajat keanggotaan untuk tiap data & variabel
x merupakan variabel pada data

4. Menghitung Pusat Kelompok ke-k dengan rumus yaitu

 v_{i}=\frac{\sum_{k=1}^{N}u _{ik}^{m}x_{k}}{\sum_{k=1}^{N}u _{ik}^{m}}, \; i=1,2,\cdots ,c

Keterangan Rumus:
v merupakan pusat kelompok (centroid) cluster
x merupakan variabel pada data

5. Menghitung matriks kovarians kelompok dengan rumus sebagai berikut.

F_{i}=\frac{\sum_{k=1}^{N}u _{ik}^{m}\left ( x_{k}-v_{i} \right )\left ( x_{k}-v_{i} \right )^{T}}{\sum_{k=1}^{N}u _{ik}^{m}}

Keterangan Rumus:
Fi merupakan matriks kovarians kelompok gustafson kessel
u merupakan derajat keanggotaan untuk tiap data & variabel
v merupakan pusat kelompok (centroid) cluster
x merupakan variabel pada data

6. Menghitung formula jarak euclidean

D_{ikA_{i}}^{2}=\left ( x_{k}-v_{i} \right )^{T}\cdot A\cdot \left ( x_{k}-v_{i} \right )
dimana\; A=\left [ det\left ( F_{i} \right ) \right ]^{\frac{1}{N}}F_{i}^{-1}

Keterangan Rumus
D merupakan jarak euclidean
Fi merupakan matriks kovarians kelompok gustafson kessel
v merupakan pusat kelompok (centroid) cluster
x merupakan variabel pada data

7. Melakukan perhitungan fungsi objektif pada iterasi ke- t untuk persamaan sebagai berikut.

 J_{GK}\left ( X;U,V,A \right )=\sum_{i=1}^{c}\sum_{k=1}^{N}\left ( u_{ik} \right )^{m}D_{ikA_{i}}^{2}

8. Menghitung nilai fungsi keanggotaan yang baru Ut+1

u_{ik}=\left [ \sum_{j=1}^{c}\left ( \frac{D_{ikA_{i}}}{D_{jkA_{i}}} \right )^{\frac{2}{m-1}} \right ]^{-1}

9. Melakukan perbandingan nilai keanggotaan dalam matriks U. jika ‖𝑈𝑡+1 − 𝑈𝑡‖ < 𝜀 atau (t >MaxIter) maka dapat dikatakan sudah konvergen. Nilai threshold (𝜀) adalah suatu nilai yang sangat kecil mendekati 0 (misal 0,000001). Namun apabila ‖𝑈𝑡+1 −𝑈𝑡‖ ≥ 𝜀 , dapat dilanjutkan kembali ke langkah 4.

Kelebihan dan Kelemahan

Adapun terdapat beberapa kelebihan dan kelemahan dari clustering Gustafson Kessel.

Kelebihan

  1. Fleksibilitas dalam Bentuk Klaster
    Gustafson-Kessel dapat mendeteksi cluster dengan berbagai bentuk, termasuk elips dan bentuk tidak simetris, karena menggunakan matriks covariance untuk menyesuaikan bentuk klaster.
  2. Kemampuan Menangani Varians yang Berbeda
    Metode ini mampu mengelompokkan data yang memiliki varians berbeda antar dimensi, sehingga cocok untuk data yang tidak homogen.
  3. Konsep Fuzzy Membership
    Dengan menggunakan keanggotaan fuzzy, Gustafson-Kessel memberikan nilai probabilitas untuk setiap data terhadap klaster, yang memungkinkan interpretasi yang lebih halus dibandingkan clustering k-means.
  4. Relevan Diaplikasikan dalam Kehidupan Sehari-Hari
    Telah diterapkan secara luas pada berbagai bidang, seperti pengenalan pola, analisis data keuangan, dan pemrosesan citra.

Kelemahan

  1. Sensitif Terhadap Parameter Awal
    Hasil clustering sangat dipengaruhi oleh inisialisasi parameter awal, seperti jumlah klaster dan matriks covariance. Jika parameter awal tidak optimal, hasil clustering bisa kurang akurat.
  2. Ketergantungan pada Jumlah Cluster yang Diterapkan
    Sama seperti banyak metode clustering lainnya, metode clustering Gustafson Kessel membutuhkan jumlah klaster yang ditentukan diawal, yang bisa menjadi tantangan jika jumlah klaster sebenarnya tidak diketahui.
  3. Rentan Terhadap Noise dan Outlier
    Keanggotaan pada metode clustering fuzzy Gustafson Kessel dapat dipengaruhi oleh data noise atau outlier yang dapat mengubah distribusi matriks covariance.
  4. Tidak Selalu Stabil
    Dalam beberapa kasus, metode clustering Gustafson Kessel mungkin gagal mencapai konvergensi, terutama jika data memiliki struktur yang sangat kompleks atau parameter awal kurang tepat.

Penerapan Fuzzy Gustafson Kessel

Algoritma clustering Fuzzy Gustafson Kessel merupakan algoritma clustering yang memiliki berbagai penerapan dalam berbagai bidang. Berikut adalah beberapa contoh penerapannya.

A. Bidang Pemasaran dan Analisis Konsumen
Clustering Fuzzy Gustafson Kessel dapat digunakan untuk segmentasi pelanggan berdasarkan preferensi belanja, pola pembelian, atau tingkat loyalitas. Lalu analisis cluster dalam survei kepuasan pelanggan untuk memahami kebutuhan yang berbeda

fuzzy gustafson

B. Bidang Kesehatan dan Epidemiologi
Metode clustering ini dapat digunakan untuk mengelompokkan pasien berdasarkan gejala atau faktor risiko penyakit tertentu. Analisis data penyebaran penyakit untuk mengidentifikasi kelompok daerah dengan karakteristik epidemiologis tertentu.

fuzzy gustafson

C. Bidang Analisis Data Keuangan
Clustering Fuzzy Gustafson Kessel digunakan untuk mengelompokkan pelanggan berdasarkan profil risiko investasi atau perilaku keuangan. Selain itu pengelompokkan perusahaan berdasarkan indikator keuangan seperti profitabilitas, likuiditas, dan solvabilitas.

fuzzy gustafson

Tutorial Algoritma Fuzzy Gustafson dengan R

Studi Kasus

Studi kasus yang akan kita gunakan dalam hal ini menggunakan data terkait Total Tindak Pidana Kriminal yang terjadi di tiap Provinsi di Indonesia. Data 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.

fuzzy gustafson

Berdasarkan data Tindak Pindak Kriminal, variabel- variabel yang digunakan adalah sebagai berikut.
* Provinsi di Indonesia
* Nyawa (Jenis Kejahatan)
* Fisik (Jenis Kejahatan)
* Kemerdekaan (Jenis Kejahatan)
* Hak Milik (Jenis Kejahatan)
* Narkotika (Jenis Kejahatan)
* Penipuan (Jenis Kejahatan)

Tahapan R Studio Fuzzy Gustafson Kessel

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(car)
library(corrplot)
library(clusterSim)
library(clValid)
library(dplyr)
library(fclust)
library(olsrr)
library(ppclust)
library(psych)
library(Rcpp)
library(tidyverse)

Load Data

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

datafix<-scale(dataclus)

Clustering Fuzzy Gustafson Kessel

Selanjutnya kita akan melakukan clustering Fuzzy Gustafson Kessel. Dalam hal ini algoritma dicobakan dengan jumlah cluster sebanyak 2, 3, 4 dan 5.

#Clustering Fuzzy Gustafson-Kessel

##JUMLAH CLUSTER 2
set.seed(1)
fgk2 <- gk(datafix, 2, m=2, dmetric="sqeuclidean", pw = 2, 
                    alginitv="kmpp", alginitu="imembrand", 
                    nstart=1, iter.max=1000, con.val=1e-09,
                    fixcent=FALSE, fixmemb=FALSE, stand=FALSE)
summary(fgk2)
fgk2$u #Derajat keanggotaan
fgk2$csize #Jumlah Provinsi Tiap Cluster
fgk2$v #Centroid
fgk2$cluster #ID
​
fgk_2 <- data.frame(datafix, fgk2$cluster)
rmarkdown::paged_table(fgk_2)
​
##JUMLAH CLUSTER 3
set.seed(1)
fgk3 <- gk(datafix, 3, m=2, dmetric="sqeuclidean", pw = 2, 
           alginitv="kmpp", alginitu="imembrand", 
           nstart=1, iter.max=1000, con.val=1e-09,
           fixcent=FALSE, fixmemb=FALSE, stand=FALSE)
summary(fgk3)
fgk3$u #Derajat keanggotaan
fgk3$csize #Jumlah Provinsi Tiap Cluster
fgk3$v #Centroid
fgk3$cluster #ID
​
fgk_3 <- data.frame(datafix, fgk3$cluster)
rmarkdown::paged_table(fgk_3)
​
##JUMLAH CLUSTER 4
set.seed(1)
fgk4 <- gk(datafix, 4, m=2, dmetric="sqeuclidean", pw = 2, 
           alginitv="kmpp", alginitu="imembrand", 
           nstart=1, iter.max=1000, con.val=1e-09,
           fixcent=FALSE, fixmemb=FALSE, stand=FALSE)
summary(fgk4)
fgk4$u #Derajat keanggotaan
fgk4$csize #Jumlah Provinsi Tiap Cluster
fgk4$v #Centroid
fgk4$cluster #ID
​
fgk_4 <- data.frame(datafix, fgk4$cluster)
rmarkdown::paged_table(fgk_4)
​
##JUMLAH CLUSTER 5
set.seed(1)
fgk5 <- gk(datafix, 5, m=2, dmetric="sqeuclidean", pw = 2, 
           alginitv="kmpp", alginitu="imembrand", 
           nstart=1, iter.max=1000, con.val=1e-09,
           fixcent=FALSE, fixmemb=FALSE, stand=FALSE)
summary(fgk5)
fgk5$u #Derajat keanggotaan
fgk5$csize #Jumlah Provinsi Tiap Cluster
fgk5$v #Centroid
fgk5$cluster #ID
​
fgk_5 <- data.frame(datafix, fgk5$cluster)
rmarkdown::paged_table(fgk_5)

Tahapan berikutnya, setelah kita lakukan running pada syntax di atas, kita akan menentukan jumlah cluster optimal. Apakah cluster 2, 3, 4, atau 5 yang optimal? Dalam hal ini kita akan menggunakan bantuan validasi Partition Coefficient Index (PCI) dan Partition Entropy Index (PEI).

Partition Coefficient Index (PCI)

Partition Coefficient Index (PCI) adalah ukuran untuk mengevaluasi seberapa “tajam” pembagian data ke dalam klaster dalam metode clustering fuzzy. Semakin tinggi nilai PCI, maka semakin tajam atau semakin jelas pembagian klaster (keanggotaan fuzzy mendekati 0 atau 1). Namun sebaliknya nilai PCI yang rendah menunjukkan bahwa data memiliki keanggotaan yang tersebar di banyak klaster (lebih kabur). Nilai PCI dihitung dengan rumus:

 PCI=\frac{1}{n}\sum_{i=1}^{n}\sum_{k=1}^{c}u_{ik}^{2}

Keterangan Rumus:
dimana berdasarkan rumus di atas n menunjukkan jumlah data, c menunjukkan jumlah cluster, dan uik menunjukkan derajat keanggotaan data ke-i pada cluster ke-k.

Partition Entropy Index (PEI)

Partition Entropy Index (PEI) adalah ukuran yang menilai seberapa “kabur” pembagian klaster dalam clustering fuzzy gustafson kessel. Semakin rendah nilai PEI, maka semakin jelas pembagian klaster.

 PEI=-\frac{1}{n}\sum_{i=1}^{n}\sum_{k=1}^{c}u_{ik}\cdot ln\left ( u_{ik} \right )

Keterangan Rumus:
dimana berdasarkan rumus di atas n menunjukkan jumlah data, c menunjukkan jumlah cluster, dan uik menunjukkan derajat keanggotaan data ke-i pada cluster ke-k.

Adapun syntax yang digunakan untuk validasai jumlah cluster yang optimal yaitu

#PARTITION COEFFICIENT INDEX (PCI)
a2 <- ppclust2(fgk2, "fclust")
HASIL_PCI = PC(a2$U)
paste("Partition Coefficient =", HASIL_PCI)
​
a3 <- ppclust2(fgk3, "fclust")
HASIL_PCI = PC(a3$U)
paste("Partition Coefficient =", HASIL_PCI)
​
a4 <- ppclust2(fgk4, "fclust")
HASIL_PCI = PC(a4$U)
paste("Partition Coefficient =", HASIL_PCI)
​
a5 <- ppclust2(fgk5, "fclust")
HASIL_PCI = PC(a5$U)
paste("Partition Coefficient =", HASIL_PCI)
​
#####################################################################
#PARTITION ENTROPY INDEX (PEI)
b2 <- ppclust2(fgk2, "fclust")
HASIL_PEI = PE(b2$U)
paste("Partition Entropy =", HASIL_PEI)
​
b3 <- ppclust2(fgk3, "fclust")
HASIL_PEI = PE(b3$U)
paste("Partition Entropy =", HASIL_PEI)
​
b4 <- ppclust2(fgk4, "fclust")
HASIL_PEI = PE(b4$U)
paste("Partition Entropy =", HASIL_PEI)
​
b5 <- ppclust2(fgk5, "fclust")
HASIL_PEI = PE(b5$U)
paste("Partition Entropy =", HASIL_PEI)
Jumlah ClusterPartition Coefficient Index (PCI)Partition Entropy Index (PEI)
20,8910,194
30,8640,244
40,9380,126
50,9860,027
Tabel 1. Indeks Validasi Penentuan Cluster Optimal

Berdasarkan Tabel 1 diperoleh hasil bahwa nilai Partition Coefficient Index (PCI) tertinggi terdapat pada cluster 4 dan nilai Partition Entropy Index (PEI) terendah terdapat pada cluster 4 pula. Sehingga dapat diambil kesimpulan bahwa jumlah cluster optimal yang terbentuk adalah sebanyak 4.

Berikutnya kita akan melakukan visualisasi hasil clustering Fuzzy Gustafson Kessel , dalam hal ini syntax R yang digunakan adalah sebagai berikut.

#Visualisasi Hasil Cluster Fuzzy Gustafson-Kessel
fgk.visual <- ppclust2(fgk3, "fanny")
factoextra::fviz_cluster(fgk.visual, data = datafix, 
                         ellipse.type = "convex",
                         palette = "jco",
                         repel = TRUE)

fgk4$csize #Jumlah Provinsi Tiap Cluster
fuzzy gustafson
Gambar 1. Visualisasi Hasil Clustering Fuzzy Gustafson Kessel

Berdasarkan hasil output software R diketahui bahwa dengan menggunakan clustering fuzzy gustafson kessel terbentuk 4 cluster dimana
* Cluster 1 terdiri atas 14 Provinsi.
* Cluster 2 terdiri atas 6 Provinsi.
* Cluster 3 terdiri atas 7 Provinsi.
* Cluster 4 terdiri atas 7 Provinsi.

Pembagian Cluster untuk tiap Provinsi selengkapnya dapat dilihat pada tabel berikut.

ProvinsiCluster
ACEH
SUMATERA UTARA
SUMATERA BARAT
RIAU
JAMBI
SUMATERA SELATAN
BENGKULU
LAMPUNG
KEP. BANGKA BELITUNG
KEP. RIAU
DKI JAKARTA
JAWA BARAT
JAWA TENGAH
DI YOGYAKARTA
JAWA TIMUR
BANTEN
BALI
NUSA TENGGARA BARAT
NUSA TENGGARA TIMUR
KALIMANTAN BARAT
KALIMANTAN TENGAH
KALIMANTAN SELATAN
KALIMANTAN TIMUR
KALIMANTAN UTARA
SULAWESI UTARA
SULAWESI TENGAH
SULAWESI SELATAN
SULAWESI TENGGARA
GORONTALO
SULAWESI BARAT
MALUKU
MALUKU UTARA
PAPUA BARAT
PAPUA
4
4
4
3
1
1
1
3
1
1
2
3
4
3
2
1
1
1
2
2
1
1
1
1
3
3
4
3
4
1
4
1
2
2
Tabel 2. Hasil Pengelompokkan Provinsi pada Setiap Cluster

Selanjutnya untuk melihat karakteristik dari hasil 4 cluster yang telah terbentuk, kita akan hitung nilai rata- rata kejahatan berdasarkan data asli untuk setiap cluster

Variabel (Kejahatan)Cluster 1Cluster 2Cluster 3Cluster 4
Nyawa19,1439,0024,8635,86
Fisik372,071003,17787,571621,43
Kemerdekaan19,5792,0028,2990
Hak Milik 1102,503061,331933,863835,00
Narkotika834,711627,33730,431487,29
Penipuan464,211776,501023,431538,71
Tabel 3. Nilai Rata-Rata Tiap Cluster pada Data Asli

Berdasarkan tabel 3 diperoleh informasi bahwa mayoritas kejahatan dalam hal imeliputi (Nyawa, Kemerdekaan, Narkotika, Penipuan) didominasi oleh provinsi- provinsi yang terdapat pada Cluster 2.

Lalu cluster dengan nilai rata- rata tertinggi kejahatan di posisi kedua yaitu terdapat pada cluster 4 (kejahatan fisik & hak milik).

Cluster dengan rata- rata kejahatan agak rendah dimana pada posisi ketiga yaitu terdapat pada cluster 3.

Sedangkan cluster dengan rata- rata kejahatan paling minim yaitu terdapat pada cluster 1.

Referensi

Amalia, N. A., Widodo, D. A., & Oktaviana, P. (2016). Analisis Clustering Perusahaan SubSektor Perbankan Berdasarkan Rasio Keuangan CAMELS Tahun 2014 Menggunakan Metode Fuzzy C-Means dan Fuzzy Gustafson Kessel. Jurnal Sains dan Seni ITS, Vol.5, No.2.

Rahmatika, L., Suparti, & Safitri, D. (2015). Analisis Kelompok dengan Algoritma Fuzzy C-Means dan Gustafson Kessel Clustering pada Indeks LQ45. Jurnal Gaussian, Vol.4, No.3.

Sekian penjelasan terkait Clustering Fuzzy Gustafson Kessel. Apabila 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. Bye bye!

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