ホールドアウトと交差検証

機械学習において学習データとテストデータの分離は重要事項です.分離にあたっては一般的に以下の2つの手法が用いられます.

  • ホールドアウト検証:対象データの中からテストデータを分離して,残りを学習データとする方法.
  • k-分割交差検証:対象データをk個に分割し,そのうちの1つをテストデータ,残りのk-1個を学習データとする方法.k-分割交差検証では,テストデータを変更しながらk回の学習と検証を繰り返し,k回の検証結果を平均した結果を用いることが多い.

ホールドアウト検証は手軽な一方で,テストデータに偏りがないかどうかの判断が難しい点が課題です.その点においては,交互とはいえ満遍なくテストデータを使用するk-分割交差検証はより良い評価ができます.汎化性能の確認が必要な場合にはk-分割交差検証を実施することが望ましいと言えます.ただし,k回の学習が必要になるので,計算コストがかかるのが難点です.

<k-分割交差検証について>
分類器の性能評価において,学習データがなかなか揃わず,量の確保が難しいということが生じやすいのは想像に難くありません.学習の観点からはデータが大いにこしたことはないのですが,当然,テストデータを確保しなければ評価ができません.しかし,テストデータを確保すると学習データが減ってしまう...というジレンマに陥ってしまうのです.このような場合にはk-分割交差検証が有効です.k分割交差検証は,kの値を大きくすれば,より良い性能が得られることが期待できます.計算コストの問題はありますが,kを小さくすることは.試行数は減りますが,k-分割交差検証のそもそもの考え方に馴染まないのです.
学習・検証に時間やコストがかかる場合は,ホールドアウトで見当をつけておいて,k-分割交差検証のkの値を小さくするという方法も考えられます.また,傾向を掴む段階において学習・検証の回数を間引くという方法もあります.
scikit-learnにはk-分割交差検証を行うサポートクラス sklearn.cross_validation.KFoldがあります.