titanicでも、House pricesでも、testスコアの方がtrainスコアより高いケースが度々出てきたので、何故そうなり、どんな意味があるか調べたメモ。
参考サイト:
- Test accuracy higher than training. How to interpret?
- Is it wrong if I get training accuracy lower than test accuracy?
- How can I explain the fact that test accuracy is much higher than train accuracy?
- How is it possible to obtain better results on the test set than on the training set?
調べたところによると・・・
- データの偏り
ー>対策: - trainとtestを分割割合やrandom_stateを変えて、再度行う
- ネストした交差検証を用いて、複数のテストデータで交差検証を行う。
- テストデータの内容が、前処理段階で訓練データに漏れている(データリーク)
ー>対策: - データリークが起きていないかチェック。
- データ量が大きい時は、データを訓練データ、検証データ、テストデータの3つに分け、『訓練データ・検証データ』でパラメータチューニングと交差検証を行い、最終テストを『テストデータ』で行う。
- データ不足
ー>対策: - データ分割時のテストデータの割合を増やしてみる、8:2 -> 7:3 とか
- データをできる限り増やす
- cvの数を10回とかに増やす
- 偶然による発生
ー>対策: - データ分割時のrandom_stateを変更して再検証
- データ分割割合の変更による再検証
0コメント