• Tidak ada hasil yang ditemukan

6.1 Kesimpulan

Kesimpulan yang dapat diambil dari penelitian analisa perbandingan algoritma

Naïve Bayesdan KNN untuk studi data “Wisconsin Diagnosis Breast Cancer” adalah :

1. Algoritma Naïve Bayes mempunyai akurasi yang lebih akurat bila dibandingkan dengan algoritma KNN dalam mengklasifikasi data wisconsin diagnosis breast cancer.

2. Algoritma Naïve Bayes lebih cepat waktu prosesnya bila dibandingkan algoritma KNN dalam mengklasifikasikan data wisconsin diagnosis breast cancer.

3. Dalam mengklasifikasikan data wisconsin diagnosis breast cancer penulis lebih menyarankan algoritma Naïve Bayes untuk dipakai dalam proses klasifikasi jika dibandingkan algoritma KNN.

6.2 Saran

Sebagai akhir dari penelitian ini, peneliti menyampaikan beberapa saran yang diharapkan dapat berguna bagi kepentingan pihak-pihak terkait. Saran tersebut ditujukan untuk mahasiswa dan peneliti lain. Saran tersebut antara lain:

1. Bagi Mahasiswa

Diharapkan penelitian ini dapat membantu mahasiswa dalam pembelajaran berkaitan dengan algoritma yang diteliti.

2. Bagi Peneliti lain

Pembahasan dalam penelitian ini terbatas pada ketiga algoritma saja yaitu (1)K-Nearest Neighbor dan (2) Naive Bayes diharapkan peneliti selanjutnya dapat meneliti algoritma-algoritma lain ataupun dataset lain.

DAFTAR PUSTAKA

Ian H. Witten, Eibe Frank, Mark A. Hall.(2011) Data Mining: Practical Machine Learning Tools and Techniques (Third Edition), Morgan Kaufmann.

Jiawei Han, Micheline Kamber (2006). Data Mining: concept and techniques. San Francisco: Elsevier Inc.

Kamath, Chandrika. (2009). Scientific Data Mining: a practical perspective. Philadelpia: Society for Industrial and Applied Mathematics.

Larose, Daniel T. (2006). Data Mining: methods and models. New Jersey: John Wiley & Sons, Inc.

Malau, Renaldo. (2015). “Perbandingan Akurasi Algoritma Naive Bayes

Classifier dan Algortima Bayesian Belief Network dalam mengklasifikasi mahasiswa

Universitas Sanatha Dharma Program Studi Teknik Informatika”. Skripsi. Yogyakarta: Teknik Informatika Sanata Dharma.

Megantari, Irene.(2007). “Evalusi pemilihan dan penggunaan antibiotika pada pasien kanker payudara pasca kemotrapi di RSUP.Dr.Sardjito Yogyakarta”.

Skripsi.Yogyakarta: Farmasi Sanata Dharma.

Pal, Sankar K., dan Mitra, Pabitra.(2004). Pattern Recognition Algorithms for Data Mining. Florida: Chapman and Hall/CRC.

Pang-Ning Tan, Michael Steinbach, Vipin Kumar.(2006). Introduction to Data Mining.Boston: Pearson Education, Inc.

Richard O. Duda; Peter E. Hart; David G. Stork.(2006). Pattern Classification. Canada: John Wiley & Sons, Inc.

Santosa Budi (2007), Data Mining: Teknik Pemanfaatan Data Untuk Keperluan Bisnis. Yogyakarta: Graha Ilmu.

LAMPIRAN I SKENARIO USE CASE

Nama Use

Case

Menentukan Jumlah Fold Deskripsi Use

Case

Use case ini digunakan untuk menentukan jumlah fold yang akan digunakan dalam proses cross validation.

Pra Kondisi Data telah diimpor Langkah

Umum

Kegiatan Aktor Respon Sistem

1. Pengguna mengisikan angka di edit text fold.

2. Sistem mengeset angka yang telah diganti sebagai fold.

Alternatif -

Kesimpulan Use case ini berhenti apabila telah memasukkan angka di edit text, dan menekan tombol proses.

Nama Use

Case

Mengimpor data Deskripsi Use

Case

Use case ini digunakan untuk memasukkan data kedalam sistem menggunakan file berekstensi .data. Data yang dimasukkan akan ditambang dengan menggunakan algoritma NB, dan KNN.

Pra Kondisi -

Langkah Umum

Kegiatan Aktor Respon Sistem

1. Pengguna menekan tombol open

2. Sistem menampilkan kotak dialog open file

3. Pengguna memilih file dan menekan tombol open

menampilkannya letak file nya ke label.

Alternatif -

Kesimpulan Use case ini berhenti apabila data telah masuk dan terbaca disistem. Nama Use Case Melakukan klasfikasi Deskripsi Use Case

Use case ini digunakan untuk melakukan proses klasifikasi dan menghitung akurasi. Pengguna dapat melihat hasil akurasi yang dihasilkan.

Pra Kondisi - Data telah dimasukkan kedalam sistem.

- Jumlah fold telah ditentukan Langkah

Umum

Kegiatan Aktor Respon Sistem

1. Pengguna memilih algoritma yang akan digunakan.

2. Pengguna menekan tombol proses

3. Sistem menampilkan hasil akurasi, dan waktu proses .

Alternatif -

LAMPIRAN II DIAGRAM AKTIVITAS 1. Diagram Aktivitas Mengimpor Data

AKTOR SISTEM

Klik tombol Open

Menampilkan kotak Open File Memilih file dalam drive

lalu menekan tombol Open

Sesuai format Tampilkan data Tampilkan pesan error Yes No mulai selesai

2. Diagram aktivitas memilih fold

AKTOR SISTEM

3. Diagram aktivitas melakukan klasifikasi

AKTOR SISTEM

Pengguna memasukkan angka di edit text fold

Mengeset angka yang di ubah sebagai jumlah fold mulai

selesai

mulai Memilih algoritma yang

hendak digunakan dan menekan tombol proses

Meanampilkan hasil akurasi, dan waktu proses

LAMPIRAN III Flowchart Alur Sistem

Start Pilih dataset Masukkan jumlah fold Memilih klasifikasi Naive Bayes Clasifier KNN End Ya Proses dengan klasifikasi Naive Bayes Classifier dan

menampilkan tingkat akurasi dan waktu proses

Proses dengan klasifikasi KNN dan menampilkan tingkat akurasi dan waktu Ya Ya Ya Ya Tidak Tidak Tidak Tidak Tidak

LAMPIRAN IV

ALGORITMA PROSES KLASIFIKASI 1. K-Nearest Neighbor

A. Menghitung Euclidean Distance

a. Nama Kelas:EuclideanDistance.java

b. Nama Method: UkurdgnEuclid(Instance,Instance)

c. Fungsi Method: Untuk melakukan proses perhitungan jarak dengan euclidean distance.

d. Algoritma :

1. Cek jika x.noAttributes() != y.noAttributes(), jika ya maka tampilkan "Kedua atribut harus berupa angka".

2. Deklarasikan sum bertipe double.

3. Untuk i=0, dan memenuhi syarat i < x.noAttributes() lakukan langkah 4. 4. Cek jika !Double.isNaN(y.value(i)) && !Double.isNaN(x.value(i), jika ya maka lakukan sum += (y.value(i) - x.value(i)) * (y.value(i) - x.value(i). 5. Kembalikan nilai Math.sqrt(sum).

B. Menghitung Jarak Terdekat

a. Nama Kelas: DefaultDataset.java

b. Nama Method: kNearest(Instance,DistanceMeasure) c. Fungsi Method: Mencari jarak yang terdekat antara 2 titik. d.Algoritma:

1. Deklarasikan variabel closest bertipe Map<Instance,Double>. 2. Deklarasikan variabel Max bertipe double.

3. Selama tmp masih bagian dari dataset Lakukan langkah 4-6.

4. Cari jarak terdekat menggunakan method euclidean distance pada kelas EuclideanDistance.

5. Cek jika dm.compare(d, max) && !inst.equals(tmp), jika ya maka closest.put(tmp, d).

6. Cek jika closest.size() > k, jika ya maka max = removeFarthest(closest,dm). 7. Kembalikan hasil closest.keySet().

C. Menghitung Kelas Distribusi KNN a. Nama Kelas:KnearestNeighbors.java

b. Nama Method: KelasDistribusi(Instance,Instance) c. Fungsi Method: Menampilkan hasil klasifikasi. d. Algoritma:

1. Cek jika training==null, berikan hasil "Kelas Tranining anda null". 2. Deklarasikan variabel neighbors bertipe Set<instance>.

3. Deklarasikan variabel out bertipe HashMap<Object, Double>. 4. Selama Object o : training.classes(), lakukan out.put(o,0.0)

5. Selama Instance i : neighbors, lakukan out.put(i.classValue(), out.get(i.classValue()) + 1)

6. Kembalikan nilai out. 2. Naive Bayes

A. Menghitung Kelas Frekuensi

a. Nama Kelas:AbstractBayesianClassifier.java b. Nama Method:HitungFreqKelas(Dataset)

c. Fungsi Method:Menghitung Frekuensi dari suatu Kelas d. Algoritma:

1. Deklarasikan FrekuensiKelas bertipe double[].

2. Untuk i=0, dan selama memenuhi i<numClasses lakukan FrekuensiKelas[i] = 0.

3. Selama Instance inst : Instances2Train lakukan

FrekuensiKelas[Classname2IndexCCountermap.get(inst.classValue())]++. 4. Kembalikan nilai FrekuensiKelas.

B. Menghitung Probabilitas Kelas

a. Nama Kelas:AbstractBayesianClassifier.java b. Nama Method:HitungProbsKelas()

c. Fungsi Method:Menghitung Probabilitas Kelas d. Algoritma:

2. Untuk k=0, dan selama k<numClasses lakukan probs[k] = (freq[k] + 1) / (numInstances + numClasses).

3. Kembalikan nilai probs.

C. Menghitung Kelas Distribusi Naïve Bayes a. Nama Kelas:NaiveBayesClassifier.java b. Nama Method:HitungProbs(Instance)

c. Fungsi Method:Menampilkan hasil klasifikasi d. Algoritma:

1. Deklarasikan variabel out bertipe HashMap<Object, Double>. 2. Deklarasikan variabel featureName_HT bertipe Hashtable<Integer,

Hashtable<Double, ClassCounter>>. 3. Deklarasikan freq bertipe double[]. 4. Deklarasikan total bertipe double.

5. Untuk k=0 , dan selama memenuhi syarat k<numClasses lakukan langkah 6- 13.

6. Deklarasikan denominator bertipe double. 7. Deklarasikan classScore bertipe double.

8. Selama Object key : featureName_HT.keySet(), lakukan langkah 9-11. 9. Deklarasikan featureName dan numValues bertipe integer.

10.Deklarasikan featureValue dan numerator bertipe double.

11.Lakukan classScore += fnc.log2(numerator + 1) - fnc.log2(denominator + numValues).

12.Lakukan out.put(classes[k], classScore).

13.Lakukan total = total + Math.pow(2,classScore).

14.Untuk l=0 , dan selama l<classes.length lakukan langkah 15-16. 15.Deklarasikan classScore bertipe double.

16.Lakukan out.put(classes[l], Math.pow(2.0,(classScore-fnc.log2(total)))). 17.Kembalikan nilai out.

3. Cross Validation

A. Algoritma Cross Validation

a. Nama Kelas: CrossValidation.java

b. Nama Method: crossValidation(Dataset,int,Random)

c. Fungsi Method: Untuk mengevaluasi suatu klasifikasi dengan teknik cross validation.

d. Algoritma:

1. Deklarasikan folds bertipe Dataset[].

2. Deklarasikan out bertipe Map<Object, PerformanceMeasure>.

3. Selama Object o : data.classes(), lakukan out.put(o, new PerformanceMeasure()).

4. Untuk i=0, dan selama memenuhi i<numFolds lakukan langkah 5-16 5. Deklarasikan variable validation dan training bertipe Dataset.

6. Untuk j=0, dan selama memenuhi j<numfolds lakukan langkah 7-16. 7. Cek jika j!=I, jika ya maka lakukan training.addAll(folds[j]).

8. Jalankan method classifier.buildClassifier(training) pada kelas Classifier. 9. Selama Instance instance : validation lakukan langkah 10-16.

10.Deklarasikan variable prediction bertipe object

11.Cek jika instance.classValue().equals(prediction), jika ya maka lakukan langkah 12-13, dan jika tidak lakukan langkah 14-16.

12.Selama instance.classValue().equals(prediction), lakukan langkah 13.

13.Cek jika o.equals(instance.classValue()) lakukan jika ya maka out.get(o).tp++, dan jika tidak maka out.get(o).tn++

14.Selama Object o : out.keySet() lakukan langkah 15 -16. 15.Cek jika prediction.equals(o), jika ya maka out.get(o).fp++.

16.Cek jika o.equals(instance.classValue()), jika ya maka out.get(o).fn++, jika tidak maka out.get(o).tn++.

17.Kembalikan nilai out B. Algoritma Hitung Akurasi

a. Nama Kelas: PerformanceMeasure.java b. Nama Method: getAkurasi()

c. Fungsi Method: Menghitung akurasi dari suatu klasifikasi. d. Algoritma:

LAMPIRAN V HASIL AKURASI

1. Hasil akurasi K-Nearest Neighbor 3-fold cross validation

3. Hasil akurasi K-Nearest Neighbor 10-fold cross validation

5. Hasil akurasi K-Nearest Neighbor 20-fold cross validation

7. Hasil akurasi Naive Bayes 5-fold cross validation

9. Hasil akurasi Naive Bayes 15-fold cross validation

Dokumen terkait