バリデーションスコアとテストデータに対するスコアの差が大きい原因としては、色々なパターンがあり一概には言えないかと思いますが、良くある例として以下の二点が上げられるかと思います。
- train data(手元で学習用と検証用に分割)とtest dataでデータの分布が大きく違っている。
- 例)trainには、若年者のデータ。testには高齢者のデータばかりが集中しており、学習したモデルが上手くtestを予測できない。
- train dataを学習用と検証用に切る際に上手く分割できていない。
- 例)test(2020), train(2015, 2016, 2017, 2018, 2019)というような時系列的データセットが与えられた際に、2019, 2018, 2016, 2015年を学習用、2017を検証用にしている。
- 一般的に時系列予測は過去のデータから未来の予測をするものですが、上記の用に未来のデータを学習に使ってしまうと、リークと言ってバリデーションスコアが高くなってしまう傾向があります。
- 上記の場合、2020年を予測しようとしても想像していたよりスコアが伸びない可能性があります。
タイタニックのデータセットであれば、ひとまず改善案としてはバリデーションの切り方を工夫してみるのはどうでしょうか??
二値分類であれば、下記の記事のstratified kflodを参考にデータセットを作ってみると改善するかもしれません。
https://blog.amedama.jp/entry/2018/08/25/174530
*自分はタイタニックのデータに触れたことが無いので必ずしもそれが原因なのかは分かりません。