トレーニングよりも高いテスト精度。解釈する方法は?


23

多くの機能(1000を超える)を備えた最大150のサンプル(トレーニングとテストに分割)を含むデータセットを持っています。データに対して適切に機能する分類子と特徴選択方法を比較する必要があります。そのため、3つの分類方法(J48、NB、SVM)と2つの機能選択方法(CFS、WrapperSubset)を異なる検索方法(Greedy、BestFirst)で使用しています。

比較しながら、トレーニングの精度(5倍クロスフォールディング)とテストの精度を調べています。

J48およびCFS-BestFirstの結果の1つを次に示します。

{「accuracyTraining」:95.83、「accuracyTest」:98.21}

多くの結果はこのようなものであり、SVMにはテストの精度がトレーニングよりもはるかに高いことを示す多くの結果があります(トレーニング:60%、テスト:98%)

これらの結果をどのように有意義に解釈できますか?それが低ければ、私はそれが過剰適合であると言うでしょう。すべての結果を見ることで、この場合のバイアスと分散について何か言いたいことがありますか?この分類を意味のあるものにするために何ができますか?たとえば、トレーニングセットとテストセットを再選択するか、すべてのデータで相互検証を使用するだけですか?

73のトレーニングインスタンスと58のテストインスタンスがあります。一部の回答には、投稿時にこの情報がありませんでした。

回答:


20

最初のステップは、報告されたトレーニングとテストのパフォーマンスが実際に正しいかどうかを確認することだと思います。

  • 5倍の交差検証中の分割は、統計的に独立したcv train / testセットを生成する方法で行われますか?たとえば、データに繰り返し測定がある場合、それらは常に同じセットになりますか?
  • 150サンプルの5倍cvでの95.83%の精度は、5つの代理モデルの130のトレーニングサンプルのうち5つの間違ったサンプル、または5 * 130のトレーニングサンプルの25の間違ったケースと一致しています。
  • 98.21%のテスト精度を説明するのはより困難です。cvの1回の実行中に、各ケースを1回テストする必要があります。したがって、報告される可能性のある数値は、100%/ 150のステップである必要があります。98.21%は2.68個の誤ったケースに対応します(150個のテストケースのうち2個と3個の間違ったケースでは、それぞれ98.67%と98.00%の精度が得られます)。

  • モデルを抽出できる場合は、報告された精度を外部で計算します。

  • ランダム入力で報告される精度は何ですか?
  • 外部相互検証を行います。データを分割し、トレーニング部分のみをプログラムに渡します。「外部」テストデータを予測し、精度を計算します。これはプログラムの出力と一致していますか?
  • 報告された「テスト精度」が独立したデータに由来することを確認してください(二重/ネストされたクロス検証):プログラムがデータ駆動型の最適化を行う場合(たとえば、多くのモデルを比較して「最適な」機能を選択する場合)、これはトレーニングエラーに似ています一般化エラーよりも)

@mbqには、トレーニングエラーが機械学習でほとんど役に立たないことに同意します。しかし、実際に役立ついくつかの状況のいずれかにある可能性があります。プログラムが精度を比較することで「最良」モデルを選択し、選択できるトレーニングエラーのみがある場合、トレーニングエラーが実際に賢明なものを許可するかどうかを確認する必要があります選択。
@mbqは、区別できないモデルの最良のシナリオを概説しました。ただし、さらに悪いシナリオも発生します。テストの精度と同様に、トレーニングの精度も分散の影響を受けますが、通常関心のある一般化の精度と比較して楽観的なバイアスがあります。これにより、実際にはモデルのパフォーマンスは異なりますが、モデルを区別できない場合があります。しかし、彼らのトレーニング(または内部履歴)の精度は、楽観的なバイアスのために、それらを区別するには近すぎます。たとえば、反復的な機能選択方法は、内部相互検証の精度(その相互検証の実装方法に応じて)で持続するような問題の影響を受ける可能性があります。

したがって、このような問題が発生する可能性がある場合は、プログラムが決定に使用する精度から賢明な選択が生じる可能性があるかどうかを確認することをお勧めします。これは、内部cv精度(最適なモデルの選択に使用されると思われる)が、統計的に独立した分割で外部から行われたcvに関して楽観的に偏っていないことを確認することを意味します。繰り返しますが、合成データやランダムデータは、プログラムが実際に何をするのかを見つけるのに役立ちます。

2番目のステップは、@ mbqが既に指摘したように、統計的に独立した分割で観測された違いが意味があるかどうかを調べることです。

統計的に意味のある違いを得るために、与えられたサンプルサイズで観察する必要がある精度の違いを計算することをお勧めします。観測された変動が少ない場合、特定のデータセットでどのアルゴリズムが優れているかを判断できません。それ以上の最適化は意味がありません。


消化するための素晴らしい情報がここにあります。まず、非常に詳細な数字になるとは思っていなかったので、正確な数字を教えてくれなかったことを非常に残念に思っています。とにかく、73のトレーニングと58のテストデータがあります。これらは統計的に分離されたものではなく、異なる時期に私が撮影したものです。トレーニングサンプルは最初に機能選択アルゴリズムに取り込まれ(ラッパーfsメソッドには内部5倍cvがあります)、次に5倍にされ、最高の精度が得られ、モデルが保存されます。そして、そのモデルはテストの精度を計算するために使用されます。
ercu

16

トレーニングセットの精度は、機械学習では意味がありません。それを無視します。


ありがとう!私は同じ最高のテスト精度で多くの結果を持っているので、今は結果を比較することはできません(あなたがそれを言っていない場合、私は比較するためにトレーニングの精度も調べます:) したがって、テストとトレーニングに分割する代わりに、すべてのデータセットで複数回の相互検証を実行して、結果を比較するのに適していますか?または他のメトリックが必要ですか?
エルキュー

1
CVは確かに良いアイデアです。とにかく、いくつかの「最良の」アルゴリズムまたはパラメータセットが存在する可能性があることに注意してください(同じ、または統計的に見分けがつかない精度を最良のケースから提供するという意味で)-それも問題ではありません。さらに良いのは、安定した結果が得られていることを意味します。シャープな最適化は、パラメータをチェリーピッキングすることでモデルをオーバーフィットしたことを示唆する場合があります。

8
(トレーニングセットとテストセット間の精度の差を計算することにより)予測アルゴリズムの過剰適合の量を推定するために、トレーニングセットの精度を知ることが役立ちます。
フランクハレル

理由を説明してください。
inf 14年

1
定義から、MLメソッドは目に見えないデータのパフォーマンスに関するものであるため、この結果についての保証はありません(モデルは、統計モデリングのようにデータの基礎となるメカニズムを再実装することは想定されていません)。実際には、多くの方法が過度に正確な予測を提供するため、欺くだけです。

6

これについては、いくつかの深刻な問題があります。まず、サンプルの合計サイズが膨大でない限り、データの分割は信頼できません。再度分割すると、異なる結果が得られます。とりわけ、推定精度の信頼区間を考慮していません。第二に、5倍交差検定は十分に正確ではありません。適切な精度を達成するには、100回繰り返す必要がある場合があります。第三に、不連続の不適切なスコアリングルール(正確に分類された割合)を精度スコアとして選択しました。このような不適切なスコアリングルールは、誤ったモデルの選択につながります。


3

アルゴリズムの実装にグリッチがないと仮定して、問題を見てみましょう。

トレーニングデータから小さなサブセットを取得し、学習アルゴリズムを実行することを想像してください。それは明らかに非常にうまくいくでしょう。98%に近い精度を達成するサブセットを抽出することは常に可能です。

これで、テストデータはこのサブセットに非常に似ていますか?はいの場合、さらに多くのデータを収集する必要があります。バイアス分散の観点からは、分散が大きいと言えます。


1

持っているサンプルの数(150)に対して機能が多すぎます(1000)。サンプルを増やすか、機能の数を減らす必要があります。

彼らは通常、特徴の数^ 2 =必要なサンプルの数を言います。したがって、少なくとも100万のサンプルが必要です。


0

これは、任意のMLアルゴリズム、さらにはカスタム分類子を使用しても実行できます。異なるkフォールドクロス検証スキーム、つまり2倍または10倍も試してください。kが高いほど、テストエラーが減少することが期待されます。

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