Penulisan

Cara Kerja Naive Bayes Classifier untuk Klasifikasi Teks

Terbit

Ilustrasi Cara Kerja Naive Bayes Classifier untuk Klasifikasi Teks

Panduan Naive Bayes Classifier untuk klasifikasi teks, mulai dari konsep probabilitas, contoh hitung manual, Python, hingga evaluasi model.

Naive Bayes Classifier adalah salah satu algoritma machine learning yang sering dipakai untuk klasifikasi teks. Algoritma ini populer karena sederhana, cepat, dan cukup kuat untuk banyak kasus awal seperti analisis sentimen, deteksi spam, klasifikasi keluhan pengguna, kategorisasi berita, atau pengelompokan dokumen akademik. Walaupun namanya terdengar matematis, cara kerjanya bisa dipahami dari satu ide utama: model memilih kelas yang paling mungkin berdasarkan bukti yang muncul pada data.

Dalam artikel informatika, Naive Bayes sering muncul pada penelitian text mining dan data mining. Masalahnya, banyak penulis hanya menulis bahwa penelitian menggunakan Naive Bayes tanpa menjelaskan mengapa algoritma itu dipilih, bagaimana probabilitas dihitung, dan bagaimana hasilnya dievaluasi. Akibatnya, bagian metode terlihat dangkal. Artikel ini membahas Naive Bayes dengan gaya tutorial praktis agar konsepnya bisa dipakai untuk belajar, eksperimen, atau memperkuat bagian metode dalam naskah ilmiah.

Apa itu Naive Bayes Classifier?

Naive Bayes Classifier adalah algoritma klasifikasi berbasis Teorema Bayes. Tugasnya adalah menentukan kelas dari sebuah data baru berdasarkan peluang kemunculan fitur pada kelas tertentu. Jika datanya berupa teks, fitur biasanya berupa kata, token, atau nilai TF-IDF. Jika datanya berupa data tabular, fitur bisa berupa umur, kategori, nilai numerik, status, atau atribut lain yang membantu model membuat keputusan.

Kata naive berarti model membuat asumsi sederhana bahwa setiap fitur dianggap saling independen terhadap fitur lain ketika kelasnya sudah diketahui. Dalam dunia nyata, asumsi ini sering tidak sepenuhnya benar. Misalnya, kata "sangat" dan "bagus" dalam teks ulasan jelas bisa saling berkaitan. Namun asumsi sederhana ini membuat perhitungan menjadi ringan dan sering tetap menghasilkan performa yang layak, terutama untuk data teks berdimensi tinggi.

Intuisi sederhana: memilih kelas paling mungkin

Bayangkan Anda memiliki data komentar mahasiswa yang sudah diberi label: positif, netral, dan negatif. Ketika muncul komentar baru seperti "layanan akademik lambat dan tidak jelas", model perlu menebak labelnya. Naive Bayes akan melihat kata-kata pada komentar tersebut, lalu menghitung kelas mana yang paling mungkin menghasilkan kombinasi kata itu. Jika kata "lambat" dan "tidak jelas" lebih sering muncul pada komentar negatif, maka peluang kelas negatif akan menjadi lebih besar.

Dengan kata lain, model tidak memahami kalimat seperti manusia. Model hanya menghitung pola kemunculan fitur. Ia bertanya: dari semua kelas yang ada, kelas mana yang paling masuk akal jika melihat bukti berupa kata-kata pada data baru? Pendekatan ini sederhana, tetapi sangat berguna ketika dataset memiliki banyak teks pendek dan penulis membutuhkan baseline klasifikasi yang mudah dijelaskan.

Visualisasi alur keputusan Naive Bayes pada komentar baru
Tahap Contoh Makna
Input teks admin lambat Data baru yang belum punya label.
Token admin, lambat Kata dipakai sebagai fitur klasifikasi.
Bandingkan kelas positif vs negatif Model menghitung skor probabilitas tiap kelas.
Prediksi negatif Kelas dengan skor terbesar dipilih.

Konsep probabilitas bersyarat

Sebelum masuk ke rumus Naive Bayes, pahami dulu probabilitas bersyarat. Probabilitas bersyarat adalah peluang terjadinya suatu kejadian setelah kita mengetahui kejadian lain sudah terjadi. Notasinya biasa ditulis sebagai P(A|B), dibaca peluang A jika B diketahui terjadi. Contoh sederhana: peluang komentar berlabel negatif jika komentar tersebut mengandung kata "lambat".

Dalam klasifikasi teks, pertanyaan yang ingin dijawab biasanya berbentuk seperti ini: berapa peluang sebuah dokumen masuk kelas negatif jika dokumen itu memiliki kata tertentu? Kita tidak hanya melihat peluang kelas secara umum, tetapi peluang kelas setelah melihat bukti. Inilah alasan Naive Bayes cocok untuk klasifikasi: ia menggabungkan peluang awal suatu kelas dengan peluang fitur yang muncul pada kelas tersebut.

Rumus dasar Teorema Bayes

Teorema Bayes dapat ditulis secara sederhana sebagai berikut:

P(Kelas|Fitur) = P(Fitur|Kelas) x P(Kelas) / P(Fitur)

P(Kelas|Fitur) adalah peluang kelas setelah melihat fitur. P(Fitur|Kelas) adalah peluang fitur muncul pada kelas tertentu. P(Kelas) adalah peluang awal kelas sebelum melihat fitur. P(Fitur) adalah peluang fitur secara umum pada seluruh data. Dalam proses klasifikasi, pembagi P(Fitur) sering tidak perlu dibandingkan secara eksplisit karena nilainya sama untuk semua kelas yang sedang diuji.

Jika ada banyak fitur, misalnya banyak kata dalam sebuah komentar, Naive Bayes menghitung peluang tiap kata terhadap masing-masing kelas. Model lalu mengalikan peluang-peluang tersebut dengan peluang awal kelas. Kelas dengan skor terbesar dipilih sebagai prediksi. Ini inti dari cara kerja Naive Bayes.

Mengapa disebut naive?

Algoritma ini disebut naive karena menganggap fitur saling independen. Dalam teks, asumsi ini berarti kemunculan satu kata dianggap tidak bergantung pada kata lain setelah kelasnya diketahui. Padahal dalam bahasa alami, kata-kata sering berhubungan. Frasa "tidak bagus" berbeda dari kata "bagus" saja, dan kata "sangat" mengubah intensitas kata setelahnya. Namun model tetap memperlakukan fitur secara sederhana agar perhitungan efisien.

Asumsi ini bukan kelemahan mutlak. Justru karena sederhana, Naive Bayes sering menjadi baseline yang baik. Jika model sederhana sudah memberi hasil cukup kuat, peneliti punya titik pembanding yang jelas. Jika model yang lebih kompleks seperti SVM, Random Forest, atau deep learning digunakan, hasilnya bisa dibandingkan dengan Naive Bayes untuk menunjukkan apakah kompleksitas tambahan benar-benar memberi peningkatan performa.

Jenis Naive Bayes yang sering digunakan

Ada beberapa varian Naive Bayes. Pertama, Gaussian Naive Bayes digunakan ketika fitur berbentuk numerik kontinu dan diasumsikan mengikuti distribusi normal. Contohnya fitur usia, durasi, nilai sensor, atau ukuran tertentu. Kedua, Multinomial Naive Bayes sering digunakan untuk klasifikasi teks karena cocok dengan fitur berupa jumlah kemunculan kata atau bobot token. Ketiga, Bernoulli Naive Bayes cocok ketika fitur berbentuk biner, misalnya sebuah kata muncul atau tidak muncul dalam dokumen.

Untuk artikel klasifikasi teks, Multinomial Naive Bayes biasanya menjadi pilihan umum. Jika penulis menggunakan fitur Bag of Words, CountVectorizer, atau TF-IDF, varian ini mudah dijelaskan dan didukung oleh library populer seperti scikit-learn. Saat menulis metode, sebutkan varian yang dipakai agar pembaca tidak hanya melihat istilah umum "Naive Bayes" tanpa detail.

Contoh dataset kecil untuk memahami perhitungan

Misalkan kita punya dataset komentar sederhana seperti berikut:

Dataset mini untuk latihan perhitungan Naive Bayes
No Teks Label
1 layanan cepat positif
2 admin ramah positif
3 layanan lambat negatif
4 respon admin lambat negatif

Ada dua kelas: positif dan negatif. Jumlah data positif ada dua, jumlah data negatif ada dua. Jadi peluang awal masing-masing kelas adalah 2/4 atau 0,5. Sekarang kita ingin memprediksi komentar baru: "admin lambat". Secara intuitif, kata "admin" muncul di positif dan negatif, sedangkan kata "lambat" muncul pada negatif. Model perlu menghitung kelas mana yang skornya lebih besar.

Dalam praktik, model menghitung frekuensi kata pada tiap kelas. Pada kelas positif, kata yang muncul adalah layanan, cepat, admin, ramah. Pada kelas negatif, kata yang muncul adalah layanan, lambat, respon, admin, lambat. Kata "lambat" lebih kuat mengarah ke negatif karena muncul dua kali pada kelas negatif dan tidak muncul pada kelas positif.

Visualisasi frekuensi kata per kelas
Kata Frekuensi di kelas positif Frekuensi di kelas negatif Arah sinyal
admin 1 1 Netral, muncul di dua kelas.
lambat 0 2 Kuat mengarah ke negatif.
layanan 1 1 Tidak cukup membedakan kelas.

Masalah zero probability dan smoothing

Jika suatu kata tidak pernah muncul pada kelas tertentu, peluangnya bisa menjadi nol. Ini berbahaya karena Naive Bayes mengalikan peluang tiap fitur. Satu nilai nol dapat membuat seluruh skor kelas menjadi nol, walaupun fitur lain mendukung kelas tersebut. Misalnya kata "lambat" tidak pernah muncul di kelas positif, maka skor positif untuk komentar "admin lambat" bisa langsung jatuh ke nol.

Untuk mengatasi ini, digunakan teknik smoothing, biasanya Laplace smoothing. Prinsipnya adalah menambahkan nilai kecil pada setiap frekuensi kata agar tidak ada peluang yang benar-benar nol. Dengan smoothing, model tetap bisa menghitung peluang untuk kata yang belum pernah muncul pada kelas tertentu. Saat menulis metodologi, smoothing perlu disebutkan karena memengaruhi hasil prediksi dan membuat eksperimen lebih mudah direplikasi.

Contoh implementasi Naive Bayes dengan Python

Berikut contoh sederhana menggunakan scikit-learn. Contoh ini memakai CountVectorizer untuk mengubah teks menjadi fitur angka, lalu memakai MultinomialNB sebagai model klasifikasi.

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import Pipeline

texts = [
    "layanan cepat",
    "admin ramah",
    "layanan lambat",
    "respon admin lambat"
]
labels = ["positif", "positif", "negatif", "negatif"]

model = Pipeline([
    ("vectorizer", CountVectorizer()),
    ("classifier", MultinomialNB(alpha=1.0))
])

model.fit(texts, labels)

new_text = ["admin lambat"]
prediction = model.predict(new_text)
probability = model.predict_proba(new_text)

print(prediction)
print(probability)

Parameter alpha=1.0 menunjukkan Laplace smoothing. Pada dataset nyata, data perlu dibagi menjadi training dan testing, lalu dievaluasi dengan metrik yang sesuai. Contoh kecil di atas hanya untuk memahami alur dasar: teks diubah menjadi angka, model dilatih, lalu model memprediksi label data baru.

Output probabilitas biasanya berbentuk array. Urutan kolom mengikuti urutan kelas yang disimpan model. Agar tidak salah membaca hasil, cek model.classes_ sebelum menafsirkan probabilitas.

print(model.classes_)
# contoh output: ['negatif' 'positif']

print(probability)
# contoh output: [[0.78 0.22]]

Alur kerja Naive Bayes untuk klasifikasi teks

Jika digunakan dalam penelitian, alur kerja Naive Bayes sebaiknya ditulis runtut. Mulailah dari pengumpulan data, pelabelan, preprocessing, ekstraksi fitur, pembagian data, pelatihan model, pengujian, evaluasi, dan analisis hasil. Jangan langsung melompat dari dataset ke akurasi karena reviewer perlu melihat bagaimana eksperimen dibangun.

Untuk penjelasan struktur metode yang lebih lengkap, Anda bisa menghubungkannya dengan cara menulis metodologi klasifikasi artikel informatika.

Preprocessing yang umum dipakai

Preprocessing bertujuan membuat teks lebih konsisten sebelum masuk ke model. Pada bahasa Indonesia, langkah umum meliputi case folding, pembersihan tanda baca tertentu, tokenisasi, penghapusan stopword, dan stemming. Namun preprocessing tidak boleh dilakukan asal banyak. Setiap langkah sebaiknya punya alasan. Misalnya, stopword removal bisa membantu mengurangi kata umum yang tidak informatif, tetapi pada analisis sentimen beberapa kata seperti "tidak" justru penting karena mengubah makna.

Penulis perlu menjelaskan keputusan preprocessing dengan hati-hati. Jika kata negasi dihapus, hasil klasifikasi sentimen bisa terganggu. Jika stemming terlalu agresif, kata yang sebenarnya berbeda bisa disatukan secara keliru. Dalam artikel ilmiah, bagian preprocessing bukan hanya daftar langkah, tetapi penjelasan bagaimana data teks disiapkan agar sesuai dengan tujuan klasifikasi.

Bag of Words dan TF-IDF

Naive Bayes membutuhkan fitur numerik. Pada klasifikasi teks, dua pendekatan umum adalah Bag of Words dan TF-IDF. Bag of Words menghitung kemunculan kata dalam dokumen. Semakin sering kata muncul, semakin besar nilainya. Pendekatan ini sederhana dan cocok untuk memahami dasar model. Namun, kata yang sering muncul di banyak dokumen bisa menjadi terlalu dominan walaupun tidak terlalu informatif.

TF-IDF mencoba mengatasi masalah itu dengan memberi bobot lebih tinggi pada kata yang penting dalam dokumen tertentu tetapi tidak terlalu umum di seluruh korpus. Dalam penelitian, pilihan antara Bag of Words dan TF-IDF harus dijelaskan. Jika tujuan artikel adalah baseline sederhana, Bag of Words cukup. Jika ingin menangkap kata yang lebih diskriminatif, TF-IDF sering lebih tepat. Pilihan fitur juga dapat menjadi bagian dari eksperimen perbandingan.

Metrik evaluasi yang sebaiknya dilaporkan

Akurasi sering menjadi metrik pertama yang dilaporkan, tetapi tidak selalu cukup. Jika jumlah data antar kelas tidak seimbang, akurasi bisa menipu. Misalnya 90 persen data berlabel netral, model yang selalu menebak netral bisa punya akurasi tinggi tetapi gagal mengenali kelas positif dan negatif. Karena itu, precision, recall, F1-score, dan confusion matrix sebaiknya ikut dilaporkan.

Precision menunjukkan seberapa tepat prediksi positif model. Recall menunjukkan seberapa banyak data positif yang berhasil ditemukan. F1-score menggabungkan precision dan recall. Confusion matrix membantu melihat kelas mana yang sering tertukar. Untuk artikel informatika, pembahasan metrik perlu dikaitkan dengan tujuan penelitian. Penjelasan ini juga sejalan dengan cara menulis hasil dan pembahasan artikel informatika, karena hasil tidak cukup hanya berupa angka.

Contoh visualisasi confusion matrix dua kelas
Data aktual Diprediksi positif Diprediksi negatif Cara membaca
Positif 42 8 8 data positif gagal dikenali sebagai positif.
Negatif 6 44 6 data negatif salah diprediksi sebagai positif.

Dari visualisasi seperti ini, pembaca bisa melihat jenis kesalahan model, bukan hanya angka akurasi. Jika kesalahan lebih banyak terjadi pada kelas minoritas, pembahasan perlu menjelaskan kemungkinan penyebabnya, seperti data tidak seimbang, fitur kurang representatif, atau preprocessing yang menghapus kata penting.

Kelebihan Naive Bayes

Kelebihan utama Naive Bayes adalah efisiensi. Model ini cepat dilatih, ringan dijalankan, dan tidak membutuhkan data sebesar model kompleks. Untuk dataset teks yang ukurannya terbatas, Naive Bayes sering menjadi pilihan awal yang masuk akal. Algoritma ini juga relatif mudah dijelaskan pada bagian metode, sehingga cocok untuk penelitian mahasiswa, prototipe klasifikasi, dan baseline eksperimen.

Kelebihan lain adalah performanya sering cukup baik untuk teks pendek. Pada kasus spam detection, analisis sentimen sederhana, atau klasifikasi keluhan, pola kata tertentu bisa sangat informatif. Jika kata-kata pada tiap kelas cukup berbeda, Naive Bayes bisa memberi hasil kompetitif. Karena itu, model ini masih layak dibahas walaupun sudah banyak algoritma modern yang lebih kompleks.

Keterbatasan Naive Bayes

Keterbatasan paling terkenal adalah asumsi independensi fitur. Dalam bahasa alami, kata tidak berdiri sendiri. Makna sering muncul dari urutan, konteks, dan kombinasi kata. Naive Bayes dapat kesulitan menangkap frasa seperti "tidak buruk" atau sarkasme. Model juga bisa sensitif terhadap fitur yang jarang muncul, kualitas preprocessing, dan distribusi data training.

Selain itu, Naive Bayes bukan pilihan terbaik untuk semua jenis data. Jika hubungan antar fitur sangat kompleks, algoritma lain mungkin lebih kuat. Karena itu, dalam artikel ilmiah, jangan mengklaim Naive Bayes sebagai metode terbaik tanpa pembanding. Lebih aman menulis bahwa Naive Bayes digunakan sebagai baseline atau dipilih karena efisien, mudah diinterpretasikan, dan sesuai untuk klasifikasi teks tertentu.

Cara menulis Naive Bayes di bagian metode artikel

Saat menulis metode, hindari kalimat terlalu pendek seperti "penelitian ini menggunakan Naive Bayes". Kalimat itu belum menjelaskan apa pun tentang eksperimen. Tuliskan varian algoritma, bentuk fitur, preprocessing, pembagian data, parameter smoothing, dan metrik evaluasi. Semakin jelas detailnya, semakin mudah reviewer menilai apakah eksperimen bisa direplikasi.

Contoh penulisan yang lebih kuat: "Penelitian ini menggunakan Multinomial Naive Bayes untuk klasifikasi komentar layanan akademik. Teks diproses melalui case folding, tokenisasi, dan penghapusan stopword dengan pengecualian kata negasi. Fitur dibentuk menggunakan TF-IDF. Dataset dibagi menjadi data latih dan data uji dengan rasio 80:20. Model dievaluasi menggunakan accuracy, precision, recall, F1-score, dan confusion matrix." Pola ini lebih lengkap karena menjelaskan alur, bukan hanya nama algoritma.

Kesalahan umum saat memakai Naive Bayes

Kesalahan pertama adalah tidak menjelaskan preprocessing. Padahal hasil model teks sangat bergantung pada kualitas preprocessing. Kesalahan kedua adalah hanya melaporkan akurasi tanpa melihat distribusi kelas. Kesalahan ketiga adalah tidak menyebut varian Naive Bayes yang dipakai. Kesalahan keempat adalah tidak menjelaskan alasan memilih Bag of Words atau TF-IDF. Kesalahan kelima adalah tidak menyediakan pembanding atau baseline lain ketika penelitian mengklaim performa metode.

Kesalahan lain adalah menggunakan dataset terlalu kecil lalu membuat klaim terlalu luas. Jika dataset hanya berasal dari satu sumber dan periode singkat, kesimpulan harus dibatasi. Penulis perlu menjelaskan keterbatasan agar pembaca memahami bahwa hasil eksperimen berlaku pada konteks tertentu. Untuk membangun argumen novelty yang lebih kuat, baca juga cara menulis novelty artikel ilmiah informatika.

Kapan Naive Bayes layak dipakai?

Naive Bayes layak dipakai ketika dataset teks cukup sederhana, jumlah data tidak terlalu besar, dan peneliti membutuhkan baseline yang cepat. Algoritma ini cocok untuk eksperimen awal pada klasifikasi sentimen, pengelompokan keluhan, deteksi spam, atau kategorisasi dokumen. Model ini juga berguna ketika interpretasi dasar lebih penting daripada arsitektur kompleks.

Namun jika penelitian bertujuan menangkap konteks bahasa yang kompleks, urutan kata, atau representasi semantik mendalam, Naive Bayes mungkin tidak cukup. Dalam kasus seperti itu, Naive Bayes tetap bisa dipakai sebagai pembanding awal, sementara model lain seperti SVM, Random Forest, LSTM, atau transformer digunakan untuk eksperimen lanjutan. Posisi Naive Bayes sebagai baseline sering membuat penelitian lebih mudah dibaca karena pembaca punya titik awal untuk menilai peningkatan performa.

Kesimpulan

Naive Bayes Classifier bekerja dengan menghitung kelas yang paling mungkin berdasarkan fitur yang muncul pada data. Untuk klasifikasi teks, fitur biasanya berupa kata atau bobot kata. Model menggabungkan peluang awal kelas dengan peluang kemunculan fitur pada kelas tersebut, lalu memilih kelas dengan skor terbesar. Asumsi independensi membuat algoritma ini sederhana, cepat, dan mudah dijelaskan.

Dalam artikel informatika, Naive Bayes sebaiknya tidak hanya disebut sebagai nama metode. Penulis perlu menjelaskan varian yang digunakan, preprocessing, ekstraksi fitur, smoothing, pembagian data, dan metrik evaluasi. Dengan penjelasan yang runtut, Naive Bayes dapat menjadi metode yang kuat untuk baseline klasifikasi teks sekaligus mudah dipahami oleh reviewer.

FAQ

Apa fungsi Naive Bayes Classifier?

Naive Bayes Classifier digunakan untuk menentukan kelas sebuah data berdasarkan probabilitas fitur yang muncul pada masing-masing kelas, misalnya untuk klasifikasi teks, sentimen, spam, atau kategori dokumen.

Mengapa Naive Bayes cocok untuk klasifikasi teks?

Naive Bayes cocok untuk klasifikasi teks karena cepat, sederhana, dan bekerja baik pada fitur kata yang jumlahnya banyak, terutama jika menggunakan Bag of Words atau TF-IDF.

Apa kelemahan utama Naive Bayes?

Kelemahan utamanya adalah asumsi bahwa fitur saling independen. Pada teks, kata-kata sering saling bergantung sehingga model bisa kurang kuat untuk konteks bahasa yang kompleks.

Metrik apa yang sebaiknya dipakai untuk evaluasi Naive Bayes?

Selain accuracy, sebaiknya gunakan precision, recall, F1-score, dan confusion matrix, terutama jika dataset tidak seimbang atau memiliki lebih dari dua kelas.