1

ロジスティック回帰をクラシファイアとして使用するモデルを実装しました。モデルを改善するためにトレーニングとテストの両方の学習曲線をプロットして、次に行うべきことを決定したいと考えました。学習曲線 - トレーニングの精度がなぜ高まり始めたのはなぜですか?

学習曲線をプロットするために、モデル、事前分割データセット(列車/テストXとY配列、NB:train_test_split関数を使用)、スコアリング関数指数関数的に配置されたn個のサブセットに対するデータセットトレーニングを反復し、学習曲線を返す。

私の結果は、トレーニング精度はそれほど高く開始しない理由かしら下の画像に enter image description here

あり、その後、突然、トレーニングセットのサイズが大きくなると再び上昇し始め、その後、ドロップ?逆に、テスト精度のために。私は非常に精度が良いと思っていましたが、最初は小さなデータセットによるノイズがあり、データセットがより一貫していたために騒音が発生していました。誰かがこれを説明できますか?

最後に、これらの結果は、分散/中程度の偏り(私の状況では70%の精度はそれほど悪くはない)を意味すると仮定して、私のモデルを改善するためにアンサンブル手法または極端なフィーチャエンジニアリングに頼る必要があります。

答えて

3

は、のデータセットが小さい場合(非常に高いトレーニング精度、低いテスト精度)にトレーニングサンプルをオーバーフィットしていると思います。データセットのサイズが大きくなると、分類器はより一般化してになり、テストデータセットの成功率が上がります。

10^3セットした後、精度は、あなたがトレーニングを過剰適合と

+0

あなたの意見をお寄せいただきありがとうございます。極端なフィーチャエンジニアリングやアンサンブルのようなチューニングを行うと精度が向上すると思いますか?または、データのノイズ(不可解なエラー)のために精度限界に達した可能性があります。 – DiamondDogs95

+0

@ DiamondDogs95こんにちは!残念ながら、データの内容(アプリケーションドメイン、機能など)を知らなくても、伝えるのは難しいです。 – bakkal

0

限り私の理解が行くように、テストデータセットをunderfitting間の良好なバランスを達成示唆している、70%で横ばいにあなたの学習曲線を思わ高い分散シナリオを示します。複雑なモデルは、通常、少数のサンプルによく適合するため、トレーニングセットの精度は高くなります。複雑なモデルであっても、サンプル数が増えるにつれて、クラスを完全に分離できないため、精度が低下し始めます。

あなたは検証データセットを「テスト」と呼んでいますが、通常は検証と呼ばれます。列車と検証データセットのカバレッジが増加し、サンプル数が増加すると、そのモデル構成の最高のパフォーマンスが検出されたことがわかります。より多くのサンプルデータを得ることは助けにならないでしょう。精度を向上させたい場合は、偏りを減らす方法を見つける必要があります。これは通常、モデリングパラメータを調整するか、別の学習アルゴリズムを使用することを意味します。

関連する問題