【DeepLeaning】訓練データとテストデータ 適切な量と交差検証について

Deep Learning とは何なのか・・・まったく知らない状態から挑戦してみたいと思います!

訓練データとテストデータ = 汎化能力?

機械学習モデルは、訓練データを使用してパターンや関係性を学習しその学習を元に新しいデータを予測することができます。
ただし訓練データに対して過剰に適合すると新しいデータに対してうまく汎化できず、正確な予測を行えなくなることがあります。
これを過剰適合(オーバーフィッティング)と呼びます。

そのため、訓練データだけでなくテストデータを使用してモデルを評価することが重要です。
テストデータは訓練データとは別の未知のデータを用いることでモデルがどの程度一般化(汎化)できるかを測定します。
テストデータでの性能が訓練データでの性能に近い場合モデルが過剰適合していないと言えます。

こうして訓練データとテストデータを使用することでモデルが訓練データに過剰に適合せず、汎化能力を獲得できるようになります。
これによりモデルが未知のデータに対して正確な予測を行えるようになります。

テストデータ

テストデータを大量に用意することは、モデルの性能を正確に評価するために重要です。
しかし、テストデータを増やすだけでよいモデルができるわけではありません。

テストデータを大量に用意することによりモデルが過剰適合していないことを確認できる可能性が高くなります。
また、テストデータを増やすことでモデルの汎化性能が高いことを確認することができます。
しかし、モデルの設計やハイパーパラメータの調整なども重要な要素でありテストデータを増やすだけでこれらの問題を解決することはできません。

また、テストデータを大量に用意することはコストや時間がかかるため、
実際の問題に対して必要以上にテストデータを用意することは適切ではありません。
代わりに、適切な量のテストデータを用意しモデルの設計やハイパーパラメータの調整に時間をかけることが重要です。

テストデータの「適切な量」

テストデータの量を決定する方法として、以下の方法が考案されています。

  1. ホールドアウト法(Holdout method)
    データセットを訓練データとテストデータに分割し訓練データの一部を検証用データとして用いる手法です。
    通常、訓練データとテストデータの比率は7:3や8:2などが一般的です。
  2. クロスバリデーション(Cross-validation)
    データセットを複数のフォールドに分割しそれぞれを交差検証の訓練データとテストデータに使います。
    この方法は、モデルの性能をより正確に評価することができますが計算コストが高くなる可能性があります。

    交差検証とは、機械学習において訓練データとテストデータを複数のグループに分割しそれぞれを訓練データとテストデータに使って複数回評価を行う手法。
    例えば、5つに分割した場合は1つをテストデータ、残りを訓練データとして5回の評価を行います。

  3. ブートストラップ法(Bootstrap method)
    元のデータセットからランダムサンプリングにより新しいデータセットを作成し、それを訓練データやテストデータに使います。
    この手法は、データセットが小さい場合や外れ値が含まれている場合に有効です。