i
KLASIFIKASI NILAI MATA KULIAH ALGORITMA DAN PEMROGRAMAN BERDASARKAN FAKTOR LINGKUNGAN
MENGGUNAKAN METODE NAÏVE BAYES
SKRIPSI
Diajukan untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer
Program Studi Informatika
Oleh:
Putu Intan Hasri Putri 165314103
PROGRAM STUDI INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA YOGYAKARTA
2021
ii
CLASSIFICATION OF ALGORITHM AND PROGRAMMING RESULT BASED ON ENVIRONMENTAL FACTORS USING
NAÏVE BAYES METHOD
THESIS
Present as Partial Fulfillment of the Requirements for Obtain Sarjana Komputer Degree
in Informatics Study Program
Created by : Putu Intan Hasri Putri
165314103
INFORMATICS STUDY PROGRAM
FACULTY OF SCIENCE AND TECHNOLOGY SANATA DHARMA UNIVERSITY
YOGYAKARTA
2021
iii
HALAMAN PERSETUJUAN PEMBIMBING SKRIPSI
KLASIFIKASI NILAI MATA KULIAH ALGORITMA DAN PEMROGRAMAN BERDASARKAN FAKTOR LINGKUNGAN
MENGGUNAKAN METODE NAÏVE BAYES
Oleh:
Putu Intan Hasri Putri 165314103
Telah disetujui oleh :
Dosen Pembimbing
Agnes Maria Polina, S.Kom., M.Sc. Tanggal : ………
iv
HALAMAN PENGESAHAN SKRIPSI
KLASIFIKASI NILAI MATA KULIAH ALGORITMA DAN PEMROGRAMAN BERDASARKAN FAKTOR LINGKUNGAN
MENGGUNAKAN METODE NAÏVE BAYES
Dipersiapkan dan ditulis oleh : PUTU INTAN HASRI PUTRI
165314103
Telah dipertahankan di depan Panitia Penguji Pada tanggal ……….
Dan dinyatakan memenuhi syarat
Susunan Panitia Penguji
Nama Lengkap Tanda Tangan
Ketua Dr. Ir. Anastasia Rita Widiart …….………
Sekretaris Ir. Kartono Pinaryanto, S.T., M.Cs. ………
Anggota Agnes Maria Polina, S.Kom., M.Sc. ………
Yogyakarta, ……….
Fakultas Sains dan Teknologi Universitas Sanata Dharma
Dekan,
Sudi Mungkasi, Ph.D
v
HALAMAN PERSEMBAHAN
“Like a kidult, I will spread my young wings.”
(Seventeen Stray Kids)
Skripsi ini saya persembahkan kepada :
Papa, Mama, Yoyong, para insan berharga serta
Tan Fei Yin
vi
HALAMAN KEASLIAN KARYA
Saya menyatakan dengan sesungguhnya bahwa skripsi yang saya tulis ini tidak memuat karya atau bagian karya orang lain, kecuali yang telah disebutkan dalam daftar pustaka, sebagaimana layaknya karya ilmiah.
Yogyakarta, ……….
Penulis
Putu Intan Hasri Putri
vii ABSTRAK
Pemrograman adalah salah satu dasar yang harus dimiliki oleh mahasiswa Informatika. Program Studi Informatika Universitas Sanata Dharma Yogyakarta memiliki mata kuliah pemrograman dasar yaitu Algoritma dan Pemrograman. P. Cortez dan A. Silva (2008) menyatakan bahwa terdapat faktor lingkungan yang dapat mempengaruhi nilai mata pelajaran siswa.
Penulis berpikir bahwa dengan mengetahui beberapa faktor terkait lingkungan yang dapat mempengaruhi nilai mata kuliah Algoritma dan Pemrograman, maka mahasiswa baru dapat menentukan langkah terbaik agar dapat berhasil dalam mata kuliah tersebut. Terdapat total 260 data faktor lingkungan dengan 23 atribut yang penulis ambil dari mahasiswa Informatika 2016, 2017, 2018, dan 2019. Penulis menggunakan metode Naïve Bayes dalam mengklasifikasikan nilai mata kuliah Algoritma dan Pemrograman dan menggunakan fold bernilai 5. Pengujian dilakukan dengan mengubah jumlah atribut yang digunakan sehingga diperoleh akurasi tertinggi. Dari hasil pengujian 260 data diperoleh akurasi tertinggi sebesar 89.6154% dengan total 5 atribut menggunakan 5-fold cross validation. Adapun 5 faktor lingkungan yang paling mempengaruhi nilai Algoritma dan Pemrograman adalah studyT, hangOut, freeT, usdReason, dan famRel.
Kata kunci : Naïve Bayes, faktor lingkungan, nilai mata kuliah, Algoritma dan Pemrograman
viii ABSTRACT
Programming is the basic that must-have for Informatics students. In respect of it, the Informatics Study Program at Sanata Dharma University Yogyakarta has the basic programming subjects, which is the Algorithm and Programming. P. Cortez and A. Silva (2008) stated that there are environmental factors relevant to the results of the student’s subjects. By acknowledging those environmental factors of the new students, the researcher is capable of figuring out the best move which would assist the new students in providing the goal in this subject. There is a total of 260 environmental factors data with 23 attributes taken from the students of Informatics of 2016, 2017, 2018, and 2019. In this study, the researcher involves the Naïve Bayes method of classifying the results of the subjects of the Algorithm and Programming by using a 5-value fold. Testing was done by changing the number of attributes used to provide the highest accuracy. With 260 tested data, resulting in the highest accuracy value of 89.6154%% on the number of attributes 5. The 5-most influence attributes are studyT, hangOut, freeT, usdReason, and famRel.
Key words : Naïve Bayes, the environmental factors, the results of student’s subjects, Algorithm and Programming
ix
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI
KARYA ILMIAH UNTUK KEPERLUAN KEPENTINGAN AKADEMIS
Yang bertanda tangan di bawah ini, saya mahasiswa Universitas Sanata Dharma : Nama : Putu Intan Hasri Putri
NIM : 165314103
Demi pengembangan ilmu pengetahuan, saya memberikan kepada Perpustakaan Universitas Sanata Dharma karya ilmiah saya yang berjudul :
KLASIFIKASI NILAI MATA KULIAH ALGORITMA DAN PEMROGRAMAN BERDASARKAN FAKTOR LINGKUNGAN
MENGGUNAKAN METODE NAÏVE BAYES
Dengan demikian saya memberikan kepada Perpustakaan Universitas Sanata Dharma untuk menyimpan, mengalihkan dalam bentuk media lain untuk kepentingan akademis tanpa perlu meminta ijin dari saya maupun royalty kepada saya selama tetap mencantumkan nama saya sebagai penulis.
Demikian pernyataan ini saya buat dengan sebenarnya Dibuat di Yogyakarta
Pada tanggal ………..
Putu Intan Hasri Putri
x
KATA PENGANTAR
Puji syukur senantiasa penulis panjatkan ke hadirat Tuhan atas rahmat dan berkat sehingga penulis mampu menuntaskan skripsi ini. Penyelesaian skripsi ini juga tidak lepas dari bimbingan, dukungan, bantuan, serta doa dari berbagai pihak.
Maka dari itu penulis ingin mengucapkan terima kasih di kesempatan kali ini kepada :
1. Papa, Mama, dan Yoyong atas limpahan kasih sayang tak terhingga serta doa tiada henti yang menjadi alasan penulis untuk menyelesaikan skripsi ini.
2. Ibu Agnes Maria Polina, S.Kom., M.Sc. selaku pembimbing skripsi, Bapak Eduardus Hardika Sandy Atmaja, S.Kom., M.Cs. selaku pembimbing metode penelitian, serta Ibu Paulina Heruningsih Prima Rosa, M.Sc. selaku dosen pembimbing akademik.
3. Bapak Sudi Mungkasi, P.hD selaku Dekan Fakultas Sains dan Teknologi Universitas Sanata Dharma Yogyakarta dan bapak Robertus Adi Nugroho, S.T., M.Eng. selaku Ketua Program Studi Informatika Universitas Sanata Dharma Yogyakarta.
4. Segenap dosen dan karyawan baik tingkat program studi, fakultas, dan universitas.
5. Keluarga Tan Kian Tik dan keluarga Dinasti Pasek atas dukungannya serta om Bleky sebagai mentor penulis.
6. Mahasiswa Informatika angkatan 2016, 2017, 2018, dan 2019 atas partisipasinya dalam pengumpulan data penelitian penulis. Terkhusus angkatan 2016 yang sudah menjadi teman seperjuangan penulis.
7. TEARS, Glitzy, dan BEM FST 2018 atas pengalaman berorganisasi dan kekeluargaan yang luar biasa.
8. LB’s++ dan 5eikat atas dukungan sekala-niskala dari Pulau Dewata.
9. Toileterzzz (Palen dan Chunchun) yang sudah menjadi lingkaran terdalam dari fajar tunas hingga detik senja di bangku kuliah serta Bundra sebagai
xi partner kesehatan mental penulis.
10. Poo’s Angels (ex Ed’s Angels) dan Regu ~ (infinite) yang sudah jatuh bangun bersama selama masa pembuatan proposal, awal serta pertengahan pembuatan skripsi.
11. John F. Kennedy, Jung Yunho, Suppasit Jongcheveevat, Christopher Bahng, serta Choi Seungcheol yang menjadi inspirasi penulis.
12. Prism Refraction dari berbagai server dunia yang menjadi penyemangat dan motivasi penulis.
13. Paguyuban Dewa Timur, Truna-Truni Tujuh Belas, Persatuan Anak-Anak Nyasar, dkk yang selalu menghibur penulis pada kala suka dan duka.
Terkhusus untuk mas Junaedi dan dik Ayen.
14. Mbah Redto yang sudah menemani penulis selama 7 tahun lamanya sebagai perangkat utama dalam pembelajaran.
15. Seluruh insan yang bertanya “Kapan sidang?”.
16. Pihak-pihak yang turut membantu penulis yang tidak dapat disebutkan satu persatu.
17. Terakhir untuk Feiyin yang akan menyerah waktu itu. Lihat sekarang lu udah ada di titik ini. Buang nafas lu dan tarik lagi untuk langkah selanjutnya.
Penulis menyadari masih banyak kekurangan yang perlu diperbaiki pada skripsi ini. Maka dari itu saran dan kritik yang sekiranya dapat membangun dari pembaca, sangatlah penulis harapkan. Semoga skripsi ini berguna bagi semua pihak yang memerlukan.
xii
DAFTAR ISI
Halaman Persetujuan Pembimbing Skripsi ... iii
Halaman Pengesahan Skripsi ... iv
Halaman Persembahan ... v
Halaman Keaslian Karya ... vi
Abstak ... vii
Abstract ... viii
Lembar Pernyataan Persetujuan Publikasi ... ix
Kata Pengantar ... x
Daftar Isi ... xii
Daftar Tabel ... xiv
Daftar Gambar ... xvi
BAB I. PENDAHULUAN ... 1
1.1 Latar Belakang ... 1
1.2 Rumusan Masalah ... 2
1.3 Tujuan ... 2
1.4 Manfaat ... 3
1.5 Batasan Masalah ... 3
1.6 Sistematika Penulisan ... 4
BAB II. LANDASAN TEORI ... 5
2.1 Deskripsi Mata Kuliah Sebagai Landasan Studi Kasus ... 5
2.2 Penambangan Data ... 5
2.3 Klasifikasi ... 7
2.4 Naïve Bayes ... 7
2.5 Laplace Correction ... 9
2.6 Cross Validation ... 9
2.7 Confusion Matrix ... 10
BAB III METODE PENELITIAN... 11
3.1 Data Penelitian ... 11
3.2 Desain Alat Uji ... 17
3.3 Spesifikasi Alat Penelitian ... 22
3.4 Desain User Interface ... 23
BAB IV IMPLEMENTASI SISTEM ... 25
4.1 Implementasi Preprocessing ... 25
4.1.1 Transformasi Data ... 25
4.1.2 Seleksi Data ... 26
4.2 Implementasi Naïve Bayes ... 28
4.3 5-fold Cross Validation ... 30
4.4 Confusion Matix dan Akurasi... 31
4.5 Uji Data Kelompok ... 32
4.6 Uji Data Tunggal ... 32
4.7 User Interface Sistem ... 33
xiii
BAB V ANALISA HASIL ... 34
5.1 Uji Validasi ... 34
5.1.1 Perhitungan Manual Naïve Bayes ... 34
5.1.2 Pengujian Sistem Dengan 20 Data ... 52
5.1.3 Pengujian 20 Data dengan Weka Tools ... 55
5.1.4 Evaluasi ... 55
5.2 Uji Akurasi ... 55
5.3 Prediksi ... 56
5.3.1 Uji Data Kelompok ... 56
5.3.2 Uji Data Tunggal ... 58
BAB VI PENUTUP ... 60
6.1 Kesimpulan ... 60
6.2 Saran ... 60
Daftar Pustaka ... 61
Lampiran ... 63
xiv
DAFTAR TABEL
Tabel 2.1 Contoh Confusion Matrix ... 10
Tabel 3.1 Contoh Data ... 13
Tabel 4.1 Contoh Label Data Sebelum Transformasi ... 25
Tabel 4.2 Contoh Label Data Setelah Transformasi ... 25
Tabel 4.3 Peringkat Atribut dari Weka Tools ... 26
Tabel 5.1 Data Hitung Manual ... 34
Tabel 5.2 Pembagian Fold ... 35
Tabel 5.3 Banyak Nilai Atribut studyT Terhadap Kelas (Iterasi 1) ... 36
Tabel 5.4 Banyak Nilai Atribut hangout Terhadap Kelas (Iterasi 1) ... 37
Tabel 5.5 Banyak Nilai Atribut freeTime Terhadap Kelas (Iterasi 1) ... 37
Tabel 5.6 Banyak Nilai Atribut studyT Terhadap Kelas (Iterasi 2) ... 37
Tabel 5.7 Banyak Nilai Atribut hangout Terhadap Kelas (Iterasi 2) ... 37
Tabel 5.8 Banyak Nilai Atribut freeTime Terhadap Kelas (Iterasi 2) ... 38
Tabel 5.9 Banyak Nilai Atribut studyT Terhadap Kelas (Iterasi 3) ... 38
Tabel 5.10 Banyak Nilai Atribut hangout Terhadap Kelas (Iterasi 3) ... 38
Tabel 5.11 Banyak Nilai Atribut freeTime Terhadap Kelas (Iterasi 3) ... 38
Tabel 5.12 Banyak Nilai Atribut studyT Terhadap Kelas (Iterasi 4) ... 39
Tabel 5.13 Banyak Nilai Atribut hangout Terhadap Kelas (Iterasi 4) ... 39
Tabel 5.14 Banyak Nilai Atribut freeTime Terhadap Kelas (Iterasi 4) ... 39
Tabel 5.15 Banyak Nilai Atribut studyT Terhadap Kelas (Iterasi 5) ... 39
Tabel 5.16 Banyak Nilai Atribut hangout Terhadap Kelas (Iterasi 5) ... 40
Tabel 5.17 Banyak Nilai Atribut freeTime Terhadap Kelas (Iterasi 5) ... 40
Tabel 5.18 Laplace Correction – studyTime (Iterasi 1) ... 41
Tabel 5.19 Laplace Correction – hangOut (Iterasi 1)... 41
Tabel 5.20 Laplace Correction – freeTime (Iterasi 1) ... 41
Tabel 5.21 P(studyTime|c) – Iterasi 1 ... 41
Tabel 5.22 P(hangOut|c) – Iterasi 1 ... 42
Tabel 5.23 P(freeTimec) – Iterasi 1 ... 42
Tabel 5.24 P(studyTime|c) – Iterasi 2 ... 42
Tabel 5.25 P(hangOut|c) – Iterasi 2 ... 42
Tabel 5.26 P(freeTimec) – Iterasi 2 ... 43
Tabel 5.27 P(studyTime|c) – Iterasi 3 ... 43
Tabel 5.28 P(hangOut|c) – Iterasi 3 ... 43
Tabel 5.29 P(freeTimec) – Iterasi 3 ... 43
Tabel 5.30 P(studyTime|c) – Iterasi 4 ... 43
Tabel 5.31 P(hangOut|c) – Iterasi 4 ... 44
Tabel 5.32 P(freeTimec) – Iterasi 4 ... 44
Tabel 5.33 P(studyTime|c) – Iterasi 5 ... 44
Tabel 5.34 P(hangOut|c) – Iterasi 5 ... 44
Tabel 5.35 P(freeTimec) – Iterasi 5 ... 44
Tabel 5.36 Data Uji Iterasi 1 ... 45
Tabel 5.37 Kelas Prediksi Data ke-1 ... 46
Tabel 5.38 Kelas Prediksi Iterasi 1 ... 46
Tabel 5.39 Kelas Prediksi Iterasi 2 ... 46
xv
Tabel 5.40 Kelas Prediksi Iterasi 3 ... 46
Tabel 5.41 Kelas Prediksi Iterasi 4 ... 47
Tabel 5.42 Kelas Prediksi Iterasi 5 ... 47
Tabel 5.43 Kelas Asli dan Kelas Prediksi (Iterasi 1) ... 48
Tabel 5.44 Confusion Matrix Iterasi 1 ... 48
Tabel 5.45 Kelas Asli dan Kelas Prediksi (Iterasi 2) ... 48
Tabel 5.46 Confusion Matrix Iterasi 2 ... 49
Tabel 5.47 Kelas Asli dan Kelas Prediksi (Iterasi 3) ... 49
Tabel 5.48 Confusion Matrix Iterasi 3 ... 49
Tabel 5.49 Kelas Asli dan Kelas Prediksi (Iterasi 4) ... 49
Tabel 5.50 Confusion Matrix Iterasi 4 ... 50
Tabel 5.51 Kelas Asli dan Kelas Prediksi (Iterasi 5) ... 50
Tabel 5.52 Confusion Matrix Iterasi 5 ... 50
Tabel 5.53 Akurasi Seluruh Iterasi... 51
Tabel 5.54 Akurasi Berdasarkan Jumlah Atribut ... 55
Tabel 5.55 Percobaan Uji Data Tunggal ... 59
xvi
DAFTAR GAMBAR
Gambar 2.1 5-Fold Cross Validation ... 9
Gambar 3.1 Blanko Kuisioner ... 13
Gambar 3.2 Diagram Blok ... 17
Gambar 3.2 Diagram Flowchart Umum Sistem ... 18
Gambar 3.4 Diagram Flowchart Uji Data Tunggal ... 20
Gambar 3.5 Diagram Flowchart Uji Data Kelompok ... 21
Gambar 3.6 Desain User Interface ... 23
Gambar 4.1 User Interface Sistem ... 33
Gambar 5.1 Hasil Pengujian Validasi Sistem dengan 20 Data ... 52
Gambar 5.2 Confusion Matrix 1 ... 53
Gambar 5.3 Confusion Matrix 2 ... 53
Gambar 5.4 Confusion Matrix 3 ... 53
Gambar 5.5 Confusion Matrix 4 ... 54
Gambar 5.6 Confusion Matrix 5 ... 54
Gambar 5.7 Akurasi Uji Validasi dengan Weka Tools ... 55
Gambar 5.8 Upload dan Tampil Data Uji Data Kelompok ... 57
Gambar 5.9 Hasil Klasifikasi Uji Data Kelompok ... 57
Gambar 5.10 Uji Data Tunggal ... 58
1
BAB I. PENDAHULUAN
1.1 Latar Belakang
Pemrograman adalah salah satu keahlian dasar yang harus dimiliki oleh seorang mahasiswa jurusan Informatika. Program Studi Informatika Universitas Sanata Dharma memiliki mata kuliah pemrograman bagi mahasiswa baru di semester satu yaitu mata kuliah Algoritma dan Pemrograman. Hal ini bertujuan sebagai pembekalan mahasiswa baru untuk mengembangkan kemampuannya sebagai mahasiswa Informatika yang dikenal dengan kemahirannya dalam coding. Nilai pemrograman yang tinggi akan menunjang mahasiswa dapat berhasil dengan baik pula pada mata kuliah di semester berikutnya, terutama mata kuliah yang membutuhkan prasyarat Algoritma dan Pemrograman. Selain itu memungkinkan juga bagi mahasiswa untuk dapat menjadi asisten dosen dan menjadi delegasi untuk lomba pemrograman.
Selain proses pembelajaran yang mahasiswa alami, penulis ingin mengetahui apakah ada faktor lingkungan yang mempengaruhi nilai mata kuliah Algoritma dan Pemrograman bagi mahasiswa Informatika. Analisis pengetahuan oleh model prediksi terbaik menunjukan bahwa ada faktor lingkungan yang relevan yang mempengaruhi nilai siswa seperti alasan memilih sekolah, pekerjaan dan pendidikan orang tua, konsumsi alkohol, ataupun waktu yang dihabiskan bersama teman. Atribut yang ada pada penelitian mereka telah ditinjau oleh para professional sekolah dan diujikan kepada kelompok kecil berisikan 15 siswa untuk mendapatkan umpan balik (Cortez, P. dan A. Silva. 2008).
Penulis berpikir bahwa dengan mengetahui beberapa faktor terkait lingkungan yang dapat mempengaruhi nilai mata kuliah Algoritma dan Pemrograman, maka mahasiswa baru dapat menentukan langkah yang terbaik agar dapat berhasil dalam mata kuliah Algoritma dan Pemrograman.
Selain itu perlu diteliti seberapa besar faktor lingkungan tersebut dapat mempengaruhi nilai mata kuliah Algoritma dan Pemrograman mahasiswa
jurusan Informatika Universitas Sanata
Metode Naïve Bayes Classifier dapat bekerja dengan sangat baik dalam melakukan klasifikasi. Merujuk pada penelitian Naziah, et.al (2015) yang berjudul Penerapan Teknik Data Mining Untuk Klasifikasi Ketepatan Waktu Lulus Mahasiswa Informatika Universitas Telkom Menggunakan Algoritma Naive Bayes Classifier, penelitian tersebut mencapai akurasi 86%. Pada jurnal Xhemali (2009), menyatakan bahwa metode Naïve Bayes Classifier mempunyai keakurasian yang lebih baik dibanding model classifier lainnya dimana metode tersebut cepat, konsisten, mudah dalam maintenance, dan akurat.
Mengetahui bahwa faktor lingkungan dari penelitian Cortez, P. dan A.
Silva (2008) dapat mempengaruhi nilai siswa, penulis ingin mengetahui seberapa besar faktor lingkungan tersebut dapat mempengaruhi nilai mata kuliah Alpro mahasiswa jurusan Informatika Universitas Sanata Dharma dalam bentuk klasifikasi menggunakan metode Naïve Bayes.
1.2 Rumusan Masalah
1.2.1 Apakah metode Naïve Bayes dapat melakukan klasifikasi nilai mata kuliah Algoritma dan Pemrograman berdasarkan pengaruh faktor lingkungan?
1.2.2 Berapa akurasi dari klasifikasi nilai mata kuliah Algoritma dan Pemrograman berdasarkan faktor lingkungan?
1.2.3 Faktor lingkungan apa sajakah yang dapat mempengaruhi mahasiswa dalam pencapaian nilai mata kuliah Algoritma dan Pemrograman?
1.3 Tujuan
1.3.1 Mengetahui apakah metode Naïve Bayes dapat melakukan klasifikasi nilai mata kuliah Algoritma dan Pemrograman berdasarkan faktor lingkungan
1.3.2 Mengetahui akurasi dari klasifikasi nilai mata kuliah Algoritma dan
Pemrograman berdasarkan faktor lingkungan menggunakan metode Naïve Bayes.
1.3.3 Mengetahui faktor lingkungan apa sajakah yang mempengaruhi mahasiswa dalam pencapaian nilai mata kuliah Algoritma dan Pemrograman.
1.4 Manfaat
1. Menambah pengetahuan, kemampuan, dan pengalaman penulis dalam mempelajari dan mengimplementasi metode Naïve Bayes.
2. Menjadi referensi bagi pembaca dalam mempelajari dan mengimplementasi metode Naïve Bayes.
3. Menjadi acuan awal bagi Program Studi untuk memberikan perlakuan yang sesuai terhadap mahasiswa baru khususnya dalam kelas mata kuliah Algoritma dan Pemrograman.
1.5 Batasan Masalah
Dalam penelitian yang penulis lakukan memiliki batasan-batasan masalah, sebagai berikut :
1. Atribut dari dataset yang digunakan merujuk pada dataset dari penelitian P. Cortez dan A. Silva. 2008. Using Data Mining to Predict Secondary School Student Performance.
2. Data merupakan data primer dari mahasiswa Informatika Universitas Sanata Dharma angkatan 2016 sampai 2019 yang mana data mengasumsikan kondisi mahasiswa di semester 1.
3. Pengumpulan data menggunakan kuesioner.
4. Metode dalam mengklasifikasikan data adalah metode Naïve Bayes Classifier.
5. Kelas yang digunakan hanya kelas A, B, dan C sesuai dengan data yang penulis dapatkan.
1.6 Sistematika Penulisan BAB I Pendahuluan
Bab ini menguraikan mengenai latar belakang masalah, rumusan masalah, batasan masalah, tujuan penelitian, dan sistematika penulisan.
BAB II Landasan Teori
Bab ini menguraikan dan menjelaskan mengenai teori-teori yang berkaitan dengan judul dan masalah topik yang dibahas, meliputi Deskripsi Mata Kuliah Sebagai Landasan Studi Kasus, Penambangan Data, Klasifikasi, Naïve Bayes, Laplace Correction, Cross Validation, dan Confusion Matrix.
BAB III Metode Penelitian
Bab ini menguraikan mengenai langkah-langkah rencana yang dilakukan dalam penelitian ini seperti cara memperoleh, mengolah, menganalisis data, beserta rancangan sistem yang akan penulis bangun menggunakan metode Naïve Bayes Classifier.
BAB IV Implementasi Sistem
Bab ini menguraikan mengenai hal-hal yang berhubungan dengan implementasi sistem berdasarkan perancangan sistem yang telah dibuat.
BAB V Analisis Hasil
Bab ini menguraikan mengenai analisa pengujian sistem serta hasil implementasi program dari sistem yang telah dibuat.
BAB VI Kesimpulan
Bab ini berisi kesimpulan serta saran untuk pengembangan penelitian.
5
BAB II. LANDASAN TEORI
2.1 Deskripsi Mata Kuliah Sebagai Studi Kasus
Algoritma dan Pemrograman (Alpro) adalah mata kuliah pemrograman pertama yang para mahasiswa dapatkan di semester I program studi Informatika Universitas Sanata Dharma Yogyakarta. Mata kuliah yang menggunakan Java sebagai bahasa pemrogramannya ini akan menjadi landasan dari mata kuliah pemrograman lainnya seperti Pemrograman Berorientasi Obyek 1 dan 2, Struktur Data Linier, Struktur Data Non Linier, dan lain sebagainya (Priyatma, 2018).
Sesuai dengan nama mata kuliahnya, Alpro membahas mengenai bagaimana menyusun suatu algoritma yang dapat memecahkan suatu permasalahan. Mata kuliah ini juga mengajarkan dasar-dasar yang mahasiswa perlukan dalam melakukan pemrograman seperti komponen utama dalam pemrograman yaitu data dan perintah, ataupun mengenai proses persyaratan (if, else) dan perulangan (for, while).
2.2 Penambangan Data
Penambangan Data (Data Mining) atau Knowledge Discovery in Databases (KDD) adalah suatu proses pengumpulan dan pemakaian data untuk menemukan pola hubungan dan informasi yang berguna dalam set data yang berskala besar. Adapun proses KDD (Han dan Kamber, 2006), meliputi :
1. Pembersihan data
Pada tahap ini terjadi proses untuk menghilangkan noise dan data yang tidak relevan. Pembersihan data atau data cleaning termasuk proses membersihkan dan memperbaiki missing values ataupun membuang duplikasi data.
2. Integrasi data
Pada tahap data integration ini terjadi proses penggabungan data dari berbagai sumber data yang berbeda.
3. Seleksi data
Data selection ini adalah proses memilih atribut atau data yang relevan untuk penambangan data dari kumpulan data yang ada.
4. Transformasi data
Pada tahap transformation ini, data yang telah diseleksi diubah menjadi bentuk yang sesuai yang diperlukan dalam proses penambangan data.
5. Penambangan data
Pada tahap data mining ini dilakukan proses pencarian informasi dengan pengaplikasian metode tertentu.
6. Evaluasi pola
Pattern evaluation ini adalah proses untuk mengidentifikasi pola informasi berdasarkan ukuran yang diberikan.
7. Presentasi pengetahuan
Pada langkah Knowledge presentation ini dilakukan proses untuk menyajikan visualisasi yang mudah dipahami oleh pengguna.
Metode penambangan data dapat dibedakan menjadi enam kelompok yang didasarkan pada teknik dan tugas yang dilakukan, antara lain (Kusrini
& Luthfi, 2009) : 1. Deskripsi
Dalam deskripsi, tugas utamanya adalah untuk menggambarkan pola dan kecenderungan yang ada dalam data. Deskripsi juga memberikan kemungkinan penjelasan untuk suatu kecenderungan atau pola.
2. Klasifikasi
Klasifikasi adalah pembedaan kelas data dalam beberapa kategori dengan tugas utamanya untuk memperkirakan kelas dari objek
yang tidak ketahui labelnya.
3. Estimasi
Hampir sama dengan klasifikasi, estimasi mengelompokan data dengan variabel target adalah numerik bukan kategori.
4. Prediksi
Prediksi juga hampir sama denga klasifikasi dan estimasi. Prediksi akan menghasilkan nilai yang merujuk ke masa yang akan datang.
5. Klaster
Klaster adalah pengelompokan data yang memiliki kemiripan satu sama lain ke dalam satu kelompok.
6. Asosiasi
Dalam dunia bisnis, asosiasi lebih sering disebut dengan analisis keranjang belanja. Asosiasi memungkinkan untuk menemukan suatu hubungan antara atribut tertentu dalam satu waktu.
2.3 Klasifikasi
Klasifikasi menurut Kamus Besar Bahasa Indonesia adalah penggolongan sistematis dalam kelompok-kelompok menurut standar yang ditetapkan. Klasifikasi dapat diartikan sebagai proses memasukan suatu objek data ke dalam kelompok tertentu dari sejumlah kelompok yang ada.
Pendekatan ciri suatu kelompok adalah acuan dari klasifikasi. Semakin dekat ciri suatu objek dengan ciri suatu kelompok, maka semakin mungkin objek tersebut termasuk ke dalam kelompok tersebut.
2.4 Naive Bayes
Thomas Bayes, seorang ilmuwan Inggris mengemukakan metode pengklasifikasian yang diberi nama sesuai dengan namanya yaitu metode Naïve Bayes. Metode ini secara sederhana memprediksi peluang di masa depan berdasarkan pengalaman di masa sebelumnya. Pengklasifikasian ini mengasumsikan bahwa seluruh atribut tidak saling tergantung atau independen (Patil, 2013). Seluruh atribut yang terlibat akan memberikan
kontribusi dalam pengambilan keputusan dengan bobot atribut yang sama penting (Kusumadewi, 2009). Persamaan Naive Bayes dituliskan pada persamaan 2.1.
Keterangan :
x : Data dengan kelas yang belum diketahui c : Hipotesis data merupakan suatu kelas spesifik
P(c|x) : Probabilitas hipotesis c terhadap kondisi x (posteriori probability) P(c) : Probabilitas hipotesis c (prior probability)
P(x|c) : Probabilitas berdasarkan kondisi x pada hipotesis c P(x) : Probabilitas x
Proses klasifikasi Naïve Bayes memerlukan beberapa petunjuk untuk menentukan kelas mana yang sesuai dengan sample yang dianalisis (Saleh, 2015). Maka dari itu metode Naïve Bayes dapat disesuaikan menjadi persamaan 2.2 di bawah ini.
Pada persamaan 2.2, variabel c merepresentasikan kelas dan variabel f1…fn merepresentasikan karakteristik petunjuk yang diperlukan dalam klasifikasi.
Persamaan 2.2 menjelaskan bahwa peluang sample karakteristik tertentu dalam kelas c (Posterior) sama dengan peluang munculnya kelas c (Prior) dikali dengan peluang munculnya karakteristik sample pada kelas c (Likehood), lalu dibagi dengan peluang munculnya karakteristik sample secara global (Evidence). Maka dari itu, persamaan 2.2 dapat diuraikan menjadi persamaan 2.3.
P (c|x) (2.1)
P(c|f1...fn) (2.2)
P(c|x) = P(c) x P(x1|c) x P(x2|c) x … x P(xn|c) (2.3)
2.5 Laplace Correction
Laplace Correction adalah suatu metode yang dapat ditambahkan di dalam Naïve Bayes untuk mengatasi nilai probabilitas akhir sama dengan 0 (Rizki, Muhammad. 2021). Persamaan Naïve Bayes merupakan proses perkalian yang mana nilai P(xn|c) bisa bernilai 0 dan apa pun yang dikali dengan 0 akan menghasilkan 0. Maka hasil prediksi untuk kelas bisa bernilai 0 semua sehingga tidak bisa membandingkan nilai tertingginya untuk menentukan kelas prediksi. Di sinilah Laplace Correction dapat berfungsi.
Laplace Correction dapat digunakan dalam pencarian P(x|c) dimana setiap perhitungan datanya dapat ditambah 1. Persamaan 2.4 adalah persamaan dari Laplace Correction.
(2.4) Keterangan :
ρi : Probabilitas dari atribut mi
mi : Jumlah sampel dari nilai atribut terhadap kelas sampel k : Jumlah nilai atribut
n : Jumlah masing-masing kelas sampel
2.6 Cross Validation
Pendekatan cross validation atau k-fold cross validation dapat memecah data menjadi k bagian dengan ukuran yang sama. Proses akan berjalan sebanyak k kali dimana setiap proses berjalan, data akan menjadi data uji tepat satu kali dan menjadi data latih sebanyak k-1 kali (Prasetyo, 2014).
Keseluruhan Data
Training Testing
Fold 1 Fold 2 Fold 3 Fold 4 Fold 5 i=1 Fold 1 Fold 2 Fold 3 Fold 4 Fold 5 i=2 Fold 1 Fold 2 Fold 3 Fold 4 Fold 5 i=3 Fold 1 Fold 2 Fold 3 Fold 4 Fold 5 i=4 Fold 1 Fold 2 Fold 3 Fold 4 Fold 5 i=5 Fold 1 Fold 2 Fold 3 Fold 4 Fold 5 Gambar 2.1 5-Fold Cross Validation
Gambar 2.1 menjelaskan bagaimana kinerja dari 5-fold cross validation. Setiap fold akan memiliki kesempatan menjadi data uji sebanyak 1 kali dan menjadi data latih sebanyak 4 kali. Fold manapun yang memiliki nilai tertinggi dalam klasifikasi adalah skenario pembagian data terbaik dari sistem.
2.7 Confusion Matrix
Confusion Matrix adalah sebuah teknik untuk mencari akurasi yang berupa sebuah tabel hasil kerja proses klasifikasi.
Tabel 2.1 Contoh Confusion Matrix
Kelas Prediksi (j)
1 0
Kelas asli (i)
1 f11 f10
0 f01 f00
Pada tabel 2.1 diperlihatkan kasus klasifikasi dua kelas yaitu kelas 1 dan kelas 0. Setiap fij melambangkan jumlah dari kelas i dengan hasil prediksi dari kelas j. Sebagai contoh bahwa f11 adalah jumlah data kelas 1 yang diprediksikan sebagai 1 juga. Untuk menghitung akurasi digunakan persamaan seperti pada persamaan 2.4.
Akurasi x 100% (2.4)
11
BAB III. METODE PENELITIAN
3.1 Data Penelitian
Data pada penelitian ini adalah data dari mahasiswa Program Studi Informatika Universitas Sanata Dharma angkatan 2016 sampai 2019 dengan jumlah data adalah 260. Pengumpulan data dilakukan dengan menggunakan kuesioner. Bentuk data siap pakai adalah file .csv.
Seperti yang sudah dibahas pada Bab I, atribut data yang penulis gunakan merujuk pada dataset pada penelitian milik P. Cortez dan A. Silva yang menggunakan atribut faktor lingkungan dari siswa sekolah menengah dengan label data adalah nilai mata pelajaran Matematika dan Bahasa Portugis.
Sebelum melakukan penyebaran kuesioner, penulis terlebih dahulu menghilangkan beberapa atribut dari atribut data rujukan. Beberapa atribut yang dihapus meliputi :
a. age
Atribut ini menjelaskan umur siswa dengan value adalah 15 sampai 22.
b. paid
Atribut ini menjelaskan apakah siswa mengikuti kelas tambahan berbayar yang diadakan oleh pihak sekolah dengan value ya atau tidak.
c. absence
Atribut ini menjelaskan berapa kali siswa tidak mengikuti pembelajaran di kelas dengan value adalah 0 sampai 93.
d. failCourse
Atribut ini menjelaskan berapa banyak siswa gagal dalam mata pelajaran dengan value 0, 1, 2, 3, atau lainnya.
e. school
Atribut ini menjelaskan sekolah mana yang siswa bersangkutan berasal. Value atribut ini meliputi Gabriel Pereira atau Mousinho da Silveira.
f. alcWD
Atribut ini menjelaskan konsumsi alkohol siswa pada hari kerja dengan value adalah dari 1 (sangat rendah) hingga 5 (sangat tinggi).
g. alcWE
Atribut ini menjelaskan konsumsi alkohol siswa pada hari libur dengan value adalah dari 1 (sangat rendah) hingga 5 (sangat tinggi).
Untuk atribut age, umur rata-rata mahasiswa tidaklah terlalu jauh. Untuk atribut paid, Universitas Sanata Dharma tidak menerapkan kelas tambahan yang berbayar. Untuk atribut absence, standar yang digunakan di Universitas Sanata Dharma adalah 75% kehadiran. Ketika nilai kehadiran tidak mencapai 75% maka nilai mahasiswa otomatis F, maka dari itu atribut ini dihapus. Untuk atribut failCourse, data mahasiswa diasumsikan diambil pada kondisi mereka di semester 1 yang tentu saja belum ada mata kuliah yang diulang. Lalu atribut school karena pada penelitian P. Cortez dan A.
Silva, pengambilan data dilakukan di dua instansi yang berbeda, sehingga pada penelitian ini atribut school dihapuskan. Sedangkan untuk konsumsi alkohol, penulis merasa bahwa mengkonsumsi alkohol bukanlah budaya dari masyarakat Indonesia. Dari penghapusan beberapa atribut ini, data awal memiliki 1 label dan 23 atribut. Gambar 3.1 merupakan blanko kuisioner yang penulis bagikan. Terdapatnya asal SMA/SMK pada blanko kuisioner karena semula penulis mengambil data di BAPSI yang hanya berisikan jenis kelamin, asal sekolah, serta nilai Alpro. Namun karena data BAPSI tidak digunakan, maka Asal SMA/SMK dapat diabaikan.
Gambar 3.1 Blanko Kuisioner
Berikut adalah penjelasan dari masing-masing atribut beserta value atribut yang digunakan pada gambar 3.1, dimana value atribut ditranformasi manual menjadi bentuk angka, meliputi :
a. gender
Atribut ini menjelaskan jenis kelamin dari mahasiswa dengan value pria=1 atau wanita=2.
b. addArea
Atribut ini menjelaskan daerah tempat tinggal mahasiswa dengan value adalah perkotaan=1 atau selain perkotaan=2. Dimana perkotaan secara khusus adalah kota Yogyakarta.
c. famSize
Atribut ini menjelaskan jumlah dari keluarga inti mahasiswa dengan value ≤3=1 atau >3=2.
d. pStatus
Atribut ini menjelaskan status pernikahan orang tua mahasiswa dengan value tinggal bersama=1 atau tinggal terpisah=2.
e. mEdu
Atribut ini menjelaskan pendidikan terakhir ibu dengan value tidak bersekolah=1, SD=2, SMP=3, SMA=4, atau Perguruan Tinggi=5.
f. pEdu
Atribut ini menjelaskan pendidikan terakhir ayah dengan value tidak bersekolah=1, SD=2, SMP=3, SMA=4, atau Perguruan Tinggi=5.
g. mJob
Atribut ini menjelaskan pekerjaan ibu dengan value pendidik=1, bidang kesehatan=2, PNS=3, tidak bekerja=4, atau lainnya=5.
h. pJob
Atribut ini menjelaskan pekerjaan ayah dengan value pendidik=1, bidang kesehatan=2, PNS=3, tidak bekerja=4, atau lainnya=5.
i. usdReason
Atribut ini menjelaskan alasan mahasiswa masuk ke Univeristas Sanata Dharma dengan value dekat dari rumah=1, reputasi USD=2, sesuai referensi prodi=3, atau lainnya=4.
j. guardian
Atribut ini menjelaskan mengenai siapa wali utama dari mahasiswa dengan value ayah=1, ibu=2, atau lainnya=3.
k. travelT
Atribut ini menjelaskan waktu yang ditempuh mahasiswa dari tempat tinggal ke kampus dengan value <15 menit=1, 15-30 menit=2, >30 menit-1jam=3, atau >1 jam=4.
l. studyT
Atribut ini menjelaskan berapa lama waktu yang dihabiskan mahasiswa untuk belajar di luar kelas selama seminggu. Value atribut ini meliputi <2 jam=1, 2-5 jam=2, >5-10 jam=3, atau >10 jam=4.
m. bimbel
Atribut ini menjelaskan apakah mahasiswa mengikuti bimbingan belajar pemrograman dengan value ya=1 atau tidak=2.
n. famEduSupp
Atribut ini menjelaskan apakah mahasiswa memiliki dukungan pendidikan dari keluarga dengan value ya=1 atau tidak=2.
o. nonAkademik
Atribut ini menjelaskan apakah mahasiswa mengikuti kegiatan non akademik dengan value ya=1 atau tidak=2.
p. tk
Atribut ini menjelaskan apakah mahasiswa mengikuti jenjang pendidikan taman kanak-kanak dengan value ya=1 atau tidak=2.
q. s2
Atribut ini menjelaskan apakah mahasiswa nantinya ingin mengambil jenjang pendiidkan yang lebih tinggi dengan value ya=1 atau tidak=2.
r. intAkses
Atribut ini menjelaskan apakah mahasiswa memiliki akses internet di tempat tinggalnya dengan value ada=1 atau tidak=2.
s. Romance
Atribut ini menjelaskan apakah mahasiswa terlibat dalam hubungan asmara dengan value ya=1 atau tidak=2.
t. famRel
Atribut ini menjelaskan skala hubungan mahasiswa dengan keluarganya. Value dari atribut ini adalah skala 1 sampai 3.
u. health
Atribut ini menjelaskan skala kesehatan mahasiswa. Value dari atribut ini adalah skala 1 (rendah) sampai 4 (sangat baik).
v. freeT
Atribut ini menjelaskan skala waktu luang mahasiswa. Value dari atribut ini adalah skala 1 (sangat rendah) sampai 5 (sangat tinggi).
w. hangOut
Atribut ini menjelaskan skala waktu mahasiswa bersenang-senang dengan kawannya. Value dari atribut ini adalah skala 1 (sangat rendah) sampai 5 (sangat tinggi).
x. alpro
Atribut ini merupakan label yang mana menjelaskan nilai mata kuliah Algoritma dan Pemrograman mahasiswa dengan value A, B, dan C. Label hanya sampai A, B, dan C karena tidak ada label D, E, dan F dalam pengumpulan data.
3.2 Desain Alat Uji
Gambar 3.2 Diagram Blok
Gambar 3.2 menggambarkan bagaimana proses dari penelitian ini.
Data harus melalui tahap preprocessing (seleksi atribut) sebelum menjadi data set siap pakai. Pada tahap preprocessing, atribut yang akan digunakan nantinya harus melalui tahap seleksi terlebih dahulu dimana atribut mana yang memilki kontribusi di klasifikasi nantinya. Dalam modeling, training data dan testing data diolah menggunakan metode Naïve Bayes yang akan didapatkan hasil akurasinya. Setelah itu dapat dilakukan uji data kelompok dan uji data tunggal untuk mendapatkan klasifikasi.
Gambar 3.3 akan menggambarkan alur data yang sistem gunakan.
Dimana proses berjalan dari inputan berupa data awal hingga menjadi output berupa nilai akurasi.
Gambar 3.3 Diagram Flowchart Umum Sistem
Algoritma Umum Sistem : 1. Baca data awal.
2. Tahap preprocessing dimana terjadi transformasi dan seleksi atribut (mengurutkan peringkat atribut) :
a. Ubah kelas yang sebelumnya A menjadi 1, B menjadi 2, dan C menjadi 3.
b. Urutkan atribut berdasarkan ranking dari information gain.
3. Bagi data menjadi 5 bagian, masukan ke masing-masing variabel fold(1) sampai fold(5).
4. Untuk masing-masing fold lakukan : a. Hitung P(c) data latih
P(c) = total label c pada data latih / total data latih.
b. Hitung P(x|c) data latih
Lakukan perulangan untuk mencari nilai P(x|c). Misal untuk P(usdReason|c) dengan nilai atribut usdReason adalah 1, 2, 3, dan 4 :
P(1|c) = jumlah atribut usdReason bernilai 1 yang berlabel c / jumlah kelas c pada data latih.
P(2|c) = jumlah atribut usdReason bernilai 2 yang berlabel c / jumlah kelas c pada data latih.
Begitu seterusnya hingga seluruh nilai atribut usdReason juga nilai atribut-atribut lainnya mendapatkan nilainya.
c. Perhitungan Laplace Correction. Algoritma untuk menghitungnya adalah :
- Cek apakah P(x|c) ada yang bernilai 0.
- Jika ada, tambah 1 untuk semua jumlah atribut x lalu jumlah kelas c pada data latih ditambah sesuai dengan banyaknya nilai atribut x. Jika tidak lanjut ke langkah d.
- Ulangi perhitungan b.
d. Hitung P(c|x) pada tiap data uji.
P(A|nilai atribut data uji yang berlabel A) = P(A) * P(nilai
atribut data uji usdReason|A) * P(nilai atribut data uji hangOut|A) * P(nilai atribut data uji freeT|A) * P(nilai atribut data uji famRel|A) * P(nilai atribut data uji studyT|A).
Begitu seterusnya untuk kelas B dan kelas C.
e. Bandingkan hasil P(c|x) dimana yang terbesar = hasil klasifikasi.
5. Membandingkan hasil klasifikasi dengan label asli lalu memasukan ke confusion matrix.
6. Menghitung akurasi untuk masing-masing fold.
7. Menghitung akurasi total.
8. Selesai.
Sedangkan untuk Gambar 3.4 akan menggambarkan alur data dari data uji tunggal yang nantinya akan menghasilkan keluaran hasil klasifikasi.
Gambar 3.4 Diagram Flowchart Uji Data Tunggal
Algoritma Uji Data Tunggal :
1. Baca data set, masuk ke model sebagai data latih.
2. Masukan data uji tunggal, masuk ke model.
3. Hasil klasifikasi keluar.
4. Selesai.
Gambar 3.5 menggambarkan alur data dari data uji kelompok yang nantinya akan menghasilkan keluaran hasil klasifikasi.
Gambar 3.5 Diagram Flowchart Uji Data Kelompok
Algoritma Uji Data Kelompok :
1. Baca data set, data set masuk ke model sebagai data latih.
2. Baca data uji kelompok, masuk ke model.
3. Hasil klasifikasi keluar.
4. Selesai.
3.3 Spesifikasi Alat Penelitian 3.3.1 Perangkat keras :
1. Asus-PC X450CA
2. Processor Intel® Core™ i3-3217U CPU @ 1.80GHz (4 CPUs), ~1.8ghZ
3. RAM 2048MB 3.3.2 Perangkat lunak :
1. Sistem Operasi Windows 7 Ultimate 64-bit.
2. Microsoft Excel 2013 3. Matlab 2016b
4. Draw.io
5. Weka Tools 3.8.3
3.4 Desain User Interface
Gambar 3.6 adalah perancangan desain interface dalam penelitian ini yang terbagi menjadi 3 bagian yaitu Panel1, Panel2, dan Panel3. Panel1 berisikan klasifikasi dengan data latih dan data uji dari keseluruhan data penelitian, Panel2 untuk klasifikasi menggunakan data uji berkelompok, dan Panel3 untuk klasifikasi data uji tunggal.
Gambar 3.6 Desain User Interface
Berikut adalah penjelasan dari masing-masing label pada desain : A : Tombol untuk mengunggah seluruh data penelitian.
B : Tabel yang menampilkan seluruh data yang diunggah.
C : Text field untuk memasukkan jumlah atribut dari keseluruhan data.
D : Tombol untuk menginputkan jumlah atribut yang tertulis di C ke dalam sistem sehingga terjadi proses pemilihan atribut.
E : Tabel yang menampilkan seluruh data dengan jumlah atribut yang telah dimasukan di C.
F : Tombol klasifikasi Naive Bayes sesuai dengan jumlah atribut yang diinginkan.
G : Text field yang menampilkan akurasi dari klasifikasi.
H : Tabel untuk menampilkan matriks cross validation dari klasifikasi fold 1 sampai dengan fold 5.
I : Tombol untuk mengunggah data uji berkelompok.
J : Tabel yang menampilkan data uji berkelompok.
K : Tombol untuk mengklasifikasikan data uji berkelompok.
L : Tabel yang menampilkan hasil klasifikasi dari data uji berkelompok.
M : Text field yang memasukan nilai atribut untuk menjadi data uji tunggal
N : Tombol untuk mengunggah data uji tunggal yang dilanjutkan dengan proses klasifikasi.
O : Text field yang menampilkan hasil klasifikasi dari data uji tunggal
25
BAB IV. IMPLEMENTASI SISTEM
4.1 Implementasi Preprocessing 4.1.1 Tranformasi Data
Transformasi data adalah tahap mengubah label klasifikasi yang awalnya bertipe string menjadi numerik. Bisa dilihat pada tabel 4.1 yang merupakan label data sebelum dilakukan transformasi sedangkan tabel 4.2 adalah label data setelah dilakukan transformasi.
Tabel 4.1 Contoh Label Data Sebelum Transformasi Label
C A B A
Tabel 4.2 Contoh Label Data Setelah Transformasi Label Setelah Transformasi
C 3
A 1
B 2
A 1
for i = 1 : m
if (strcmp(raw(i,numCols),'A')) num(i,numCols)=1;
elseif (strcmp(raw(i,numCols),'B')) num(i,numCols)=2;
else
num(i,numCols)=3;
end end
4.1.2 Seleksi Data
Pada tahap ini sistem akan mengurutkan peringkat kontribusi atribut berlandaskan pada information gain yang didapat pada Weka Tools seperti yang terlihat pada tabel 4.3.
Tabel 4.3 Peringkat Atribut dari Weka Tools
Peringkat Atribut Information
Gain
1 studyT 0.541
2 hangOut 0.516
3 freeT 0.493
4 usdReason 0.392
5 famRel 0.337
6 pEdu 0.046
7 pJob 0.044
8 travelT 0.045
9 mJob 0.033
10 health 0.033
11 Tk 0.029
12 famSize 0.018
13 gender 0.018
14 mEdu 0.015
15 guardian 0.012
16 romance 0.011
17 bimbel 0.012
18 s2 0.009
19 addArea 0.005
20 pStatus 0.004
21 intAkses 0.004
22 nonAkademik 0.002
23 famEduSupp 0.001
rank =
[12,23,22,9,20,6,8,11,7,21,16,3,1,5,10,19,13,17,2,4,18,15,14];
data = xlsread(outputfile);
if jmlAtrib > size(rank,2)-1 jmlAtrib = size(rank,2);
end
if numCols-1 == 23 for i=1:jmlAtrib if i==1
dataPakai = data(:,rank(i));
else
dataPakai = [dataPakai,data(:,rank(i))];
end end
dataPakai = [dataPakai, data(:,numCols)];
elseif jmlAtrib < numCols-1 for i=1:jmlAtrib
if i==1
dataPakai = data(:,i);
else
dataPakai = [dataPakai,data(:,i)];
end end
dataPakai = [dataPakai, data(:,numCols)];
else
dataPakai = data ; end
4.2 Implementasi Naïve Bayes
Berikut merupakan implementasi dari Naïve Bayes yang diikuti dengan Laplace Correction. Untuk source code di bawah hanya untuk satu atribut.
Souce Code lengkap ada pada bagian Lampiran.
function output = NB(dataTr, labelTr, dataTs)
A = find(labelTr(:) == 1);
B = find(labelTr(:) == 2);
C = find(labelTr(:) == 3);
probA = length(A)/length(labelTr);
probB = length(B)/length(labelTr);
probC = length(C)/length(labelTr);
%P(X|C)
[m,n] = size(dataTr);
%P(studyT)--- if 1<=n
studyT = zeros(4,3);
for i=1:m
if(isequal(dataTr(i,1),1)&&isequal(labelTr(i,1),1)) studyT(1,1) = studyT(1,1)+1;
elseif (isequal(dataTr(i,1),1)&&isequal(labelTr(i,1),2)) studyT(1,2) = studyT(1,2)+1;
elseif (isequal(dataTr(i,1),1)&&isequal(labelTr(i,1),3)) studyT(1,3) = studyT(1,3)+1;
elseif (isequal(dataTr(i,1),2)&&isequal(labelTr(i,1),1)) studyT(2,1) = studyT(2,1)+1;
elseif (isequal(dataTr(i,1),2)&&isequal(labelTr(i,1),2)) studyT(2,2) = studyT(2,2)+1;
elseif (isequal(dataTr(i,1),2)&&isequal(labelTr(i,1),3)) studyT(2,3) = studyT(2,3)+1;
elseif (isequal(dataTr(i,1),3)&&isequal(labelTr(i,1),1)) studyT(3,1) = studyT(3,1)+1;
elseif (isequal(dataTr(i,1),3)&&isequal(labelTr(i,1),2)) studyT(3,2) = studyT(3,2)+1;
elseif (isequal(dataTr(i,1),3)&&isequal(labelTr(i,1),3)) studyT(3,3) = studyT(3,3)+1;
elseif (isequal(dataTr(i,1),4)&&isequal(labelTr(i,1),1)) studyT(4,1) = studyT(4,1)+1;
elseif (isequal(dataTr(i,1),4)&&isequal(labelTr(i,1),2)) studyT(4,2) = studyT(4,2)+1;
elseif (isequal(dataTr(i,1),4)&&isequal(labelTr(i,1),3)) studyT(4,3) = studyT(4,3)+1;
end end
for x=1:4
studyT(x,1)=studyT(x,1)+1;
studyT(x,2)=studyT(x,2)+1;
studyT(x,3)=studyT(x,3)+1;
end
elseif (isequal(studyT(y,2),0)) for x=1:4
studyT(x,1)=studyT(x,1)+1;
studyT(x,2)=studyT(x,2)+1;
studyT(x,3)=studyT(x,3)+1;
end
elseif (isequal(studyT(y,3),0)) for x=1:4
studyT(x,1)=studyT(x,1)+1;
studyT(x,2)=studyT(x,2)+1;
studyT(x,3)=studyT(x,3)+1;
end end
end
%==========================================
studyTM = [studyT(:,1)/length(A) studyT(:,2)/length(B) studyT(:,3)/length(C)] ;
end
%---TESTING--- data = zeros(1,n);
output1 = 1; output2 = 1; output3 = 1;
%studyT--- if 1<=n
switch dataTs(1,1) case 1
data(1,1)=1;
case 2
data(1,1)=2;
case 3
data(1,1)=3;
case 4
data(1,1)=4;
end
output1 = output1*studyTM(data(1,1),1);
output2 = output2*studyTM(data(1,1),2);
output3 = output3*studyTM(data(1,1),3);
end
%---P(kelas)--- output1 = output1*probA;
output2 = output2*probB;
output3 = output3*probC;
if output1>output2 && output1>output3 output = 1;
elseif output2>output1 && output2>output3 output = 2;
else
output = 3;
end
4.3 5-fold Cross Validation
Pada tahap ini dilakukan pembagian data ke dalam 5 fold.
fold1 = atribut(1:range,:);
fold2 = atribut(range+1:range*2,:);
fold3 = atribut(range*2+1:range*3,:);
fold4 = atribut(range*3+1:range*4,:);
fold5 = atribut(range*4+1:range*5,:);
dataTs1 = fold1;
dataTr1 = [fold2; fold3; fold4; fold5];
dataTs2 = fold2;
dataTr2 = [fold1; fold3; fold4; fold5];
dataTs3 = fold3;
dataTr3 = [fold1; fold2; fold4; fold5];
dataTs4 = fold4;
dataTr4 = [fold1; fold2; fold3; fold5];
dataTs5 = fold5;
dataTr5 = [fold1; fold2; fold3; fold4];
label1 = label(1:range);
label2 = label(range+1:range*2,:);
label3 = label(range*2+1:range*3,:);
label4 = label(range*3+1:range*4,:);
label5 = label(range*4+1:range*5,:);
labelTs1 = label1;
labelTr1 = [label2; label3; label4; label5];
labelTs2 = label2;
labelTr2 = [label1; label3; label4; label5];
labelTs3 = label3;
labelTr3 = [label1; label2; label4; label5];
labelTs4 = label4;
labelTr4 = [label1; label2; label3; label5];
labelTs5 = label5;
labelTr5 = [label1; label2; label3; label4];
4.4 Confusion Matrix dan Akurasi
Setiap fold dihitung akurasinya masing-masing yang mana hasil akurasi tersebut digunakan untuk menghitung akurasi total.
for i=1:size(dataTs1,1)
hasil(i,1) = NB(dataTr1, labelTr1, dataTs1(i,:));
end
cf1 = confusionmat(hasil, labelTs1);
output1 = sum(diag(cf1))/sum(sum(cf1))*100;
set(handles.matrix1,'data',cf1);
for i=1:size(dataTs2,1)
hasil(i,1) = NB(dataTr2, labelTr2, dataTs2(i,:));
end
cf2 = confusionmat(hasil, labelTs2);
output2 = sum(diag(cf2))/sum(sum(cf2))*100;
set(handles.matrix2,'data',cf2);
for i=1:size(dataTs3,1)
hasil(i,1) = NB(dataTr3, labelTr3, dataTs3(i,:));
end
cf3 = confusionmat(hasil, labelTs3);
output3 = sum(diag(cf3))/sum(sum(cf3))*100;
set(handles.matrix3,'data',cf3);
for i=1:size(dataTs4,1)
hasil(i,1) = NB(dataTr4, labelTr4, dataTs4(i,:));
end
cf4 = confusionmat(hasil, labelTs4);
output4 = sum(diag(cf4))/sum(sum(cf4))*100;
set(handles.matrix4,'data',cf4);
for i=1:size(dataTs5,1)
hasil(i,1) = NB(dataTr5, labelTr5, dataTs5(i,:));
end
cf5 = confusionmat(hasil, labelTs5);
output5 = sum(diag(cf5))/sum(sum(cf5))*100;
set(handles.matrix5,'data',cf5);
akurasi = (output1+output2+output3+output4+output5)/5;
4.5 Uji Data Kelompok
Pada tahap ini mencari klasifikasi dari data berkelompok yang diunggah dari sistem.
4.6 Uji Data Tunggal
Pada tahap ini mencari klasifikasi dari data yang diinputkan melalui user interface langsung.
global row1; load atribut; load label;
atribut = atribut(:,1:5);
label = label;
testing = row1(:,:);
tampil = row1(:,:);
ukuran = testing(:,1);
[m,n] = size(ukuran);
for i=1:m
hasil(i) = NB(atribut, label, cell2mat(testing(i,:)));
if hasil(i) == 1 output{i,1}='A';
elseif hasil(i) == 2 output{i,1}='B';
else
output{i,1}='C';
end end
gabung = [tampil, output];
load atribut;
load label;
training = atribut(:,1:5);
a1 = str2num(get(handles.atribut1, 'String'));
a2 = str2num(get(handles.atribut2, 'String'));
a3 = str2num(get(handles.atribut3, 'String'));
a4 = str2num(get(handles.atribut4, 'String'));
a5 = str2num(get(handles.atribut5, 'String'));
inputan = [a1,a2,a3,a4,a5];
hasil = NB(training, label, inputan);
if hasil == 1
set(handles.fieldKDTunggal, 'String', 'A') elseif hasil ==2
set(handles.fieldKDTunggal, 'String', 'B') else
set(handles.fieldKDTunggal, 'String', 'C') end
4.7 User Interface Sistem
Gambar 4.1 User Interface Sistem
User Interface Sistem ini terbagi atas tiga panel. Panel pertama adalah tampilan untuk melakukan klasifikasi Naïve Bayes menggunakan file dari data mentah yang ada. Dalam pengaplikasiannya, hal pertama yang dilakukan adalah mengunggah file lalu memasukan jumlah atribut yang ingin digunakan dalam perhitungan. Lalu tombol akurasi akan menampilkan hasil akurasi total bersamaan dengan Confusion matrix dari masing-masing fold.
Panel kedua adalah panel untuk uji klasifikasi data kelompok yang dalam pengaplikasiannya hanya perlu memilih file atribut data berkelompok dengan mengklik tombol upload data lalu mengklik tombol klasifikasi untuk mengetahui hasil klasifikasinya.
Panel ketiga adalah tampilan untuk uji data tunggal. Setiap textfield harus diisi dengan angka, menyesuaikan dengan nilai atribut masing- masing atribut. Tombol klasifikasi akan menampilkan hasil klasifikasi berdasarkan nilai atribut yang tertulis.
34
BAB V. ANALISIS HASIL
5.1 Uji Validasi
5.1.1 Perhitungan Manual Naïve Bayes
Perhitungan manual menggunakan Excel dengan data yang digunakan sebanyak 20 data dengan tiga atribut serta penggunaan 5-fold sebagai pembagi data uji dan data latih. Tabel 5.1 adalah data yang digunakan untuk Uji Validasi.
Tabel 5.1 Data Hitung Manual
Data ke- studyT hangOut freeT kelas
1 4 1 4 A
2 3 1 2 A
3 3 3 3 B
4 4 2 4 C
5 3 2 3 A
6 2 2 5 C
7 4 1 4 A
8 2 3 4 B
9 3 1 4 A
10 4 3 4 B
11 4 1 5 C
12 2 2 3 B
13 4 3 2 B
14 2 2 3 B
15 4 1 5 C
16 3 1 4 A
17 3 1 5 A
18 2 1 1 C
19 2 3 3 B
20 4 2 1 C
1. Membagi data 5.1 ke dalam 5 fold yang mana setiap fold nantinya akan menjadi data uji dan sisanya menjadi data latih.
Tabel 5.2 Pembagian Fold
Data ke- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
2. Menghitung P(c) untuk masing-masing Fold.
a. Menghitung jumlah kelas pada data latih Iterasi 1 (fold 1 sebagai data uji)
A = 5 B=6 C=5
Iterasi 2 (fold 2 sebagai data uji) A = 5 B=6 C=5
Iterasi 3 (fold 3 sebagai data uji) A = 6 B=5 C=5
Iterasi 4 (fold 4 sebagai data uji) A = 6 B=5 C=5
Iterasi 5 (fold 5 sebagai data uji) A = 6 B=6 C=4
b. Membagi langkah a dengan banyaknya data latih Jumlah data latih = 16
Iterasi 1
P(A) = 5/16 P(B)=6/16 P(C)=5/16 = 0.3125 =0.375 =0.3125
Fold 1 Fold 2 Fold 3 Fold 4 Fold 5
Iterasi 2
P(A) = 5/16 P(B)=6/16 P(C)=5/16 = 0.3125 =0.375 =0.3125
Iterasi 3
P(A) = 6/16 P(B)=5/16 P(C)=5/16 = 0.375 =0.3125 =0.3125
Iterasi 4
P(A) = 6/16 P(B)=5/16 P(C)=5/16 = 0.375 =0.3125 =0.3125
Iterasi 5
P(A) = 6/16 P(B)=6/16 P(C)=4/16 = 0.375 =0.375 =0.25
3. Menghitung P(x|c)
a. Mencari banyak nilai atribut yang berpasangan dengan masing-masing kelas pada data latih yang ditunjukan oleh tabel 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9, 5.10, 5.11, 5.12, 5.13, 5.14, 5.15, 5.16, dan 5.17.
Iterasi 1
Tabel 5.3 Banyak Nilai Atribut studyT Terhadap Kelas (Iterasi 1)
studyTime A B C
1 0 0 0
2 0 4 2
3 4 0 0
4 1 2 3
Tabel 5.4 Banyak Nilai Atribut hangOut Terhadap Kelas (Iterasi 1)
Tabel 5.5 Banyak Nilai Atribut freeTime Terhadap Kelas (Iterasi 1)
Iterasi 2
Tabel 5.6 Banyak Nilai Atribut studyT Terhadap Kelas (Iterasi 2)
Tabel 5.7 Banyak Nilai Atribut hangOut Terhadap Kelas (Iterasi 2)
hangOut A B C
1 4 0 3
2 1 2 2
3 0 4 0
4 0 0 0
freeTime A B C
1 0 0 2
2 0 1 0
3 1 3 0
4 3 2 0
5 1 0 3
studyTime A B C
1 0 0 0
2 0 3 1
3 4 1 0
4 1 2 4
hangOut A B C
1 5 0 3
2 0 2 2
3 0 4 0
4 0 0 0
Tabel 5.8 Banyak Nilai Atribut freeTime Terhadap Kelas (Iterasi 2)
Iterasi 3
Tabel 5.9 Banyak Nilai Atribut studyTime Terhadap Kelas (Iterasi 3)
Tabel 5.10 Banyak Nilai Atribut hangOut Terhadap Kelas (Iterasi 3)
Tabel 5.11 Banyak Nilai Atribut freeTime Terhadap Kelas (Iterasi 3)
freeTime A B C
1 0 0 2
2 1 1 0
3 0 4 0
4 3 1 1
5 1 0 2
studyTime A B C
1 0 0 0
2 0 3 2
3 4 1 0
4 2 1 3
hangOut A B C
1 5 0 2
2 1 1 3
3 0 4 0
4 0 0 0
freeTime A B C
1 0 0 2
2 1 1 0
3 1 3 0
4 3 1 1
5 1 0 2
Iterasi 4
Tabel 5.12 Banyak Nilai Atribut studyTime Terhadap Kelas (Iterasi 4)
Tabel 5.13 Banyak Nilai Atribut hangOut Terhadap Kelas (Iterasi 4)
Tabel 5.14 Banyak Nilai Atribut freeTime Terhadap Kelas (Iterasi 4)
Iterasi 5
Tabel 5.15 Banyak Nilai Atribut studyTime Terhadap Kelas (Iterasi 5)
studyTime A B C
1 0 0 0
2 0 3 1
3 4 1 0
4 2 2 3
studyTime A B C
1 0 0 0
2 0 3 2
3 4 1 0
4 2 1 3
hangOut A B C
1 5 0 2
2 1 1 3
3 0 4 0
4 0 0 0
freeTime A B C
1 0 0 2
2 1 0 0
3 1 3 0
4 3 2 1
5 1 0 2
Tabel 5.16 Banyak Nilai Atribut hangOut Terhadap Kelas (Iterasi 5)
Tabel 5.17 Banyak Nilai Atribut freeTime Terhadap Kelas (Iterasi 5)
b. Memasukan Laplace Correction Langkah :
1. Ketika angka di suatu kolom pada langkah 3.a = 0, maka seluruh isi kolom tersebut ditambah dengan 1 dan jumlah kelas pada data latih (langkah 2.a) ditambah dengan banyaknya nilai atribut. Jika tidak lanjut ke langkah 3.
2. P(x|c) = (langkah 3.a+1) / (P(c)+banyaknya nilai atribut) 3. P(x|c) = langkah 3.a / P(c)
Penerapan Laplace Correction dapat dilihat pada tabel 5.18, 5.19, dan 5.20.
hangOut A B C
1 5 0 2
2 1 2 2
3 0 4 0
4 0 0 0
freeTime A B C
1 0 0 0
2 1 1 0
3 1 3 0
4 4 2 1
5 0 0 3
Iterasi 1
Tabel 5.18 Laplace Correction – studyTime (Iterasi 1)
studyTime A B C
1 0+1=1 0+1=1 0+1=1
2 0+1=1 4+1=5 2+1=3
3 4+1=5 0+1=1 0+1=1
4 1+1=2 2+1=3 3+1=4
Jumlah kelas data latih 5+4=9 6+4=10 5+4=9 Tabel 5.19 Laplace Correction – hangOut (Iterasi 1)
hangOut A B C
1 4+1=5 0+1=1 3+1=4
2 1+1=2 2+1=3 2+1=3
3 0+1=1 4+1=5 0+1=1
4 0+1=1 0+1=1 0+1=1
Jumlah kelas data latih 5+4=9 6+4=10 5+4=9 Tabel 5.20 Laplace Correction – freeTime (Iterasi 1)
freeTime A B C
1 0+1=1 0+1=1 2+1=3
2 0+1=1 1+1=2 0+1=1
3 1+1=2 3+1=4 0+1=1
4 3+1=4 2+1=3 0+1=1
5 1+1=2 0+1=1 3+1=4
Jumlah kelas data latih 5+5=10 6+5=11 5+5=10 P(x|c) Iterasi 1
Tabel 5.21 P(studyTime|c) - Iterasi 1
studyTime A B C
1 1/9=0.111111 1/10=0.1 1/9=0.111111 2 1/9=0.111111 5/10=0.5 3/9=0.333333 3 5/9=0.555556 1/10=0.1 1/9=0.111111 4 2/9=0.222222 3/10=0.3 4/9=0.444444