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 ,cKeterangan 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
- 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. - Kemampuan Menangani Varians yang Berbeda
Metode ini mampu mengelompokkan data yang memiliki varians berbeda antar dimensi, sehingga cocok untuk data yang tidak homogen. - 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. - Relevan Diaplikasikan dalam Kehidupan Sehari-Hari
Telah diterapkan secara luas pada berbagai bidang, seperti pengenalan pola, analisis data keuangan, dan pemrosesan citra.
Kelemahan
- 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. - 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. - 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. - 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

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.

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.

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.

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 Cluster | Partition Coefficient Index (PCI) | Partition Entropy Index (PEI) |
| 2 | 0,891 | 0,194 |
| 3 | 0,864 | 0,244 |
| 4 | 0,938 | 0,126 |
| 5 | 0,986 | 0,027 |
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

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.
| Provinsi | Cluster |
| 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 |
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 1 | Cluster 2 | Cluster 3 | Cluster 4 |
| Nyawa | 19,14 | 39,00 | 24,86 | 35,86 |
| Fisik | 372,07 | 1003,17 | 787,57 | 1621,43 |
| Kemerdekaan | 19,57 | 92,00 | 28,29 | 90 |
| Hak Milik | 1102,50 | 3061,33 | 1933,86 | 3835,00 |
| Narkotika | 834,71 | 1627,33 | 730,43 | 1487,29 |
| Penipuan | 464,21 | 1776,50 | 1023,43 | 1538,71 |
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
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!
