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