Klasifikasi Naif-Bayes untuk grup yang tidak sama

8

Saya menggunakan pengklasifikasi naif bayes untuk mengklasifikasikan antara dua kelompok data. Satu kelompok data jauh lebih besar daripada yang lain (di atas 4 kali). Saya menggunakan probabilitas sebelumnya dari setiap grup di classifier.

Masalahnya adalah bahwa hasil yang saya dapatkan memiliki 0% tingkat positif benar dan 0% tingkat positif palsu. Saya mendapatkan hasil yang sama ketika saya mengatur sebelum ke 0,5 dan 0,5.

Bagaimana saya bisa menetapkan ambang batas ke sesuatu yang lebih baik sehingga saya bisa mendapatkan hasil yang lebih seimbang?

Saya memiliki masalah yang sama ketika menggunakan classifier Logistic Regression. Saya menyelesaikannya dengan mengurangi suku sebelumnya dari bias.

Ketika saya menggunakan Fisher Linear Discriminant pada data ini, saya mendapatkan hasil yang baik dengan ambang batas yang ditetapkan di tengah.

Saya berasumsi ada beberapa solusi umum untuk masalah ini, saya tidak bisa menemukannya.

UPDATE: Saya baru saja memperhatikan bahwa saya classifiernya overfitting. Kinerja pada set pelatihan sempurna (100% benar).

Jika saya menggunakan grup yang sama, maka classifier mulai mengklasifikasikan ke grup "kecil" juga, tetapi kinerjanya sangat buruk (lebih buruk daripada FLD atau LR).

UPDATE2: Saya pikir masalahnya adalah saya menggunakan matriks kovarians penuh. Berjalan dengan matriks kovarians diagonal memberi saya hasil yang lebih "seimbang".

Ran
sumber
0% benar positif dan 0% salah positif? Itu harus meletakkan segala sesuatu di grup lain, lalu ... coba atur prioritas Anda di 80% untuk grup "positif". Tapi pertama-tama, periksa untuk melihat Anda tidak membuat kesalahan di suatu tempat dalam kode ...
jbowman
Mungkin prior terlalu besar / kecil? (beberapa masalah dengan Aritmatika Floating-Point?)
Dov

Jawaban:

7

Menetapkan semua pola ke kelas negatif tentu bukan "hasil aneh". Bisa jadi classifier optimal Bayes selalu mengklasifikasikan semua pola sebagai milik kelas mayoritas, dalam hal ini classifier Anda melakukan apa yang seharusnya dilakukan. Jika kepadatan pola yang termasuk dalam kelas positif tidak pernah melebihi kepadatan pola yang termasuk dalam kelas negatif, maka kelas negatif lebih mungkin terlepas dari nilai atribut.

Yang harus dilakukan dalam keadaan seperti itu adalah untuk mempertimbangkan kepentingan relatif kesalahan positif palsu dan negatif palsu, dalam praktiknya jarang terjadi bahwa biaya dari dua jenis kesalahan yang berbeda adalah sama. Jadi, tentukan kerugian untuk kesalahan positif palsu dan negatif palsu dan pertimbangkan ini dalam menetapkan probabilitas ambang (perbedaan biaya kesalahan klasifikasi sama dengan mengubah probabilitas sebelumnya, jadi ini mudah diterapkan untuk Bayes naif). Saya akan merekomendasikan penyetelan prior untuk meminimalkan estimasi validasi silang dari kerugian (memasukkan biaya kesalahan klasifikasi yang tidak setara).

Jika biaya kesalahan klasifikasi Anda sama, dan pelatihan Anda menentukan prioritas kondisi operasional, maka dengan asumsi bahwa implementasi Anda benar, ada kemungkinan bahwa Anda sudah memiliki klasifikasi NB terbaik.

Dikran Marsupial
sumber
tolong periksa pembaruan saya. Klasifikasi saya overfitting. Bagaimanapun, jika saya menggunakan grup yang sama maka classifier mulai berperilaku lebih baik, tetapi kinerja masih rendah .. mengubah ambang batas (prior) tidak mempengaruhi kinerja sama sekali ketika satu grup jauh lebih besar. terima kasih
Ran
1
@Bisa saya tidak bisa menghilangkan perasaan bahwa ada sesuatu yang hilang di sini.1. Bisakah Anda melaporkan AUC dari setiap classifier? 2. Berapa banyak contoh positif / negatif yang Anda miliki per kelas? 3. Bagaimana Anda memvalidasi classifier? yang-k-lipat-cv? toilet? 3. Perhatikan bahwa sifat NB adalah untuk menciptakan probabilitas ekstrim p (kelas | x) mendekati 0 atau 1, sehingga kita harus menemukan ambang keputusan terbaik, yaitu t sehingga p (kelas = 1 | x)> t => kelas 1, atau kelas 0. Menemukan ambang keputusan seperti itu setara dengan menyesuaikan prior.
steffen
@Bisa mengubah prior harus memengaruhi kinerja;). Jika perubahan kecil tidak membantu, coba beberapa ekstrem.
steffen
2
@Bisa, sulit untuk menentukan apa masalahnya tanpa memiliki informasi tambahan tentang ukuran set pelatihan, sifat atribut dll. Namun satu hal yang terlintas dalam pikiran adalah bahwa NB memiliki masalah jika probabilitas bersyarat nol , seolah-olah itu terjadi, output akan menjadi nol terlepas dari nilai atribut lainnya. Apakah probabilitas untuk kelas minoritas selalu persis nol? Jika itu masalahnya, itu mungkin masalahnya, dalam hal ini menggunakan koreksi Laplace untuk memperkirakan probabilitas bersyarat mungkin membantu.
Dikran Marsupial
0

Perbesar grup data yang lebih kecil agar sesuai dengan grup besar dengan perhitungan. Ini akan meregangkan data grup yang lebih kecil, tetapi itu akan memungkinkan perhitungan yang lebih setara.

Jika Anda masih mendapatkan hasil aneh seperti saat ini, periksa seluruh implementasi Anda dari awal untuk memburu kesalahan (mungkin sederhana).


sumber
apa yang Anda maksud dengan "Perbesar data yang lebih kecil ... dengan perhitungan"? dapatkah Anda menjelaskan lebih lanjut?
Dov
mengklasifikasikan segala sesuatu sebagai milik kelas negatif bukanlah hasil yang aneh, kadang-kadang itu adalah hal yang benar untuk dilakukan karena kepadatan pola negatif selalu melebihi kepadatan pola positif di mana-mana.
Dikran Marsupial