機械学習モデルの真の実力は「学習に使っていないデータ」でしか測れません。この項目では、データを訓練・検証・テストに分割する理由と、限られたデータを有効活用する交差検証の方法を学びます。モデル評価の土台となる、実務でも試験でも必須の知識です。
📖 概要
機械学習の目的は、手元のデータを丸暗記することではなく、未知のデータに対して正しく予測できるモデルを作ることです。ところが、学習に使ったデータでの誤差(訓練誤差)は、モデルを複雑にすればいくらでも小さくできてしまいます。そのため、未知データに対する誤差(汎化誤差)を推定する仕組みが必要になります。
その基本が、データ集合を役割の異なる部分集合に分割することです。パラメータの学習に使う「訓練データ」、ハイパーパラメータの調整やモデル選択に使う「検証データ」、最終的な性能評価にのみ使う「テストデータ」の3つに分けるのが標準的な構成です。
さらに、データ量が限られている場合には、分割の仕方による偶然の偏りを抑えるために交差検証が用いられます。代表的な方法として、単純に一度だけ分割するホールドアウト法と、分割を複数回繰り返して平均するk-分割交差検証法があります。
🔍 キーワード解説
訓練データ・検証データ・テストデータ
データ集合は一般に3つに分割されます。訓練データ(training data)は、重みなどのパラメータを直接学習させるためのデータです。検証データ(validation data)は、学習率や正則化の強さといったハイパーパラメータの選択、モデル構造の比較、早期終了の判断などに使われます。テストデータ(test data)は、すべての調整が終わったモデルの最終的な汎化性能を見積もるためのデータで、モデル選択の過程では一切使ってはいけません。
検証データとテストデータを分ける理由は重要です。検証データで最も良かったモデルを選ぶという操作を繰り返すと、モデルは検証データに間接的に適合していきます。そのため、検証データでの性能は汎化性能をやや楽観的に見積もる傾向があり、完全に独立したテストデータによる最終評価が必要になるのです。
訓練誤差と汎化誤差
訓練誤差は、訓練データ上で測った誤差です。モデルの表現力を高めれば高めるほど小さくできますが、それが良いモデルであることを意味しません。
汎化誤差は、モデルが従うべきデータの分布全体から新しくサンプルしたデータに対する誤差の期待値であり、本当に最小化したい量です。汎化誤差そのものは直接計算できないため、学習に使っていない検証データやテストデータ上の誤差で近似的に推定します。
訓練誤差が小さいのに汎化誤差(の推定値)が大きい状態が過剰適合(オーバーフィッティング)、訓練誤差自体が大きい状態が過少適合(アンダーフィッティング)です。両者の差を監視することが、正則化やモデル選択の出発点になります。
ホールドアウト法
ホールドアウト法は、データ集合を一度だけ訓練用と検証用(さらにテスト用)に分割し、固定して使う最も単純な方法です。実装が簡単で計算コストも小さいため、データが十分に大きい場合に広く使われます。
ただし、分割が一度きりであるため、たまたま検証データに偏りがあると評価結果が不安定になります。特にデータ数が少ない場合、どのサンプルが検証側に入ったかによって推定される性能が大きく変動する点が弱点です。また、分類問題では各クラスの比率が分割後も保たれるようにする層化(stratification)が行われることが多いです。
k-分割交差検証法
k-分割交差検証法(k-fold cross-validation)は、データをk個のほぼ等しいブロック(fold)に分割し、そのうち1個を検証用、残りのk-1個を訓練用として学習・評価を行う操作を、検証用ブロックを入れ替えながらk回繰り返す方法です。k回の評価結果の平均を性能の推定値とします。
すべてのデータが一度は検証に使われるため、ホールドアウト法よりも推定のばらつきが小さく、少ないデータを有効に活用できます。一方で、学習をk回繰り返す必要があるため計算コストはk倍になります。kには5や10が使われることが多く、極端な場合としてk=データ数とするleave-one-out交差検証もあります。深層学習では1回の学習コストが大きいため、大規模データではホールドアウト法、小規模データでは交差検証、と使い分けられることが多いです。
📝 試験でのポイント
- 訓練・検証・テストの3つのデータの役割の違いは頻出です。「ハイパーパラメータ調整に使うのはどれか」「最終評価にのみ使うのはどれか」を即答できるようにしましょう
- 訓練誤差と汎化誤差の大小関係から、過剰適合・過少適合のどちらの状態かを判定させる問題が出やすいです
- ホールドアウト法とk-分割交差検証法の長所・短所の対比(計算コスト vs 推定の安定性、データの有効活用)を整理しておきましょう
- k-分割交差検証で「学習と評価を何回行うか」「最終的な性能をどう算出するか(k回の平均)」を問う形式にも注意が必要です
- テストデータをモデル選択に使ってはいけない理由(評価が楽観的に偏る)を説明できるようにしておきましょう
📚 まとめ
汎化誤差は直接計算できないため、学習に使っていないデータで推定します。データは訓練・検証・テストに分割し、検証はモデル選択に、テストは最終評価にのみ使います。ホールドアウト法は簡便ですが分割の偶然に左右されやすく、k-分割交差検証法は計算コストと引き換えに安定した推定を与えます。データ量と学習コストに応じて適切な検証方法を選ぶことが、信頼できるモデル評価の基本です。
