Triển khai Naive Bayes


10

Tôi đang thực hiện thuật toán Naive Bayes để phân loại văn bản với làm mịn Laplacian. Vấn đề tôi gặp phải là xác suất gần bằng 0 vì tôi đang nhân nhiều phân số nhỏ. Do đó, xác suất cuối cùng mang lại không. Điều này là do có một số từ trong tài liệu và bộ đào tạo.

Vì điều này, tôi không thể phân loại các văn bản. Có cách nào tôi có thể khắc phục vấn đề này không? Tôi đang làm điều gì sai trong việc thực hiện của tôi?


... Bạn có thể tránh số học dấu phẩy động.

msdn.microsoft.com/en-us/magazine/jj891056.aspx Bạn tìm thấy một câu trả lời dễ dàng ở đây.
Roshan Mehta

Câu trả lời:


14

Thủ thuật thông thường để tránh dòng chảy này là tính toán với logarit, sử dụng danh tính Đó là, thay vì sử dụng xác suất, bạn sử dụng logarit của họ. Thay vì nhân chúng, bạn thêm chúng.

logi=1npi=i=1nlogpi.

Một cách tiếp cận khác, không phổ biến lắm, là bình thường hóa sản phẩm bằng tay. Thay vì chỉ giữ một số dấu phẩy động , bạn giữ một số dấu phẩy động (giả sử) và số mũ âm sao cho . Sau mỗi thao tác bạn bình thường hóa số kết quả.p 0[ 1 , 2 ) x p = p 0 2 xpp0[1,2)xp=p02x


2
Nó cũng hữu ích để lưu ý thủ thuật logumrec trong bối cảnh này: en.wikipedia.org/wiki/LogSumExp
Bitwise
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.