Kelompok1_FCM(1)
-
Upload
virga-nanta -
Category
Documents
-
view
23 -
download
2
description
Transcript of Kelompok1_FCM(1)
DATA MINING
Fuzzy C Means
OLEH :
Putu Virga Nanta Nugraha 1104505057
Fajar Firmansyah 1104505061
Day Risqy Wahyu Buwono 1104505063
I Dewa Made Yuda Aditya Putra 1104505065
JURUSAN TEKNOLOGI INFORMASI
FAKULTAS TEKNIK UNIVERSITAS UDAYANA
2014
1. Pendahuluan
Fuzzy C-Means (FCM) merupakan salah satu algoritma fuzzy
clustering. Fuzzy C-Means (FCM) adalah suatu teknik pengclusteran data yang
keberadaan setiap titik data dalam suatu cluster ditentukan oleh derajat
keanggotaan. Teknik ini pertama kali diperkenalkan oleh Jim Bezdek.
Konsep dasar FCM yaitu menentukan pusat cluster, yang akan
menandai lokasi rata-rata untuk setiap cluster. Dengan cara memperbaiki pusat
cluster dan derajat keanggotaan setiap titik data secara berulang, maka akan
dapat dilihat bahwa pusat cluster akan bergerak menuju lokasi yang tepat.
Perulangan ini didasarkan pada pada minimisasi fungsi obyektif yang
menggambarkan jarak dari titik data yang diberikan ke pusat cluster yang
terbobot oleh derajat keanggotaan titik data tersebut. Output dari FCM bukan
merupakan fuzzy inference system, namun merupakan deretan pusat cluster dan
beberapa derajat keanggotaan untuk tiap-tiap titik data. Informasi ini dapat
digunakan untuk membangun suatu fuzzy inference system.
2. Tinjauan Pustaka
2.1 Algoritma Fuzzy C Means
FCM merupakan algoritma yang bersifat iteratif. Tujuan dari FCM adalah
untuk menemukan pusat cluster (centroid) yang menimalkan fungsi
pertidaksamaan. Berikut langkah-langkah dari FCM:
1. Susunlah matrix X berukuran n x m sebagai tempat dari data yang akan di-
cluster. Di mana n merupakan banyaknya data dan m merupakan banyaknya
atribut dari data tersebut. Xij = data pada sampel ke-i dan atribut ke-j
2. Inisiasikan nilai pada komponen-komponen berikut ini:
(1) Banyaknya cluster yang diinginkan c
(2) Pangkat (pembobot) w
(3) Maksimum Iterasi maxIter
(4) Error terkecil e
(5) Fungsi Objektif awal P0 = 0
(6) Iterasi awal iter = 1;
3. Bangkitkan bilangan acak Uik, dimana banyaknya i sejumlah data dan k
sejumlah cluster
4. Hitunglah pusat cluster dengan rumus
(1)
5. Hitung fungsi objektif pada iterasi ke-iter, rumusnya
(2)
6. Perbaharui matrix partisi U dengan menggunakan rumus:
(3)
7. Cek kondisi berhenti, jika Piter – Piter-1 < e atau iter > maxIter maka proses
perhitungan berhenti. Namun jika keduanya tidak memenuhi, maka iter =
iter+1 dan kembali ke langkah-4.
Sehingga bila langkah-langkah diatas digambarkan dalam suatu diagram alir
maka akan terlihat seperti pada gambar berikut ini.
Gambar 1. Diagram Alir Fuzzy C Means
2.2 Contoh Perhitungan Sederhana
Diberikan data dengan banyak data sejumlah 5 buah dengan 3 atribut.
Tentukan cluster dengan algoritma FCM jika banyaknya cluster yang diinginkan
sejumlah 2 cluster
Langkah 1:
i = 5 ; j = 3
Matrix X
Data ke-iAtribut
A (1) B (2) C (3)
1 12 7 9
2 5 4 5
3 8 11 4
4 10 3 8
5 9 1 3
Langkah 2:
Inisiasikan nilai pada komponen-komponen berikut ini:
(1) Banyaknya cluster yang diinginkan c = 2
(2) Pangkat (pembobot) w = 2
(3) Maksimum Iterasi maxIter = 5
(4) Error terkecil e = 0,01
(5) Fungsi Objektif awal P0 = 0
(6) Iterasi awal iter = 1;
Langkah 3
Bangkitkan matrix Uik dengan komponen i = banyaknya data; k = banyak cluster
i k1 k2
1 0,3 0,7
2 0,2 0,8
3 0,4 0,6
4 0,8 0,2
5 0,4 0,6
Langkah 4
Hitung pusat cluster dengan menggunakan rumus (1)
iUik Xij
1 2 1 2 3 Ui1 w Ui2 w Ui1 w * Xi1 Ui1 w * Xi2
1 0,3 0,7 12 7 9 0,09 0,49 1,08 0,63
2 0,2 0,8 5 4 5 0,04 0,64 0,2 0,16
3 0,4 0,6 8 11 4 0,16 0,36 1,28 1,76
4 0,8 0,2 10 3 8 0,64 0,04 6,4 1,92
5 0,4 0,6 9 1 3 0,16 0,36 1,44 0,16
Jumlah 1,09 1,89 10,4 4,63
Ui1 w * Xi3 Ui2 w * Xi1 Ui2 w * Xi2 Ui2 w * Xi3
0,81 5,88 3,43 4,41
0,2 3,2 2,56 3,2
0,64 2,88 3,96 1,44
5,12 0,4 0,12 0,32
0,48 3,24 0,36 1,08
7,25 15,6 10,43 10,45
Vkj 1 2 3
1 9,5412844 4,24770642 6,65137615
2 8,25396825 5,51851852 5,52910053
Sehingga diperoleh pusat cluster:
Langkah 5
Hitung fungsi objektif dengan menggunakan rumus (2)
Kluster 1 Kluster 2
i (Xi1 - Vi1)2 (Xi2 - Vi1)2 (Xi3 - Vi1)2 TOTAL 1 (Xi1 - Vi2)2 (Xi2 - Vi2)2 (Xi3 - Vi2)2 TOTAL 2
1 6,04528238 7,57511994 5,516034 19,1364363 14,03275384 2,19478738 12,04714314 28,27468436
2 20,623264 0,06135847 2,72704318 23,4116657 10,5883094 2,305898491 0,27994737 13,17415526
3 2,37555761 45,5934686 7,02979547 54,9988216 0,064499874 30,04663923 2,338148428 32,44928753
4 0,21042 1,55677132 1,8187863 3,58597761 3,048626858 6,342935528 6,105344195 15,49690658
5 0,29298881 10,547597 13,3325478 24,1731336 0,556563366 20,4170096 6,396349486 27,36992245
i
kluster 1 kluster 2
P kluster
(Xij - Vkj)2Uik w P (Xij - Vkj)2
Uik w P
1 19,1364363 0,09 1,72227927 28,2746844 0,49 13,85459534 15,57687461
2 23,4116657 0,04 0,93646663 13,1741553 0,64 8,431459366 9,367925993
3 54,9988216 0,16 8,79981146 32,4492875 0,36 11,68174351 20,48155498
4 3,58597761 0,64 2,29502567 15,4969066 0,04 0,619876263 2,914901935
5 24,1731336 0,16 3,86770137 27,3699225 0,36 9,853172084 13,72087346
TOTAL P 62,06213096
Langkah 6
Perbaharui U
i (Xi1 - Vi1)2 (Xi2 - Vi1)2 (Xi3 - Vi1)2 (Xi1 - Vi2)2 (Xi2 - Vi2)2 (Xi3 - Vi2)2 LT Ui1 Ui2
1 6,04528238 7,57511994 5,516034 14,0327538 2,19478738 12,04714314 47,41112069 0,403627589 0,596372411
2 20,623264 0,06135847 2,72704318 10,5883094 2,305898491 0,27994737 36,58582094 0,639910902 0,360089098
3 2,37555761 45,5934686 7,02979547 0,06449987 30,04663923 2,338148428 87,44810918 0,628930942 0,371069058
4 0,21042 1,55677132 1,8187863 3,04862686 6,342935528 6,105344195 19,08288419 0,187915913 0,812084087
5 0,29298881 10,547597 13,3325478 0,55656337 20,4170096 6,396349486 51,54305603 0,468989141 0,531010859
Maka didapatkan nilai U yang baru:
i k1 k2
1 0,4 0,6
2 0,64 0,36
3 0,63 0,37
4 0,19 0,81
5 0,47 0,53
Langkah 7
Cek kondisi berhenti:
Apakah iter > maxIter? <<salah>>
Apakah |P1-P0| < e? <<salah>>
Maka ulangi langkah ke-4
Setelah mengalami 5 kali proses iterasi, maka didapatkan besarnya pusat cluster sebagai berikut:
U =
Berdasarkan hasil pembaharuan matrix U maka dapat disimpulkan kecenderungan
suatu data akan masuk ke dalam cluster yang mana dengan melihat derajat
keanggotaan yang tertinggi dari setiap cluster
i Cluster
1 2
1 X
2 X
3 X
4 X
5 X
3. Pembahasan
Untuk membuat sebuah program ataupun aplikasi menghitung fuzzy c means
kali ini kami menggunakan aplikasi matlab untuk mempermudah penggunaan rumus
yang cukup rumit. Kami menggunakan dua buah pendekatan aplikasi yaitu aplikasi
yang dibuat dengan kode program dan toolbox bawaan dari matlab untuk perhitungan
fcm.
3.1 Kode Program
Berikut merupakan sintak program fuzzy c means.
function [U,V,O]=fcm2(x,c)[n,m]=size(x);%% initialization%% matriks data: n baris x m kolomw=2;teta=1e-5;P0=0;Pt=0;OB=[];
Kode Program 1. Syntak Fungsi dan Inisialisasi Variable
Pertama buat fungsi seperti diatas yang dinamai fcm2 dengan menginisialisasi nilai x
dan c dimana nilai x merupakan kumpulan data dalam matrik dan c banyak cluster
yang dibuat atau diinginkan. Kemudian inisialisasi bobot, tentukan error terkecil,
iterasi awal dan fungsi objektif awal. Kemudian proses selanjutnya yaitu inisialisasi
nilai bilangan acak seperti pada kode program berikut.
U=rand(n,c);Q=sum(U')';for i=1:n
U(i,:)=U(i,:)/Q(i);endUpauseITER=1;Obj=1e5;while (Obj>teta)
Q=sum(U.^w)';V=(U'.^w*x);for i=1:c
V(i,:)=V(i,:)/Q(i);end; disp('NILAI V'), V
pauseKode Program 2. Syntak Pencarian Nilai U dan V
pada syntak diatas pertama yang dilakukan adalah inisialiasi nilai U dengan mengisi
data acak yang didapat dari nilai n pada syntak sebelumnya dan nilai c berdasarkan
cluster yang diinginkan. Kemudian dilakukan peroses perlulang sampai kreteria
dipenuhi dan nilai U dan objek baru akan didapat pada iterasi ini. Jika nilai objek
masih lebih besar dari teta maka akan dilanjutkan keproses selanjutnya yaitu
mengubah nilai V. kemudian dilanjutkan dengan mengubah nilai V dan U sampai
kreteria fuzzy c means terselesaikan. Berikut merupakan syntak untuk mengubah nilai
U dan V.
for i=1:nS=0;for k=1:cS1=0;for j=1:m
S1=S1+(x(i,j)-V(k,j))^2;endS1=S1^(-1/(w-1));U(i,k)=S1;S=S+S1;endfor k=1:c
U(i,k)=U(i,k)/S;endenddisp('NILAI U');Upause
Kode Program 3. Syntak Untuk Update Nilai U dan V.
Pada syntak diatas dilakukan proses perulangan beberapa proses kemudian dari sini
akan didapat nilai U akhir untuk dilanjutkan keproses selanjutnya yaitu mencari nilai
cluster yang lebih kecil dari error dan iterasinya lebih besar dari maksimal iterasi.
Sehingga dalam matlab syntak yang dibuat akan Nampak seperti pada kode program
berikut ini.
P0=Pt;Pt=0;for i=1:n
for k=1:cfor j=1:m
Pt=Pt+( x(i,j)-V(k,j))^2*U(i,k)^w;endendendObj=abs(Pt-P0) ITER=ITER+1pauseOB=[OB Obj];end O=OB;Iter>c;stop% end
Kode Program 4. Syntak Mencari Nilai Pt dan Penambahan Jumlah Iterasi Yang Sudah Dilakukan.
Dari syntak diatas akan didapat dilihat dilakukan beberapa perulangan agar nilai Pt
yang didapat sesuai dengan kondisi. Rumus yang digunakan untuk mencari niali Pt
adalah rumus mencari nilai FCM yang digunkan pada matlab. Kemudian pengeceaan
iterasi akan dilakukan sestiap terjadi perulangan dimana nilai iterasi yang baru
ditambah 1 (satu) setiap perlungan terjadi dan akan berhenti bila kondisi iterasi lebih
besar dari maksimal iterasi yang di-inputkan sebelumnya. Apabila kode program
diatas dijalankan maka akan tampil seperti pada gambar berikut.
Gambar 1. Deklarasi Nilai x dan Pemanggilan Fungsi
Pertama-tama inisialisasi nilai x seperti gambar diatas. Pada contoh kali ini digunakan
matrik berukuran 5 x 2. Kemudian lakukan proses pemanggilan nama program yang
kami beri nama fcm2 dengan menginisialiasi nilai x dan maksimal iterasi yang kami
buat yaitu 4 kedalam fungsi yang disediakan sebelumnya. Kemudian tekan enter
maka kan nampak seperti pada gambar dibawah.
Gambar 2. Hasil Nilai U
Pada gambar diatas didapat nilai U sesuai dengan syntak yang dibuat sebelumnya
kemudian tekan enter untuk melanjutkan ke proses selanjutnya yaitu penetapan nilai
V seperti terlihat pada gambar dibawah.
Gambar 3. Hasil Nilai V
Kemudian akan dilanjutkan dengan proses selanjutnya yaitu update nilai U dan V dan
akan didapat nilai objek baru seperti ditunjukkan pada gambar dibawah.
Gambar 4. Perubahan Nilau V dan U serta Hasil Dari Objek Baru
Pada gambar diatas didapat nilai objek sesuai dengan syntak yang telah dibuat
sebelumnya dan iterasi bertambag satu sampai iterasi lebih besar dari maksimal
iterasi yang ditetapkan yaitu empat atau nilai objek baru (Pt) lebih kecil dari error
yang ditetapkan dimana error yang ditetapkan. Proses akan terus berlanjut hingga
hasil akhir yang didapat adalah seperti berikut ini.
Gambar 5. Hasil Iterasi Terakhir
Pada gambar diatas terlihat hasil objek baru yang didapat adalah 0.2170 dan iterasi
lebih besar dari iterasi yang ditetapkan. Pada program diatas masih ada beberapa
kekurangan seperti proses tidak berhenti samapai iterasi lebih besar dari iterasi yang
ditetapkan dimana iterasi yang ditetapkan yaitu empat (4) akan tetapi pada program
ini iterasi samapai iterasi ke enam yang seharusnya sampai iterasi ke lima saja.
Sehingga dirasa aplikasi yang dibuat masih jauh dari sempurna dikarenakan
keterbatasan waktu dan faktor lainnya.
3.2 Toolbox FCM
Matlab menyediakan sebuah alat yang dapat digunakan menghitung fuzzy c
means tanpa perlu membuat sebuah kode program yang rumit. Untuk membuka
toolbox ini dapat dilakukan dengan mengetik perintah fcmdemo atau klik dua kali
pada paket toolbox ini sehingga akan muncul tampilan alat bantu seperti gambar 6.
Pada gambar 6 terlihat disana memilih dataset atau sample data yang akan
digunakan. Jika memiliki dataset sendiri maka dapat memilih pilihan custom yang
akan membuka dataset yang kita miliki.
Gambar 6. Tampilan Utama Toolbox FCM
Gambar 7. Tampilan Pemilihan File Dataset
Pada gambar 8 dapat dilihat pemilihan jumlah cluster yang akan kita gunakan.
Gambar 8. Tampilan Pemilihan Cluster
Dapat dilihat tampilan dengan menggunakan 2 cluster pada gambar 9.
Gambar 9. Tampilan Dengan 2 Cluster
Untuk menampilkan grafik plot dari cluster, kita memilih cluster yang ingin dilihat
kemudian menekan tombol Plot MF untuk menampilkannya.
Gambar 10. Tampilan Hasil dengan 6 Cluster
Pada gambar 11 ditampilkan Plot pada cluster 3
Gambar 11. Tampilan Grafik Keanggotaan
Gambar 12. Tampilan Grafik Keanggotaan pada Cluster ke 2
4. Simpulan
Adapun simpulan yang didapat dari pembuatan laporan dan aplikasi Fuzzi C
Means adalah sebagai berikut:
1. Fuzzy C Means merupakan suatu teknik pengclusteran data yang keberadaan
setiap titik data dalam suatu cluster ditentukan oleh derajat keanggotaan.
2. Konsep dasar FCM yaitu menentukan pusat cluster, yang akan menandai
lokasi rata-rata untuk setiap cluster.
3. Pembuatan program FCM dengan menggunakan Matlab cukup mudah karena
dibantu tools yang sudah ada akan tetapi masih ada beberapa fungsi yang harus
dibuat sesuai logika dan rumus yang sudah ada.
4. Program FCM masih agak jauh dari sempurna dikarenakan kekurangan waktu
dan sumber data yang cukup minim.
DAFTAR PUSTAKA
http://www.mathworks.com/help/fuzzy/fcm.html tanggal akses 25 mei 2014
http://sariberbagiilmu.blogspot.com/2011/05/fuzzy-c-means.html tanggal 23 mei
2014
http://informatika.web.id/metode-fuzzy-c-means-clustering.htm tanggal akses 25 mei
2014