キカベン
機械学習でより便利な世の中へ
G検定対策
お問い合わせ
   

テストセットはなぜ必要?

thumb image

モデル選択の話でも軽くふれましたが、モデルを学習している際にトレーニングセットとバリデーションセットを使います。それらとは別にテストセットというデータもあります。

このテストセット、なぜ必要なのか?

バリデーションセットだけでモデルの検証は十分ではないのか?

念のための最終チェック?

もしテストセットで評価しなかったら困ることでもあるのか?

実は、バリデーションセットはモデルのハイパーパラメータの調整に使う、つまりはモデル選択に関わってくるので、どうしてもバリデーションセットのデータ分布や特徴にあったモデルを選択しがちになります。

極端な例をあげます。トレーニングとバリデーションのデータは日本人の画像ばかりで、実際にプロダクションで使うときにアメリカ人の画像だけだったら、モデル選択は正しくとも実用にはなりませんよね。この場合、トレーニングとバリデーションのデータもアメリカ人の画像であるべきです。

自動運転を日本の路上で訓練して、アメリカの路上でテストしたらうまくいきますか?訓練そのものがアメリカの環境で行われるべきでした。

もちろんこれらは極端な例です。でも、現実にこういったことは起こり得るので、それを防ぐためにもテストセットが役に立ちます。

また、モデルの訓練やパラメータ調整で使われなかったデータでモデルの性能を評価するのがよりフェアな方法だとは思いますよね。

上記のような極端な問題が起こらないように、テストセットはトレーニングセットやバリデーションセットと同様な分布や特徴を持ったデータである必要があります。また、それらはプロダクションで使われるデータをよりよく代表しているものでなければなりません。

よって、訓練したモデルがどの程度、一般化・普遍化されているかを評価するためにプロダクションに行く前にチェックをするためのテストセットを準備しておきます。

なぜなら、モデルがトレーニングやバリデーションのデータを過学習しているかもしれないからです。

理想を言えば、モデルの選択と訓練が完了し、テストセットで十分な性能が出ていることを確認できれば学習は成功したと言えます。

もしテストセットでの評価が悪い場合は、もう一度はじめからやり直しです。もちろん、トレーニングセットとバリデーションセットだけを使ってやり直します。

テストセットの情報を使ってはいけません。ただし、テストセットを作るときにきちんとデータのシャッフルをしてからトレーニング、バリデーション、テスト、と振り分けたのかどうかは確認した方が良いかもしれません。

いずれにせよ、一番やってはいけないのはこのテストセットでの評価を元にまたハイパーパラメータをチューニングすることです。これではテストセットの意味がありません。本日はここまで。



コメントを残す

メールアドレスは公開されません。