私の経験では、適切にトレーニングされた Naive Bayes 分類器は、通常、驚くほど正確です (そしてトレーニングが非常に高速で、私が今まで使用したどの分類器ビルダーよりも著しく高速です)。
したがって、分類子の予測を改善したい場合は、いくつかの場所を調べることができます。
分類子を調整します(分類子の調整可能なパラメーターを調整します)。
ある種の分類器の組み合わせ手法(アンサンブル、ブースティング、バギングなど) を適用します。またはあなたができる
分類器に渡されたデータを見てください。データを追加するか、基本的な解析を改善するか、データから選択した機能を絞り込みます。
w/r/t ナイーブ ベイジアン分類器では、パラメーターの調整は制限されています。データ、つまり前処理の品質と機能の選択に集中することをお勧めします。
I. データ解析 (前処理)
私はあなたの生データが各データポイントの生テキストの文字列のようなものであると仮定します.一連の処理ステップにより、各オフセットが1つの機能に対応するように、各文字列を各データポイントの構造化ベクトル(1D配列)に変換します(通常は単語) であり、そのオフセットの値は周波数に対応します。
ステミング: 手動またはステミング ライブラリを使用して? 人気のあるオープンソースのものは、Porter、Lancaster、および Snowball です。したがって、たとえば、特定のデータ ポイントにProgrammer、program、progamming、programmedという用語がある場合、ステマーはそれらを 1 つのステム (おそらくprogram ) に縮小するため、そのデータ ポイントの用語ベクトルの値は 4 になります。これはおそらくあなたが望むものです。
同義語の検索: ステミングと同じ考え方 - 関連する単語を 1 つの単語に折りたたみます。そのため、同義語ファインダーは、開発者、プログラマー、コーダー、およびソフトウェア エンジニアを特定し、それらを 1 つの用語にまとめることができます。
ニュートラル ワード: クラス間で同様の頻度を持つ単語は、特徴がよくありません
Ⅱ.機能選択
NBC の典型的な使用例を考えてみましょう。スパムのフィルタリング。どのように失敗するかをすぐに確認でき、それを改善する方法もすぐに確認できます。たとえば、平均以上のスパム フィルターには、すべて大文字の単語の頻度、タイトルの単語の頻度、タイトルの感嘆符の出現など、微妙な特徴があります。さらに、最良の特徴は多くの場合、単一の単語ではなく、単語のペアやより大きな単語グループなどです。
III. 特定の分類子の最適化
30 クラスの代わりに「1 対多」方式を使用します。つまり、2 つのクラスの分類子 (クラス A と「その他すべて」) から始めて、「その他すべて」のクラスの結果が に返されます。クラス B と「その他すべて」に分類するためのアルゴリズムなど。
フィッシャー法(おそらく単純ベイズ分類器を最適化する最も一般的な方法です。) 私にとって、フィッシャーは入力確率の正規化(より正確には標準化) と考えられます。NBC は特徴確率を使用して「ドキュメント全体」の確率を構築します。 . フィッシャー法は、ドキュメントの各機能のカテゴリの確率を計算し、これらの機能の確率を組み合わせて、その組み合わせた確率をランダムな機能セットの確率と比較します。