Fuzzy C-Means (FCM): Contoh Perhitungan Clustering Lengkap
Diterbitkan 26 September 2026
Fuzzy C-Means (FCM) adalah algoritma clustering berbasis fuzzy yang memungkinkan satu data memiliki derajat keanggotaan pada lebih dari satu cluster. Berbeda dengan K-Means yang menempatkan satu data hanya pada satu cluster, FCM menghasilkan nilai membership antara 0 sampai 1 untuk setiap data terhadap setiap cluster.
Tutorial ini membahas Fuzzy C-Means secara lengkap menggunakan contoh enam data dua dimensi dan dua cluster. Perhitungan dimulai dari inisialisasi matriks membership, menghitung pusat cluster, menghitung jarak, memperbarui membership, menghitung fungsi objektif, melakukan iterasi sampai konvergen, hingga menentukan cluster dominan setiap data.
Daftar Isi
- Pengertian Fuzzy C-Means
- Konsep Dasar FCM
- Perbedaan FCM dan K-Means
- Parameter Fuzzy C-Means
- Rumus Pusat Cluster
- Rumus Membership
- Fungsi Objektif FCM
- Kondisi Konvergensi
- Tahapan Algoritma FCM
- Contoh Kasus Fuzzy C-Means
- Interpretasi Nilai Membership
- Pengaruh Nilai Fuzziness m
- Pseudocode Fuzzy C-Means
- FCM vs K-Means
- FCM vs K-Medoids
- Kelebihan dan Kekurangan FCM
- Kapan FCM Cocok Digunakan?
- Kesalahan Umum Implementasi
- Ringkasan
- FAQ Fuzzy C-Means
- Referensi
- Source Code Fuzzy C-Means
Pengertian Fuzzy C-Means
Fuzzy C-Means adalah algoritma clustering yang menggunakan konsep fuzzy membership.
Jika terdapat:
Data A
pada FCM data tersebut dapat memiliki:
Cluster 1 = 0.75
Cluster 2 = 0.25
Artinya Data A lebih dekat atau lebih cocok dengan Cluster 1, tetapi masih mempunyai sebagian keanggotaan pada Cluster 2.
Untuk setiap data \(i\):
dengan:
- \(u_{ik}\) = membership data ke-\(i\) pada cluster ke-\(k\),
- \(c\) = jumlah cluster.
Nilai membership memenuhi:
Konsep Dasar FCM
FCM mencari pusat cluster dan membership secara berulang.
Alurnya:
Data
↓
Inisialisasi Membership
↓
Hitung Pusat Cluster
↓
Hitung Jarak Data ke Pusat
↓
Update Membership
↓
Hitung Fungsi Objektif
↓
Cek Konvergensi
↓
Ulangi jika belum konvergen
Pusat cluster tidak dihitung menggunakan rata-rata biasa, tetapi menggunakan membership yang dipangkatkan dengan parameter fuzziness \(m\).
Data dengan membership tinggi memberikan pengaruh yang lebih besar terhadap posisi pusat cluster.
Perbedaan FCM dan K-Means
K-Means menggunakan hard clustering.
Contoh:
A1 → Cluster 1
FCM menggunakan soft atau fuzzy clustering.
Contoh:
A1:
Cluster 1 = 0.83
Cluster 2 = 0.17
Perbandingan:
| Aspek | Fuzzy C-Means | K-Means |
|---|---|---|
| Keanggotaan | Fuzzy | Tegas |
| Nilai membership | 0 sampai 1 | 0 atau 1 |
| Satu data pada banyak cluster | Bisa | Tidak |
| Pusat cluster | Weighted centroid | Mean biasa |
| Parameter tambahan | Fuzziness \(m\) | Tidak |
| Interpretasi batas cluster | Lebih fleksibel | Tegas |
Parameter Fuzzy C-Means
Parameter penting:
| Parameter | Keterangan |
|---|---|
| \(c\) | Jumlah cluster |
| \(m\) | Fuzziness exponent |
| \(\varepsilon\) | Batas perubahan membership |
| MaxIter | Maksimum iterasi |
| \(U\) | Matriks membership |
| \(V\) | Matriks pusat cluster |
Nilai \(m\) harus:
Nilai yang sering digunakan untuk contoh dasar adalah:
Rumus Pusat Cluster
Pusat cluster ke-\(k\):
Jika data memiliki beberapa atribut:
Keterangan:
- \(v_{kj}\) = pusat cluster \(k\) pada atribut \(j\),
- \(u_{ik}\) = membership data \(i\) pada cluster \(k\),
- \(m\) = fuzziness,
- \(x_{ij}\) = nilai data \(i\) pada atribut \(j\).
Rumus Membership
Setelah pusat cluster diperoleh, membership diperbarui dengan:
Untuk:
pangkat menjadi:
sehingga:
Fungsi Objektif FCM
Fungsi objektif FCM:
Tujuan algoritma adalah meminimalkan fungsi objektif tersebut.
Secara umum:
iterasi berjalan
↓
pusat cluster semakin stabil
↓
membership semakin stabil
↓
fungsi objektif mendekati minimum lokal
Kondisi Konvergensi
Salah satu kondisi berhenti:
Contoh:
epsilon = 0.001
Jika perubahan membership terbesar lebih kecil dari 0.001, proses dapat dihentikan.
Selain itu, iterasi harus dihentikan jika:
iterasi >= MaxIter
untuk menghindari proses tanpa batas.
Tahapan Algoritma FCM
Tahapan FCM:
- Tentukan data.
- Tentukan jumlah cluster \(c\).
- Tentukan fuzziness \(m\).
- Tentukan epsilon.
- Inisialisasi matriks membership.
- Pastikan jumlah membership setiap data sama dengan 1.
- Hitung pusat cluster.
- Hitung jarak setiap data ke setiap pusat cluster.
- Update membership.
- Hitung fungsi objektif.
- Hitung perubahan membership.
- Jika belum konvergen, ulangi dari langkah menghitung pusat cluster.
- Setelah konvergen, tentukan cluster dominan setiap data.
Contoh Kasus Fuzzy C-Means
Contoh berikut menggunakan enam data dengan dua atribut:
X
Y
dan akan dibentuk:
2 cluster
#01 Menentukan Data
Dataset:
| Data | X | Y |
|---|---|---|
| A1 | 1.0 | 1.0 |
| A2 | 1.5 | 2.0 |
| A3 | 3.0 | 4.0 |
| A4 | 5.0 | 7.0 |
| A5 | 3.5 | 5.0 |
| A6 | 4.5 | 5.0 |
Secara visual, A1 dan A2 berada di bagian kiri bawah, sedangkan A4, A5, dan A6 berada lebih dekat ke kanan atas.
A3 berada di antara kedua kelompok sehingga cocok untuk memperlihatkan sifat fuzzy FCM.
#02 Menentukan Parameter
Gunakan:
Jumlah cluster c = 2
Fuzziness m = 2
Epsilon = 0.001
MaxIter = 100
Jumlah data:
Jumlah atribut:
#03 Inisialisasi Membership
Matriks membership awal ditentukan:
| Data | Cluster 1 | Cluster 2 | Total |
|---|---|---|---|
| A1 | 0.90 | 0.10 | 1.00 |
| A2 | 0.80 | 0.20 | 1.00 |
| A3 | 0.60 | 0.40 | 1.00 |
| A4 | 0.10 | 0.90 | 1.00 |
| A5 | 0.30 | 0.70 | 1.00 |
| A6 | 0.20 | 0.80 | 1.00 |
Validasi:
untuk setiap data.
Karena:
membership dikuadratkan saat menghitung pusat cluster.
Contoh A1:
#04 Menghitung Pusat Cluster Iterasi 1
Cluster 1
Penyebut:
Koordinat X:
Koordinat Y:
Sehingga:
Cluster 2
Penyebut:
Hasil perhitungan:
Pusat cluster iterasi pertama:
| Cluster | X | Y |
|---|---|---|
| C1 | 1.741026 | 2.179487 |
| C2 | 4.276744 | 5.604651 |
#05 Menghitung Jarak Iterasi 1
Gunakan Euclidean Distance:
A1 ke Cluster 1
A1 ke Cluster 2
Hasil seluruh jarak:
| Data | Jarak ke C1 | Jarak ke C2 |
|---|---|---|
| A1 | 1.392950 | 5.651537 |
| A2 | 0.300515 | 4.550145 |
| A3 | 2.213432 | 2.050605 |
| A4 | 5.818785 | 1.571654 |
| A5 | 3.324046 | 0.984345 |
| A6 | 3.945533 | 0.644551 |
Perhatikan A3 memiliki jarak yang relatif mirip terhadap kedua cluster.
#06 Memperbarui Membership Iterasi 1
Karena:
gunakan:
Membership A1 ke Cluster 1
Membership A1 ke Cluster 2
Hasil update seluruh membership:
| Data | C1 | C2 |
|---|---|---|
| A1 | 0.942730 | 0.057270 |
| A2 | 0.995657 | 0.004343 |
| A3 | 0.461869 | 0.538131 |
| A4 | 0.067994 | 0.932006 |
| A5 | 0.080622 | 0.919378 |
| A6 | 0.025994 | 0.974006 |
Nilai A3:
C1 = 46.19%
C2 = 53.81%
menunjukkan bahwa A3 berada dekat batas kedua cluster.
#07 Menghitung Fungsi Objektif
Gunakan:
Pada iterasi pertama, dengan membership awal dan pusat cluster hasil iterasi pertama, diperoleh:
Nilai fungsi objektif dapat digunakan untuk mengamati proses optimasi.
Pada iterasi selanjutnya, nilai ini umumnya menurun sampai mendekati nilai stabil.
#08 Iterasi Selanjutnya
Membership baru digunakan untuk menghitung pusat cluster berikutnya.
Ringkasan proses:
| Iterasi | C1 X | C1 Y | C2 X | C2 Y | Perubahan Membership Maks. | Fungsi Objektif |
|---|---|---|---|---|---|---|
| 1 | 1.741026 | 2.179487 | 4.276744 | 5.604651 | 0.219378 | 9.910688 |
| 2 | 1.455739 | 1.801704 | 4.210079 | 5.485376 | 0.124739 | 7.252572 |
| 3 | 1.363974 | 1.666754 | 4.143832 | 5.406394 | 0.049034 | 6.948780 |
| 4 | 1.335748 | 1.624657 | 4.114078 | 5.370349 | 0.017607 | 6.902968 |
| 5 | 1.326895 | 1.611402 | 4.102835 | 5.356585 | 0.006110 | 6.896986 |
| 6 | 1.324013 | 1.607086 | 4.098841 | 5.351675 | 0.002097 | 6.896257 |
| 7 | 1.323050 | 1.605646 | 4.097456 | 5.349969 | 0.000717 | 6.896171 |
Pada iterasi ke-7:
sehingga algoritma memenuhi kriteria konvergensi.
#09 Kondisi Konvergen
Setelah pembaruan terakhir, pusat cluster berada sangat dekat dengan:
Membership yang digunakan pada akhir iterasi:
| Data | Membership C1 | Membership C2 |
|---|---|---|
| A1 | 0.983746 | 0.016254 |
| A2 | 0.989710 | 0.010290 |
| A3 | 0.261567 | 0.738433 |
| A4 | 0.076635 | 0.923365 |
| A5 | 0.028640 | 0.971360 |
| A6 | 0.012992 | 0.987008 |
Fungsi objektif akhir mendekati:
Nilai tersebut lebih kecil dibanding iterasi awal:
yang menunjukkan proses optimasi telah bergerak menuju solusi yang lebih baik.
#10 Menentukan Cluster Dominan
Untuk memperoleh label cluster, pilih membership terbesar pada setiap data.
| Data | C1 | C2 | Cluster Dominan |
|---|---|---|---|
| A1 | 0.983746 | 0.016254 | Cluster 1 |
| A2 | 0.989710 | 0.010290 | Cluster 1 |
| A3 | 0.261567 | 0.738433 | Cluster 2 |
| A4 | 0.076635 | 0.923365 | Cluster 2 |
| A5 | 0.028640 | 0.971360 | Cluster 2 |
| A6 | 0.012992 | 0.987008 | Cluster 2 |
Jika hasil diubah menjadi hard cluster:
Cluster 1:
A1
A2
Cluster 2:
A3
A4
A5
A6
Namun informasi fuzzy tetap penting.
Contohnya A3 memiliki:
C1 = 26.16%
C2 = 73.84%
sehingga A3 masih memiliki hubungan yang cukup berarti dengan Cluster 1 dibanding A4, A5, atau A6.
Interpretasi Nilai Membership
Membership yang sangat tinggi:
0.98
menunjukkan data sangat dekat dengan karakteristik cluster tersebut.
Membership yang mendekati:
0.50 : 0.50
menunjukkan data berada dekat batas antar-cluster.
Contoh A3 pada iterasi pertama:
C1 = 0.461869
C2 = 0.538131
menunjukkan posisi A3 masih sangat ambigu.
Setelah pusat cluster semakin stabil, membership A3 menjadi:
C1 = 0.261567
C2 = 0.738433
sehingga kecenderungannya terhadap Cluster 2 menjadi lebih jelas.
Pengaruh Nilai Fuzziness m
Parameter \(m\) menentukan tingkat fuzziness.
Syarat:
Jika \(m\) mendekati 1:
membership menjadi lebih tegas
dan perilakunya semakin mendekati hard clustering.
Jika \(m\) lebih besar:
membership antar-cluster cenderung lebih merata
sehingga clustering menjadi lebih fuzzy.
Nilai:
sering digunakan sebagai nilai awal atau contoh, tetapi bukan nilai yang selalu optimal untuk semua dataset.
Pemilihan \(m\) sebaiknya disesuaikan dengan:
- karakteristik data,
- tujuan clustering,
- hasil evaluasi cluster,
- dan eksperimen parameter.
Pseudocode Fuzzy C-Means
input:
data X
jumlah cluster c
fuzziness m
epsilon
max_iteration
inisialisasi U secara acak
normalisasi setiap baris U
agar:
sum(U[i]) = 1
for iteration = 1 to max_iteration:
U_old = U
# Hitung pusat cluster
for k = 1 to c:
numerator = 0
denominator = 0
for i = 1 to n:
weight = U[i][k] ^ m
numerator +=
weight * X[i]
denominator +=
weight
V[k] =
numerator / denominator
# Update membership
for i = 1 to n:
for k = 1 to c:
denominator = 0
for j = 1 to c:
denominator +=
(
distance(X[i],V[k])
/
distance(X[i],V[j])
) ^ (2/(m-1))
U[i][k] =
1 / denominator
# Fungsi objektif
J = 0
for i = 1 to n:
for k = 1 to c:
J +=
U[i][k]^m
*
distance(X[i],V[k])^2
diff =
max(abs(U - U_old))
if diff < epsilon:
break
return U, V, J
Jika sebuah data memiliki jarak 0 tepat terhadap salah satu pusat cluster, implementasi perlu menangani pembagian nol secara khusus.
FCM vs K-Means
| Aspek | Fuzzy C-Means | K-Means |
|---|---|---|
| Jenis clustering | Fuzzy | Hard |
| Keanggotaan | 0–1 | Satu cluster |
| Pusat | Weighted centroid | Mean |
| Parameter fuzziness | Ada | Tidak |
| Batas cluster | Fleksibel | Tegas |
| Komputasi | Lebih berat | Lebih sederhana |
| Informasi ambiguitas | Ada | Tidak |
FCM cocok ketika batas kelompok tidak benar-benar tegas.
FCM vs K-Medoids
| Aspek | Fuzzy C-Means | K-Medoids |
|---|---|---|
| Pusat cluster | Centroid | Data aktual sebagai medoid |
| Membership | Fuzzy | Tegas |
| Sensitif outlier | Cukup sensitif | Umumnya lebih tahan |
| Data numerik | Sangat umum | Sangat umum |
| Pusat harus data asli | Tidak | Ya |
| Soft clustering | Ya | Tidak |
Kelebihan dan Kekurangan FCM
Kelebihan Fuzzy C-Means
- Satu data dapat memiliki membership pada beberapa cluster.
- Cocok untuk data dengan batas cluster tidak tegas.
- Membership memberikan informasi tambahan dibanding hard clustering.
- Pusat cluster diperbarui secara iteratif.
- Dapat digunakan untuk segmentasi dan eksplorasi pola data.
- Konsep matematis relatif jelas.
Kekurangan Fuzzy C-Means
- Jumlah cluster harus ditentukan di awal.
- Sensitif terhadap inisialisasi membership.
- Sensitif terhadap outlier karena menggunakan centroid dan Euclidean Distance.
- Hasil dapat berhenti pada minimum lokal.
- Memerlukan parameter fuzziness.
- Lebih mahal dibanding K-Means karena menghitung membership seluruh cluster.
- Atribut dengan skala berbeda dapat mendominasi jarak jika tidak dinormalisasi.
Kapan FCM Cocok Digunakan?
FCM cocok digunakan ketika:
- data dapat memiliki karakteristik beberapa cluster sekaligus;
- batas antar-kelompok tidak tegas;
- dibutuhkan nilai derajat keanggotaan;
- data dominan numerik;
- clustering digunakan sebagai eksplorasi;
- atau hard clustering dianggap terlalu kaku.
Contoh penerapan:
- segmentasi pelanggan,
- segmentasi citra,
- pengelompokan wilayah,
- analisis karakteristik mahasiswa,
- pengelompokan produk,
- segmentasi risiko,
- dan berbagai kasus data mining.
Kesalahan Umum Implementasi
1. Jumlah membership tidak sama dengan 1
Untuk setiap data:
2. Lupa memangkatkan membership dengan m
Pusat cluster menggunakan:
bukan hanya:
3. Salah menggunakan pangkat pada rumus membership
Pangkat:
Untuk:
nilainya:
4. Tidak menormalisasi atribut
Misalnya:
Umur = 20–60
Pendapatan = 1.000.000–50.000.000
Jika digunakan langsung, pendapatan dapat mendominasi Euclidean Distance.
Normalisasi atau standardisasi sering diperlukan.
5. Menganggap membership sebagai probabilitas
Membership FCM adalah derajat keanggotaan fuzzy.
Nilai:
0.80
tidak otomatis berarti probabilitas 80% dalam pengertian statistik.
6. Tidak menangani jarak nol
Jika:
rumus rasio jarak dapat menyebabkan pembagian nol.
Data tersebut dapat diberi membership 1 pada cluster tersebut dan 0 pada cluster lainnya.
7. Hanya berhenti berdasarkan jumlah iterasi
Lebih baik gunakan juga kriteria:
8. Menentukan cluster hanya dari nilai centroid tanpa membership
Keunggulan FCM justru berada pada informasi membership.
Cluster dominan boleh ditentukan menggunakan membership terbesar, tetapi nilai membership sebaiknya tetap disimpan.
Ringkasan
Pada contoh digunakan enam data:
| Data | X | Y |
|---|---|---|
| A1 | 1.0 | 1.0 |
| A2 | 1.5 | 2.0 |
| A3 | 3.0 | 4.0 |
| A4 | 5.0 | 7.0 |
| A5 | 3.5 | 5.0 |
| A6 | 4.5 | 5.0 |
Parameter:
c = 2
m = 2
epsilon = 0.001
Setelah iterasi, pusat cluster mendekati:
C1 = (1.322725, 1.605159)
C2 = (4.096980, 5.349383)
Membership akhir:
| Data | C1 | C2 |
|---|---|---|
| A1 | 0.983746 | 0.016254 |
| A2 | 0.989710 | 0.010290 |
| A3 | 0.261567 | 0.738433 |
| A4 | 0.076635 | 0.923365 |
| A5 | 0.028640 | 0.971360 |
| A6 | 0.012992 | 0.987008 |
Cluster dominan:
Cluster 1 = A1, A2
Cluster 2 = A3, A4, A5, A6
Namun A3 tetap memiliki membership sekitar 26.16% pada Cluster 1, sehingga informasi fuzzy memberikan gambaran yang lebih kaya dibanding hard clustering.
FAQ Fuzzy C-Means
Apa itu Fuzzy C-Means?
Fuzzy C-Means adalah algoritma clustering yang memungkinkan satu data memiliki derajat keanggotaan pada beberapa cluster.
Apa kepanjangan FCM?
FCM adalah singkatan dari Fuzzy C-Means.
Apakah FCM termasuk data mining?
Ya. FCM merupakan salah satu algoritma clustering pada data mining dan machine learning.
Apa perbedaan FCM dan K-Means?
K-Means menggunakan hard clustering, sedangkan FCM memberikan nilai membership untuk setiap data pada setiap cluster.
Apa fungsi parameter m?
Parameter \(m\) mengatur tingkat fuzziness membership.
Berapa nilai m yang digunakan?
Nilai harus lebih besar dari 1. Nilai 2 sering digunakan untuk contoh dan sebagai titik awal eksperimen.
Apa fungsi epsilon?
Epsilon menentukan batas perubahan membership yang digunakan sebagai kondisi konvergensi.
Apakah FCM membutuhkan jumlah cluster?
Ya. Jumlah cluster \(c\) biasanya ditentukan sebelum algoritma dijalankan.
Apa fungsi membership?
Membership menunjukkan derajat kedekatan atau keanggotaan suatu data terhadap cluster.
Apakah total membership satu data harus 1?
Ya:
Bagaimana menentukan cluster akhir?
Jika dibutuhkan hard label, pilih cluster dengan membership terbesar.
Apakah membership sama dengan probabilitas?
Tidak. Membership adalah derajat keanggotaan fuzzy dan tidak otomatis memiliki interpretasi probabilistik.
Apakah data perlu dinormalisasi?
Sebaiknya dilakukan jika atribut memiliki skala yang sangat berbeda karena FCM umumnya menggunakan distance.
Apakah FCM sensitif terhadap outlier?
Ya. Penggunaan centroid membuat FCM dapat dipengaruhi oleh data ekstrem.
Bagaimana mengetahui FCM sudah konvergen?
Salah satu cara adalah memeriksa perubahan membership maksimum. Jika lebih kecil dari epsilon, proses dihentikan.
Referensi
- Dunn, J. C. (1973). A Fuzzy Relative of the ISODATA Process and Its Use in Detecting Compact Well-Separated Clusters. Journal of Cybernetics, 3(3), 32–57.
- Bezdek, J. C. (1981). Pattern Recognition with Fuzzy Objective Function Algorithms. Plenum Press.
- Bezdek, J. C., Ehrlich, R., & Full, W. (1984). FCM: The Fuzzy C-Means Clustering Algorithm. Computers & Geosciences, 10(2–3), 191–203.
Source Code Fuzzy C-Means
Berikut source code yang menggunakan metode Fuzzy C-Means pada RumahSourceCode.
Ada yang Ditanyakan?
Jika masih ada kesulitan atau kekeliruan tentang metode di atas, silakan hubungi kami melalui halaman Kontak.
Perhitungan Excel tersedia melalui halaman Download, sedangkan aplikasi terkait dapat dilihat pada halaman Daftar Source Code.
Donasi digunakan untuk biaya server dan mendukung pembuatan tutorial metode atau algoritma lainnya.






