Naive Bayes を使用してサンプルを分類しようとしています。私のサンプル サイズは 280 万レコードで、レコードの 90% は Class Label(従属変数) = "0" で、残りは "1" です。テスト セットの分布も同じです (90% - 10%)。Naive Bayes Classifier は、テスト セット全体に「0」のラベルを付けます。この場合、どう対処すればよいですか?そのような場合に実装できる他のアルゴリズムはありますか。
3 に答える
より良い分類器を使用することで、問題が解決される場合とされない場合があります。ここでの問題は、問題のバランスが取れていないことです。データが分離できない場合、90% の精度は良好なパフォーマンスを表す可能性があり、分類器は常に同じ予測を行うことでこれを達成します。これが望ましい動作でない場合は、コスト関数を使用するか、ポジティブからリサンプリングして、より偶数のポジティブになるようにする必要があります。
ほとんどすべての分類方法は、実際にはバイナリ結果を返すのではなく、特定のケースがカテゴリに含まれる可能性を示す傾向スコア (通常は 0 から 1 の間) を返します。バイナリの結果は、カットオフ ポイント (通常は 0.5) を選択することによって作成されます。
弱い予測子を使用してまれなケースを識別したい場合、どの分類方法でも傾向スコアが 0.5 を超えるケースを見つけることができず、ケースのようにすべて 0 になることがあります。
このような状況でできることは 3 つあります。
- 可能であれば、より強力な予測因子を見つけることをお勧めします
- データセットのパターンを特定するには、次のような別の統計手法の方が適している場合があります
- カットオフポイントを下げると、真陽性の数が増えますが、偽陽性が増えます
次のような多数の分類子があります。
- ロジスティック回帰
- SVM
- 決定木
- 神経網
- ランダムフォレスト
- たくさん、もっとたくさん...
そのほとんどは、カスタム手法を使用してクラスの不均衡を処理できます。たとえば、SVM では「クラスの重み付け」です (scikit-learn で利用可能)。
では、なぜ NB は失敗するのでしょうか。Naive Bayes は非常に Naive であり、各特徴の独立性を前提としていますが、これはめったにありません。したがって、理解するのは簡単なアイデアですが、一般的に非常に弱い分類器です。