Implementasi Naif Bayes


10

Saya menerapkan algoritma Naive Bayes untuk kategorisasi teks dengan penghalusan Laplacian. Masalah yang saya miliki adalah bahwa probabilitas mendekati nol karena saya mengalikan banyak fraksi kecil. Oleh karena itu, probabilitas akhirnya menghasilkan nol. Ini karena ada beberapa kata dalam dokumen dan set pelatihan.

Karena itu, saya tidak dapat mengkategorikan teks. Apakah ada cara saya bisa mengatasi masalah ini? Apakah saya melakukan sesuatu yang salah dalam implementasi saya?


... Anda dapat menghindari aritmatika floating-point.

msdn.microsoft.com/en-us/magazine/jj891056.aspx Anda menemukan jawaban yang mudah di sini.
Roshan Mehta

Jawaban:


14

Trik yang biasa untuk menghindari underflow ini adalah dengan menghitung dengan logaritma, menggunakan identitas Artinya, alih-alih menggunakan probabilitas, Anda menggunakan logaritma mereka. Alih-alih mengalikannya, Anda menambahkannya.

catatansaya=1nhalsaya=saya=1ncatatanhalsaya.

Pendekatan lain, yang tidak begitu umum, adalah menormalkan produk secara manual. Alih-alih hanya menyimpan satu angka floating point , Anda menyimpan nomor floating point (katakanlah) dan eksponen negatif sedemikian rupa sehingga . Setelah setiap operasi Anda menormalkan angka yang dihasilkan.halhal0[1,2)xhal=hal02x


2
Juga bermanfaat untuk mencatat trik logsumexp dalam konteks ini: en.wikipedia.org/wiki/LogSumExp
Bitwise
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.