Thực hiện bổ sung Naive Bayes trong trăn?


9

Vấn đề

Tôi đã thử sử dụng vịnh Naive trên bộ dữ liệu tội phạm được dán nhãn nhưng nhận được kết quả thực sự kém (độ chính xác 7%). Naive Bayes chạy nhanh hơn nhiều so với các thuật toán khác mà tôi đã sử dụng vì vậy tôi muốn thử tìm hiểu tại sao điểm số lại quá thấp.

Nghiên cứu

Sau khi đọc, tôi thấy rằng các vịnh Naive nên được sử dụng với các bộ dữ liệu cân bằng vì nó có độ lệch cho các lớp có tần suất cao hơn. Vì dữ liệu của tôi không cân bằng, tôi muốn thử sử dụng Naive Bayes bổ sung vì nó được tạo ra đặc biệt để xử lý các sai lệch dữ liệu. Trong bài viết mô tả quy trình, ứng dụng dành cho phân loại văn bản nhưng tôi không hiểu tại sao kỹ thuật này không hoạt động trong các tình huống khác. Bạn có thể tìm thấy bài báo tôi đang đề cập ở đây . Nói tóm lại, ý tưởng là sử dụng các trọng số dựa trên các lần xuất hiện trong đó một lớp không xuất hiện.

Sau khi thực hiện một số nghiên cứu, tôi đã có thể tìm thấy một triển khai trong Java nhưng thật không may, tôi không biết bất kỳ Java nào và tôi chỉ không hiểu rõ thuật toán đủ để tự thực hiện.

Câu hỏi

nơi tôi có thể tìm thấy một triển khai trong python? Nếu điều đó không tồn tại, tôi nên tự mình thực hiện nó như thế nào?

Câu trả lời:


5

Naive Bayes có thể xử lý các bộ dữ liệu mất cân bằng. Hãy nhớ lại rằng công thức Bayes là

P(yx)=P(xy)P(y)P(x)P(xy)P(y)

Vì vậy, đưa vào tài khoản.P ( y )P(xy)P(y)P(y)

Trong trường hợp của bạn có thể bạn quá phù hợp và cần một số làm mịn? Bạn có thể bắt đầu với làm mịn +1 và xem liệu nó có cải thiện gì không. Trong python, khi sử dụng numpy, tôi sẽ thực hiện việc làm mịn theo cách này:

table = # counts for each feature 
PT = (table + 1) / (table + 1).sum(axis=1, keepdims=1)

Lưu ý rằng điều này mang lại cho bạn nhiều Naive Bayes - chỉ áp dụng cho dữ liệu phân loại.

Tôi cũng có thể đề xuất liên kết sau: http://www.itshared.org/2015/03/naive-bayes-on-apache-flink.html . Đó là về việc triển khai Naive Bayes trên Apache Flink. Trong khi đó là Java, có thể nó sẽ cung cấp cho bạn một số lý thuyết mà bạn cần để hiểu thuật toán tốt hơn.


Bạn có thể đúng, có vẻ như Bayes ngây thơ chỉ có vấn đề mất cân bằng với phân loại văn bản. Bạn có thể giải thích làm mịn là gì?
châu chấu

Bạn đã có một cái nhìn vào liên kết? Nó được giải thích ở đó. Nói tóm lại, khi ước tính đôi khi không bao giờ thấy trong quá trình đào tạo và làm mịn đảm bảo rằng nó không làm hỏng hiệu suất phân loại bằng cách thêm một số lượng bổ sung (trong trường hợp laplace hoặc làm mịn +1) cho tất cả các tính năng . xP(xy)x
Alexey Grigorev

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.