Tôi đang so sánh hai trình phân loại Naive Bayes: một from NLTK và một from scikit-learn. Tôi đang đối phó với một vấn đề phân loại nhiều lớp (3 lớp: dương (1), âm (-1), và trung lập (0)).scikits tìm hiểu và nltk: hiệu suất phân loại Naive Bayes rất khác nhau
Không thực hiện bất kỳ lựa chọn tính năng nào (sử dụng tất cả các tính năng có sẵn) và sử dụng tập dữ liệu đào tạo 70.000 trường hợp (được gắn nhãn nhiễu, với phân phối thể hiện 17% dương, 4% âm và trung bình 78%), Tôi đào tạo hai phân loại, đầu tiên là một nltk.NaiveBayesClassifier, và thứ hai là một sklearn.naive_bayes.MultinomialNB (với fit_prior=True
).
Sau khi đào tạo, tôi đánh giá phân loại trên tập kiểm tra của tôi về 30.000 trường hợp và tôi nhận được kết quả như sau:
**NLTK's NaiveBayes**
accuracy: 0.568740
class: 1
precision: 0.331229
recall: 0.331565
F-Measure: 0.331355
class: -1
precision: 0.079253
recall: 0.446331
F-Measure: 0.134596
class: 0
precision: 0.849842
recall: 0.628126
F-Measure: 0.722347
**Scikit's MultinomialNB (with fit_prior=True)**
accuracy: 0.834670
class: 1
precision: 0.400247
recall: 0.125359
F-Measure: 0.190917
class: -1
precision: 0.330836
recall: 0.012441
F-Measure: 0.023939
class: 0
precision: 0.852997
recall: 0.973406
F-Measure: 0.909191
**Scikit's MultinomialNB (with fit_prior=False)**
accuracy: 0.834680
class: 1
precision: 0.400380
recall: 0.125361
F-Measure: 0.190934
class: -1
precision: 0.330836
recall: 0.012441
F-Measure: 0.023939
class: 0
precision: 0.852998
recall: 0.973418
F-Measure: 0.909197
tôi đã nhận thấy rằng trong khi phân loại Scikit của có độ chính xác tổng thể tốt hơn và chính xác, thu hồi của nó là rất thấp so với NLTK, ít nhất là với dữ liệu của tôi. Có tính đến rằng họ có thể (gần như) cùng một phân loại, không phải là lạ?
Tính năng là gì? Bạn có thử 'BernoulliNB' không? Điều đó nên gần gũi hơn với NLTK Naive Bayes. –
Cảm ơn bạn đã trả lời. Các tính năng là các từ có giá trị 1 nếu chúng tồn tại trong tài liệu (boolean). Kết quả cho scikits BernoulliNB rất gần với MultinomialNB: 'chính xác: 0.834680 lớp: 1 \t chính xác: 0,400380 \t thu hồi: 0,125361 \t F-Measure: 0,190934 lớp: -1 \t chính xác: 0,330836 \t thu hồi: 0.012441 \t F-Measure: 0,023939 lớp: 0 \t chính xác: 0,852998 \t thu hồi: 0,973418 \t F-Measure: 0.909197' –
điều duy nhất tôi có thể nhìn thấy trong documentat ion là phân loại NB của NBT dường như không làm mịn. Tôi sẽ không nghĩ rằng để tạo ra một sự khác biệt lớn, mặc dù ... –