不均衡データのバイナリ分類モデル


14

次の仕様のデータセットがあります。

  • 2,821陽性の193,176サンプルのトレーニングデータセット
  • 673個の陽性の82,887個のサンプルを含むテストデータセット
  • 10個の機能があります。

バイナリ分類(0または1)を実行したい。私が直面している問題は、データのバランスが非常に悪いことです。いくつかの機能エンジニアリングとともにデータを正規化およびスケーリングし、いくつかの異なるアルゴリズムを使用した後、これらは私が達成できる最高の結果です。

mean square error : 0.00804710026904
Confusion matrix : [[82214   667]
                   [    0     6]]

すなわち、6つの正のヒットのみです。これはロジスティック回帰を使用しています。これを使って試したさまざまなことを次に示します。

  • RandomForest、DecisionTree、SVMなどのさまざまなアルゴリズム
  • 関数を呼び出すためのパラメーター値の変更
  • 複雑な機能を含む直感ベースの機能エンジニアリング

さて、私の質問は:

  1. ポジティブヒットの数を改善するにはどうすればよいですか?
  2. そのような場合に過剰適合があるかどうかをどのように判断できますか?(私はプロットなどを試みました)
  3. 多分これが私が持っている可能性のある最良の適合である場合、どの時点で結論づけることができますか?(673のうち6ヒットのみを考えると悲しいようです)
  4. パターン認識が向上してヒットが増えるように、ポジティブサンプルインスタンスの重量を増やす方法はありますか?
  5. どのグラフィックプロットを使用すると、外れ値や、どのパターンが最適かについての直感を検出できますか?

Pythonでscikit-learnライブラリを使用していますが、すべての実装はライブラリ関数です。

編集:

他のいくつかのアルゴリズムの結果は次のとおりです。

ランダムフォレスト分類子(n_estimators = 100)

[[82211   667]
[    3     6]]

決定木:

[[78611   635]
[ 3603    38]]

回答:


11
  1. バイナリ分類を行っているので、分類のしきい値を調整しようとしましたか?あなたのアルゴリズムはかなり鈍感に見えるので、私はそれを下げて改善があるかどうかを確認します。

  2. 学習曲線、または1つのモデルパラメーターとトレーニングおよび検証エラーのプロットを常に使用して、モデルが過適合であるかどうかを判断できます。それはあなたの場合には適合していないようですが、それは単なる直観です。

  3. まあ、最終的にそれはあなたのデータセットとあなたが試した異なるモデルに依存します。この時点で、さらにテストを行わなければ、明確な答えはありません。

  4. トピックの専門家であると主張することなく、あなたが従うことができるいくつかの異なるテクニックがあります(ヒント:googleの最初のリンク)あなたは実際に探しています。

  5. パターンの直観が何を意味するのかわかりませんが、詳しく説明していただけますか?

ところで、試したさまざまなアルゴリズムの結果はどうでしたか?それらは異なっていましたか?


1
ロジスティック回帰のしきい値を調整すると、うまくいきました。ソースのリストをありがとう。
tejaskhot 14年

誰かがロジスティック回帰のしきい値を調整する方法のコードスニペットを貼り付けることはできますか?
ブレンツ

0

データは非常に歪んでいるため、このような場合は、データをオーバーサンプリングした後にモデルトレーニングを試すこともできます。

SMOTEとADASYNは、データのオーバーサンプリングに使用できる手法の一部です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.