2つの単純ベイズ分類器を比較しています。1つはNLTKからのもので、もう1つはscikit-learnからのものです。私はマルチクラス分類問題(3つのクラス:ポジティブ(1)、ネガティブ(-1)、ニュートラル(0))を扱っています。
特徴選択を実行せずに(つまり、利用可能なすべての機能を使用して)、70,000インスタンスのトレーニングデータセット(ノイズラベル、インスタンス分布が17%ポジティブ、4%ネガティブ、78%ニュートラル)を使用して、2つの分類器をトレーニングします、最初のものはnltk.NaiveBayesClassifierであり、2番目のものはsklearn.naive_bayes.MultinomialNB(with fit_prior=True
)です。
トレーニング後、30,000インスタンスのテストセットで分類子を評価したところ、次の結果が得られました。
**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
Scikitの分類器は全体的な精度と精度が優れていますが、少なくとも私のデータでは、NLTKの分類器と比較して再現率が非常に低いことに気づきました。それらが(ほぼ)同じ分類子である可能性があることを考慮すると、これは奇妙ではありませんか?