Lewati ke konten utama
seratusribu.com
Semua artikel
Kampus & Skripsi

Skripsi Naive Bayes: Alur, Dataset, dan Cara Menjelaskannya ke Penguji

Oleh Anang H. Darmawan

4 menit baca
Laporkan
Skripsi Naive Bayes: Alur, Dataset, dan Cara Menjelaskannya ke Penguji

Foto: 1981 Digital / Unsplash

Naive Bayes termasuk metode yang paling sering dipilih untuk skripsi klasifikasi, dan alasannya masuk akal. Rumusnya bisa dihitung manual di kertas, hasilnya bisa dicocokkan dengan program, dan penguji bisa mengikuti logikanya tanpa harus paham matematika tingkat lanjut. Masalahnya, banyak mahasiswa bisa menjalankan programnya tapi kesulitan saat diminta menjelaskan kenapa hasilnya keluar seperti itu.

Kasus yang sering saya temui justru di sini. Aplikasi sudah jadi, akurasi sudah keluar, lalu penguji bertanya satu hal sederhana: "Coba hitung manual satu data uji, apakah hasilnya sama dengan program?" Kalau bagian ini tidak disiapkan, sidang bisa jadi panjang.

Alur metode yang biasa dipakai di bab 3

Urutannya kurang lebih begini: kumpulkan dataset, bersihkan data (hapus duplikat, isi atau buang nilai kosong), ubah atribut numerik menjadi kategori bila perlu, bagi data menjadi data latih dan data uji, hitung probabilitas prior dan likelihood dari data latih, lalu klasifikasikan data uji dan ukur hasilnya. Gambarkan alur ini sebagai flowchart di bab 3.

Soal atribut numerik, ada dua pilihan. Kamu bisa mendiskretkan nilai, misalnya IPK di atas 3,00 dianggap "Tinggi", atau memakai Gaussian Naive Bayes yang menghitung peluang dari rata-rata dan simpangan baku. Diskretisasi lebih mudah dijelaskan, tapi batas kategorinya harus punya alasan.

Contoh kecil perhitungan probabilitas

Misalkan ada 10 data latih mahasiswa dengan dua atribut, yaitu IPK (Tinggi atau Rendah) dan kehadiran (Baik atau Kurang), serta label kelulusan (Tepat atau Terlambat). Dari 10 data, 6 lulus tepat waktu dan 4 terlambat. Di kelas Tepat, 4 mahasiswa ber-IPK Tinggi dan hanya 1 yang kehadirannya Kurang. Di kelas Terlambat, 1 mahasiswa ber-IPK Tinggi dan 3 kehadirannya Kurang. Data uji yang mau ditebak: mahasiswa ber-IPK Tinggi dengan kehadiran Kurang.

KomponenKelas TepatKelas Terlambat
Prior6/10 = 0,64/10 = 0,4
Peluang IPK Tinggi4/6 ≈ 0,6671/4 = 0,25
Peluang kehadiran Kurang1/6 ≈ 0,1673/4 = 0,75
Hasil kali≈ 0,0670,075

Nilai kelas Terlambat (0,075) sedikit lebih besar dari kelas Tepat (sekitar 0,067), jadi data ini diklasifikasikan Terlambat. Kalau dinormalisasi, peluangnya sekitar 53% berbanding 47%. Contoh ini sengaja dibuat tipis. Kamu bisa menunjukkan ke penguji bahwa satu atribut dengan likelihood ekstrem (kehadiran Kurang hanya 1 dari 6 di kelas Tepat) sanggup membalik hasil meski IPK-nya bagus.

Masalah muncul kalau salah satu kombinasi tidak pernah ada di data latih, misalnya tidak ada satu pun mahasiswa Terlambat yang ber-IPK Tinggi. Likelihood-nya jadi 0 dan seluruh hasil kali ikut 0. Solusi standarnya Laplace smoothing: tambahkan 1 ke setiap hitungan, lalu tambahkan jumlah kategori atribut itu ke penyebut. Siapkan penjelasan ini, karena hampir pasti ditanyakan.

Data latih, data uji, dan confusion matrix

Pembagian yang umum adalah 80:20 atau 70:30. Kalau datamu hanya ratusan baris, pertimbangkan k-fold cross validation supaya akurasi tidak bergantung pada satu kali pembagian yang kebetulan menguntungkan. Apa pun pilihannya, tulis alasannya di bab 3 dan pastikan data uji tidak pernah ikut dipakai menghitung probabilitas.

Setelah klasifikasi, susun confusion matrix. Contoh dengan 30 data uji: 12 benar diprediksi Tepat (TP), 3 sebenarnya Tepat tapi diprediksi Terlambat (FN), 4 sebenarnya Terlambat tapi diprediksi Tepat (FP), dan 11 benar diprediksi Terlambat (TN). Akurasinya (12 + 11) / 30 = 76,7%, precision 12 / 16 = 75%, dan recall 12 / 15 = 80%. Jangan hanya melaporkan akurasi. Kalau jumlah data per kelas timpang, akurasi tinggi bisa menipu, dan penguji yang teliti akan menanyakan precision dan recall.

Pertanyaan penguji yang sering muncul

Beberapa pertanyaan hampir selalu keluar. Kenapa memilih Naive Bayes dan bukan algoritma lain? Apa maksud asumsi "naive", dan apakah atribut di datasetmu benar-benar saling bebas? Dari mana dataset diambil dan apakah izinnya jelas? Bagaimana menangani probabilitas nol? Berapa akurasinya dan apakah angka itu cukup untuk kasusmu?

Untuk asumsi independensi, jawab jujur. Di data nyata, atribut jarang benar-benar bebas satu sama lain (IPK dan kehadiran jelas berkaitan), tapi Naive Bayes tetap sering memberi hasil klasifikasi yang layak meski asumsinya dilanggar. Mengakui keterbatasan ini di bab 5 lebih aman daripada pura-pura tidak ada.

Soal dataset, pilih yang sumbernya bisa disebut: data kampus dengan surat izin, data publik dari repositori seperti UCI Machine Learning Repository atau Kaggle, atau kuesioner yang kamu sebar sendiri. Hindari dataset yang asalnya tidak jelas, karena penguji bisa meminta bukti.

Bahan referensi supaya tidak mulai dari nol

Kalau kamu butuh contoh implementasi untuk dipelajari, aplikasi klasifikasi Naive Bayes berisi source code PHP dan MySQL lengkap dengan dataset contoh untuk pelatihan dan pengujian. Kamu bisa menelusuri bagaimana prior dan likelihood dihitung di kode nyata, lalu mencocokkannya dengan hitungan manualmu. Lisensinya untuk belajar dan referensi, harganya Rp200.000.

Untuk bab 4, asisten olah data penelitian membantu membuat statistik deskriptif dan grafik dari file CSV atau Excel, misalnya sebaran kelas di datasetmu sebelum klasifikasi dijalankan. Belum punya judul? Coba generator judul skripsi untuk memancing ide.

Langkah berikutnya: ambil tiga data uji dari hasil programmu, hitung manual di Excel dengan tabel seperti di atas, dan simpan lembarnya di lampiran. Itu bekal paling berguna saat penguji mulai bertanya.