Fuzzy C-Means (FCM)


Fuzzy C-Means (FCM) Merupakan suatu teknik pengclusteran data dimana tiap-tiap data dalam suatu cluster ditentukan oleh derajat keanggotaannya. Terdapat beberapa perbedaan yang mendasar antara teknik pengclusteran klasik dengan teknik pengclusteran fuzzy yaitu pada partisi clustering yang bersifat klasik, suatu data hanya menjadi anggota pada satu cluster saja, sedangkan pada partisi fuzzy suatu data bisa menjadi anggota pada dua cluster yang berbeda. Hal ini disebabkan karena nilai keanggotaan suatu data pada partisi fuzzy terletak pada interval 0 sampai dengan 1. Konsep FCM antara lain:

  • Penentuan pusat cluster yang menandai lokasi rata-rata untuk tiap cluster, dengan kondisi awal tidak akurat.
  • Tiap data memiliki derajat keanggotaan untuk masing-masing cluster.
  • Dengan perulangan yang didasarkan pada minimisasi fungsi obyektif, pusat cluster dan nilai kenaggotaan diperbaiki. Sehingga lokasi cluster bisa berada pada posisi yang benar.

Misal Pengelompokkan data Arus laut menggunakan metode fuzzy cluster – mean dilakukan dengan matlab, yaitu dengan menuliskan syntax pada editor matlab.

Arus= []; %masukkan data yang akan dicluster di dalam tanda []
[center,U,obj_fcn] = fcm(Arus, 7); %syntax clustering dengan 7 cluster
maxU = max(U);
index1 = find(U(1,:) == maxU);
index2 = find(U(2,:) == maxU);
index3 = find(U(3,:) == maxU);
index4 = find(U(4,:) == maxU);
index5 = find(U(5,:) == maxU);
index6 = find(U(6,:) == maxU);
index7 = find(U(7,:) == maxU);
figure %plotting untuk data clustering ke 1
plot(Arus(index1,1),'o','color','b');
title('Fuzzy Clustering Kecepatan (m/s)')
xlabel('Banyak Data')
ylabel('Kecepatan (m/s)')
figure %plotting untuk data clustering ke 2
plot(Arus(index2,1),'x','color','r');
title('Fuzzy Clustering Kecepatan (m/s)')
xlabel('Banyak Data')
ylabel('Kecepatan (m/s)')
figure %plotting untuk data clustering ke 3
plot(Arus(index3,1),'o','color','g');
title('Fuzzy Clustering Kecepatan (m/s)')
xlabel('Banyak Data')
ylabel('Kecepatan (m/s)')
figure %plotting untuk data clustering ke 4
plot(Arus(index4,1),'x','color','c');
title('Fuzzy Clustering Kecepatan (m/s)')
xlabel('Banyak Data')
ylabel('Kecepatan (m/s)')
figure %plotting untuk data clustering ke 5
plot(Arus(index5,1),'o','color','m');
title('Fuzzy Clustering Kecepatan (m/s)')
xlabel('Banyak Data')
ylabel('Kecepatan (m/s)')
figure %plotting untuk data clustering ke 6
plot(Arus(index6,1),'x','color','b');
title('Fuzzy Clustering Kecepatan (m/s)')
xlabel('Banyak Data')
ylabel('Kecepatan (m/s)')
figure %plotting untuk data clustering ke 7
plot(Arus(index7,1),'o','color','r');
title('Fuzzy Clustering Kecepatan (m/s)')
xlabel('Banyak Data')
ylabel('Kecepatan (m/s)')
min(Arus(index1,1)) %menentukan niai minimum untuk cluster 1
max(Arus(index1,1)) %menentukan niai maksimum untuk cluster 1
min(Arus(index2,1))
max(Arus(index2,1))
min(Arus(index3,1))
max(Arus(index3,1))
min(Arus(index4,1))
max(Arus(index4,1))
min(Arus(index5,1))
max(Arus(index5,1))
min(Arus(index6,1))
max(Arus(index6,1))
min(Arus(index7,1))
max(Arus(index7,1))
center;

Adapun beberapa syntax yang digunakan untuk metode fuzzy cluster – mean seperti penjelasan dibawah ini,
[center,U,obj_fcn] = fcm(data,cluster_n) penjelasan dari syntax diatas adalah menerapkan metode fuzzy c-means untuk himpunandata.
penjelasan input fungsi ini adalah

  • data : kumpulan data akan dikelompokkan; setiap baris adalah data sampel titik.
  • cluster_n : jumlah dari cluster (lebih dari satu)

penjelasan output fungsi ini

  • center : matriks pusat cluster akhir di mana setiap baris menyediakan pusat koordinat.
  • U : matriks partisi fuzzy akhir (atau fungsi keanggotaan matriks) .
  • obj_fcn : nilai-nilai fungsi objektif selama iterasi

fcm(data,cluster_n,options) menggunakan variabel argumen tambahan, opsi, untuk mengontrol parameter clustering, memperkenalkan kriteria berhenti, mengatur tampilan informasi iterasi, atau keduanya.

  • options(1): eksponen untuk partisi matriks U (default: 2.0)
  • options(2): Jumlah maksimum dari iterasi (default: 100)
  • options(3): jumlah minimum perbaikan (default: 1e-5)
  • options (4): Tampilan info selama iterasi (default: 1)

Jika ada masuknya opsi NaN, nilai default untuk opsi yang digunakan sebagai gantinya. Proses clustering berhenti ketika jumlah maksimum dari iterasi tercapai atau ketika perbaikan fungsi tujuan antara dua iterasi berturut-turut kurang dari jumlah minimum perbaikan ditentukan.

Pada gambar diatas merupakan contoh distribusi ketinggian gelombang pada titik pengamatan Laut Jawa dengan menggunakan fuzzy clustering di matlab. Data terdistribusi pada pusat cluster Center =1.4299, dan mempunyai nilai  Min =  1.29 dan Max= 1.58 dan standart deviasi = 0.553258117. Output dari FCM bukan merupakan fuzzy inference system namun merupakan deretan pusat cluster dan beberapa derajat keanggotaan untuk tiap-tiap data. Informasi ini dapat digunakan untuk membangun suatu fuzzy interference system

Author: android78

i m cool

20 thoughts on “Fuzzy C-Means (FCM)”

  1. Mas, salam kenal…
    ajari saya dong, lagi bingung nih.. gmn caranya menulis syntax untuk membuat matriks partisi awal pada FCM. angka2nya kan di antara 0 dan 1, dengan jumlahan tiap barisnya harus sama dengan 1… tolong y mas… thanks.

  2. salam kenal juga..
    klo gak salah ada di buku karangan Sri Kusumadewi dan Hari Purnomo Aplikasi Logika Fuzzy Untuk
    Pendukung Keputusan,dan logika fuzzy dengan matlab ada uraian tentang algoritma FCM dengan matrik
    ntar saya coba cek soalnya bukunya masih di pinjem temen..

  3. Feby:
    salam kenal jga..Kalo di matlab codenya
    >> std (filename)
    oh ya klo misalnya datanya banyak km buat dulu workspace aja,sebenarnya lebih gampang pake excel pke function ” =stdev()”

  4. bertanya lagi mas…
    misalkan yang akan sy cluster data temperatur….dibagi dalam 3 kelompok rendah,sedang,dan tinggi….data yang mana y dipake menentukan std?????data keseluruhan temperatur…atau hasil min,center,max dari tiap2 3 kelompok rendah,sedang,tinggi??trima kasih sebelumnya^^

  5. mas bisa tolong jelasin yg bagian ini
    options(1): eksponen untuk partisi matriks U (default: 2.0)
    options(2): Jumlah maksimum dari iterasi (default: 100)
    options(3): jumlah minimum perbaikan (default: 1e-5)
    options (4): Tampilan info selama iterasi (default: 1)
    klo liat di matlabx bgmna. trmkasi..

  6. feby: data keseluruhan yang dicari standart deviasinya. ntar standart deviasi dan tiap-tiap center di jadikan parameter di FIS tipe sugeno. coba liat postingan membuat FIS dengan m-file. 🙂
    fikha: itu option aja,contoh code diatas [center,U,obj_fcn] = fcm(Arus, 7); memakai default semua dari syntax fcm(data,cluster_n,options)..

  7. mas blh minta ajarin ttg fcm…
    gmn cara nentuin hasil akhir cluster masuk k kelompok yang tinggi atau rendah kl data dikelompokkan menjadi 2 cluster??

  8. salam kenal mas,. saya baru mempelajari fuzzy clustering, kira2 untuk perhitungaan apa saja yang dapat menggunakan metode tersebut, dalam analsis sistem tenaga dapat dilakukan dibagian mananya, . mohon sekiranya bimbingan dari mas,.

  9. mas jika saya punya data tentang kebutuhan listrik, ada data : daya, populasi,jumlah prngguna, rasio elektrifikasi,
    nah bagaimana mengkulsternya mas,,
    apa harus disusun dulu antara input dan output??
    atau di cluster langsung??

  10. salam hangat mas….
    mas saya bikin skripsi nih tentang kepuasan pelangan mengunakan fcm, dari skripsi teman2 saya yang terdahulu iterasi ke 2, ke 3 saya dapatkan dengan hitungan mengunakan excel. penerapannya saya tiru dari buku sri kusumadewi tentang lokiga fuzzy. ternyata dosen saya minta agar proses iterasi ke 2 dan ke 3 tersebut di aplikasikan dengan matlab. yang saya tanyakan, gimana coding fcm pada matlab untuk menentukan iterasi ke 2 dan ke 3 tersebut? mohon dibantu ya mas

  11. Saya mau tanya, bagaimana cara membuat bilangan random untuk membuat matrik U, atau matriks awal. SEbab saya lihat tetap ada rumusnya, bukan sedekar angka acak.
    Saya hanya tahu aturannya, adalah bilangan antara 0 dan 1 jadi nilainya adalah bilangan 0,xx
    terus jumlah kolomnya harus bernilai 1.
    Pertanyaan saya, bagaimana menentukan nilai sebenarnya tersebut. Rumusnya seperti apa, kalau bisa saya minta diajarin contoh langkahnya. terimakasih

  12. salam kenal mas…
    saya nita…. ^___^
    hmm, yang lain sepertinya sdh jauh mengenal fcm…
    minta tolog diajarin donk, mas… =)
    kebetulan fcm adalah kajian saya semester ini….

    saya jg pke bku karangan Sri Kusumadewi dan Hari Purnomo Aplikasi Logika Fuzzy Untuk
    Pendukung Keputusan..
    dan utk algoritma fcm-nya bru bs smp step 4 ttg hitung pusat cluster…
    ada beberapa pertanyaan yg ingin diajukan…
    boleh ya???? hehe….. =)
    pertama, untk matriks inisialisasi U kan random, gmn caranya biar ga gnt2 bilangannya?? soalnya tiap kali di-run, angka-nya gant2…=(
    kedua, nita nyoba ngoding buat fungsi obyektifnya, tp angkanya aneh, gmn caranya kita ngecek klo codingnya udh bnr spt yg kita harapkan???

    mhon bantuannya ya mas…
    makasih….

  13. Salam kenal mas.
    Saya masih bingung di penentuan/inisialisasi random U.
    Didapat dari mana? apakah harus menggunakan matlab?
    Saya juga menggunakan buku yg sama (“Aplikasi Logika Fuzzy Untuk Sistem Pendukung Keputusan”). di buku tersebut ada rumusnya tp tidak dijelaskan maksud/arti dari setiap simbol/komponen didalam rumus tersebut. mohon penjelasannya mas. terima kasih

Leave a comment