Kelompok1_FCM(1)

27
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

description

dfgfhjkljhgdfghjkljhgfghjkhjgkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhk

Transcript of Kelompok1_FCM(1)

Page 1: 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

Page 2: Kelompok1_FCM(1)

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

Page 3: Kelompok1_FCM(1)

(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.

Page 4: Kelompok1_FCM(1)

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

Page 5: Kelompok1_FCM(1)

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)

Page 6: Kelompok1_FCM(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:

Page 7: Kelompok1_FCM(1)

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

Page 8: Kelompok1_FCM(1)

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

Page 9: Kelompok1_FCM(1)

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

Page 10: Kelompok1_FCM(1)

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

Page 11: Kelompok1_FCM(1)

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

Page 12: Kelompok1_FCM(1)

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

Page 13: Kelompok1_FCM(1)

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.

Page 14: Kelompok1_FCM(1)

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.

Page 15: Kelompok1_FCM(1)

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.

Page 16: Kelompok1_FCM(1)

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

Page 17: Kelompok1_FCM(1)

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

Page 18: Kelompok1_FCM(1)

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

Page 19: Kelompok1_FCM(1)

Gambar 12. Tampilan Grafik Keanggotaan pada Cluster ke 2

Page 20: Kelompok1_FCM(1)

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.

Page 21: Kelompok1_FCM(1)

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