前回はデータを3つに分けました。でも、データが少ない時はどうする? 今日はその救世主『交差検証(クロスバリデーション)』を学びます。限られたデータを無駄なく使う技を身につけましょう。
前回の3分割の話なんですが、例えばデータが300件しかない場合だと、テストに回す余裕がほぼないんです。
こういう時はどうすればよいですか?
いい実務的な疑問ね。
そんな時に活躍するのが交差検証よ。
交差って…何と何が交わるの?
データをk個のグループ(fold)に分けて、1つを検証用、残りk-1個を学習用にして評価するの。
これをk回繰り返して、すべてのグループが1回ずつ検証役を経験するのよ。
これをk分割交差検証と呼ぶわ。
つまり5分割なら、5パターンの学習・評価を行い、5つの結果を平均して最終的な性能とするわけですね。
全員が1回ずつテスト役をやるんですね〜、公平〜!
バドミントンの団体戦で、全員が1回ずつ試合に出るのと似てるじゃん。
たまたま不調な人がいても平均で見られる。
いいバドミントン例えね。
偏りの少ない評価ができるのが最大のメリット。
実務では k=5 か k=10 が定番よ。
データも全部使えるから、少ないデータにもやさしいですね〜。
注意点としては、計算コストがk倍になります。
大規模データや深層学習では現実的でないため、単純に訓練/検証を分ける方式(ホールドアウト法)が使われることも多いです。
バリエーションとして、全データ数Nに対してk=Nにする『Leave-One-Out交差検証(LOOCV)』もあるわ。
これはデータを最大限使えるんだけど、計算コストも大きいのよ。
データが数十件しかない場合に使われることがあるわ。
なるほど、データが少ないときほど交差検証の価値が上がるわけか。
その通りです。
また、時系列データでは未来→過去への情報漏れを防ぐため、時間順を維持した特殊な交差検証(Time Series CV)を使います。
ランダムに分けると未来情報が過去の予測に混入してしまうので。
未来を見てはいけないんですね〜、タイムリープ禁止!
タイムリープ禁止、わかりやすいじゃん(笑)。
株価予想でいうと、来月の株価を学習に混ぜたら今月のテストがズルになるってことか〜!
さらに、クラスの偏りがあるデータでは『層化(stratified)k分割交差検証』という手法を使うわ。
各foldに元データと同じクラス比率を保つ工夫ね。
陽性1%・陰性99%のようなデータで特に重要よ。
補足すると、交差検証で得られる評価は平均値と標準偏差の両方を見ると品質が掴めます。
ばらつきが大きいモデルは運で良いスコアが出るだけかもしれないので要注意です。
平均だけじゃなくてバラつきも見るのね。
納得じゃん、安定性も性能のうちだ。
みんなの前で発表する時の実力も、たまたまじゃなく毎回の平均が大事、みたいな話ですね〜。
Kaggleなどのコンペでは、交差検証スコアと公開リーダーボードのスコアが一致するかを見て、『このモデルは汎化しているか』を判断します。
交差検証は実務でも欠かせない道具です。
試験では『k分割交差検証はk回の学習・評価を行い平均を取る』『データを無駄なく使える』の2点を押さえましょう。
確認クイズ
5分割交差検証では学習と評価を何回繰り返すか?
- 1回
- 3回
- 5回
- 10回
こたえを見る
正解: 3. 5回
k分割交差検証はk回の学習・評価を行い、その結果の平均を最終的な評価値とします。5分割なら5回です。全データが公平に検証役を経験するため、評価の偏りが減ります。