Smoothing dalam model Naive Bayes

13

Prediktor Naif Bayes membuat prediksi menggunakan rumus ini:

P(Y=y|X=x)=αP(Y=y)iP(Xi=xi|Y=y)

di mana adalah faktor normalisasi. Ini membutuhkan estimasi parameter dari data. Jika kita melakukan ini dengan smoothing, maka kita mendapatkan estimasiP ( X i = x i | Y = y ) kαP(Xsaya=xsaya|Y=y)k

P^(Xsaya=xsaya|Y=y)=#{Xsaya=xsaya,Y=y}+k#{Y=y}+nsayak

di mana ada nilai yang mungkin untuk . Saya baik-baik saja dengan ini. Namun, untuk yang sebelumnya, kami punyaX insayaXsaya

P^(Y=y)=#{Y=y}N

di mana ada contoh dalam kumpulan data. Kenapa kita tidak memuluskan sebelumnya? Atau lebih tepatnya, apakah kita menghaluskan yang sebelumnya? Jika ya, parameter smoothing apa yang kita pilih? Agak konyol juga untuk memilih , karena kita sedang melakukan perhitungan yang berbeda. Apakah ada konsensus? Atau tidak masalah?Nk

Chris Taylor
sumber

Jawaban:

5

Alasan khas untuk menghaluskan di tempat pertama adalah untuk menangani kasus-kasus di mana . Jika ini tidak dilakukan, kita akan selalu mendapatkan P ( Y = y | X = x ) = 0 setiap kali ini terjadi.#{Xsaya=xsaya|Y=y}=0P(Y=y|X=x)=0

Ini terjadi ketika, misalnya, mengklasifikasikan dokumen teks yang Anda temui kata yang tidak ada dalam data pelatihan Anda, atau hanya tidak muncul di kelas tertentu.

Di sisi lain, dalam kasus probabilitas kelas sebelumnya, , situasi ini seharusnya tidak terjadi. Jika ini dilakukan, ini berarti Anda mencoba untuk menetapkan objek ke kelas yang bahkan tidak muncul dalam data pelatihan.P(Y=y)

Juga, saya belum pernah menemukan istilah -moothing. Penghalusan Laplace atau Additive jauh lebih umum.k

alto
sumber
1
Alasan untuk smoothing secara umum adalah untuk menghindari overfitting data. Kasus di mana hitungan beberapa kelas adalah nol hanya merupakan kasus overfit tertentu (yang kebetulan sangat buruk). Anda mungkin masih ingin memperlancar probabilitas ketika setiap kelas diamati. Saya kira saya terganggu oleh asimetri yang tampak - penghalusan Laplace sesuai dengan asumsi bahwa ada pengamatan tambahan dalam kumpulan data Anda. Mengapa Anda mengabaikan pengamatan itu ketika cocok dengan yang sebelumnya?
Chris Taylor
Saya mungkin berpendapat kurang masuk akal untuk memuluskan kelas sebelumnya karena MLE untuk cenderung jauh lebih baik daripada perkiraan P ( X i = x i | Y = y )P(Y=y)P(Xsaya=xsaya|Y=y) . Jika saya memiliki alasan untuk meyakini bahwa perkiraan kelas saya berat sebelah, saya akan menyisihkan set validasi dan mengubah sendiri nilai kelas. Dalam pengalaman saya, overfitting cenderung menjadi kurang masalah dengan Bayes naif (sebagai lawan dari mitra diskriminatif, regresi logistik). Mungkin Anda lebih suka atau lebih banyak perawatan Bayesian ?
alto
"Situasi ini seharusnya tidak terjadi. Jika ini terjadi, ini berarti Anda mencoba untuk menetapkan objek ke kelas yang bahkan tidak muncul dalam data pelatihan". Uhh ... bagaimana classifier akan menetapkan objek ke kelas yang belum pernah dilihat sebelumnya (yaitu, tidak ada dalam data pelatihan)?
Jemenake
@Jemenake Masalahnya biasanya disebut sebagai Zero-shot learning, misalnya lihat Zero-Shot Learning dengan Kode Output Semantik
alto
ketika kita melatih model menggunakan set data pelatihan, kita bisa membangun sebuah vocab menggunakan kata-kata yang muncul di set data pelatihan, jadi mengapa tidak hanya menghapus kata-kata baru yang tidak ada dalam vocab ketika membuat prediksi pada set tes?
alpukat