2017-11-02 15 views
1

私はランダムフォレストとサポートベクターマシンで84%の精度を与えていますが、13%の非常に低いaucしか与えないモデルを作りました。私はこれをPythonで構築しています。私は機械学習とデータサイエンスには初めてです。なぜモデルは84%の高い精度を与えるが、非常に低いAUC 13%を与えるのか?

私はデータセットで0と1のラベルを予測しています。私の全体的なデータセットは30744のレコードを持っています。 ラベル1 - 6930 ラベル0 - 23814

これは問題ないですか?モデルは過剰になっていますか? aucの改善についてのご意見をお待ちしていますか?

答えて

3

あなたの問題は、データセットがのアンバランスであり、実際にはオーバーフィットしている可能性があるように見えます。

これらのケースでは、精度は最良の指標ではなく、AUCはおそらくトレーニングが改善する可能性があることを示しています。 と言うのは難しいですが、でもいいですか...もっと藻類を試しましたか?このデータセットで他の(より良い)結果を聞いたことがありますか?

実際、明日は日食があるかどうか予測するモデルを想像してください。そうでないランダムなフォレストは、単に「いいえ」と言っても非常に高い精度を持つことができます。しかし、本当のポジティブなことはまったくありません!

直接的で簡単なテストでは、ラベル0とラベル1の同じ数のサンプルを使用してデータセットからサブサンプルを選択することになります。精度はより関連性の高いメトリックになります(現在の84 %)。さらに、クラスがバランスを取るまで、いくつかのラベル1の例を複製することもできます(最終的に小さなランダムな摂動を使用して)。ところで、train/val/testのためにデータセットの別々の部分を保管し、クロスバリデーションも考慮してください。

最後に、不均衡なデータセット、特にROSEとSMOTEのテクニックを扱い、一般的にリサンプリングすることをお勧めします。 これらは役に立つかもしれません:

0

いいえ、あなたのモデルは罰金ではありません。 あなたのデータセットでは、およそ88%のレコードが "Label 0"に属しています。これにより、モデルバイアスが "Label 0"になります。したがって、AUCが低い場合でも、データの大部分が「ラベル0」に属するので、84%の精度を示します。 モデルをより正確にするために、レコードを「ラベル0」にアンダーサンプリングしたり、オーバーサンプルレコードを「ラベル1」に属したりすることができます。

希望します。

関連する問題