2

トレーニングデータセットで、クラスラベルの大部分が 1 (他のクラスラベルは 0) である入力テストデータセットを処理しClass Imbalance Problemて実行する必要があります。binary-classification

たとえば、次はトレーニング データの一部です。

93.65034,94.50283,94.6677,94.20174,94.93986,95.21071,1
94.13783,94.61797,94.50526,95.66091,95.99478,95.12608,1
94.0238,93.95445,94.77115,94.65469,95.08566,94.97906,1
94.36343,94.32839,95.33167,95.24738,94.57213,95.05634,1
94.5774,93.92291,94.96261,95.40926,95.97659,95.17691,0
93.76617,94.27253,94.38002,94.28448,94.19957,94.98924,0

最後の列はclass-label-0または1です。実際のデータセットは10:1、クラスの比率によって非常に歪んでいます。つまり、約 700 のサンプルの が 0class labelであるのに対し、残りの 6800 のサンプルは が 1class labelです。

上記は、指定されたデータセット内のすべてのサンプルのほんの一部ですが、実際のデータセットには、ほぼすべての90%サンプルが非常によく似ています。class-label1class-label0

この種のデータセットを処理するのに最適な分類器はどれですか?

パラメータlogistic-regressionsvm_ class-weight_ "balanced"_

4

2 に答える 2

0

しかし、精度の大幅な向上は得られませんでした。

正確さは進むべき道ではありません (例えば、正確さのパラドックスを参照してください)。クラスの比率が 10:1 の場合、常に を予測するだけで、簡単に 90% の精度を得ることができますclass-label 0

いくつかの良い出発点は次のとおりです。

  • 別のパフォーマンス メトリックを試してください。例: F1 スコアマシューズの相関係数

  • データセットの「リサンプリング」: 過小評価されたクラスから例を追加 (オーバーサンプリング) / 過小評価されたクラスからインスタンスを削除 (アンダーサンプリング; 大量のデータが必要です)

  • 別の観点:異常検出は、不均衡なデータセットの良い試みです

  • 別のアルゴリズムは別の可能性ですが、銀のシュートではありません。おそらく、決定木から始める必要があります(多くの場合、不均衡なデータセットでうまく機能します)。


編集(使用していることがわかっscikit-learnた)

(scikit-learn) パラメーターからの重みはclass_weight、分類器のトレーニングに使用されます (それでbalanced問題ありません) が、パフォーマンスの良さを知るには、精度は適切ではありません。

このモジュールは、分類のパフォーマンスsklearn.metricsを測定するために、いくつかの損失関数、スコア関数、および効用関数を実装しています。また、 scikit Learn を使用したマルチクラスのケースの精度、再現率、精度、および f1-score を計算する方法もご覧ください。.

于 2016-09-15T13:46:34.490 に答える
0

ROC 曲線と AUC 曲線をプロットして、パラメーターとさまざまなしきい値を確認してみましたか? そうでない場合は、良い出発点になるはずです。

于 2016-09-16T09:55:33.567 に答える