はじめに
こちらの記事では「交差検証(クロスバリデーション)」について考えていきます。
「交差検証ってなんのために必要なの?」
「交差検証にはどんな種類があるの?」
といった疑問に答えていきたいと思います!
未知なるデータ
機械学習の目的は「説明変数と目的変数のセット」を学習して関係性のルールを見出し、
「未知なるデータ」に対しても正解を導けるようになることでした。
ここで大切なのは学習したデータではなく「未知なるデータ」に対して正解を導くということです。
どんなに既知の問題を完璧に解けるようになっても
未知なる本番の試験で正解できなければ意味がありません。
そこで機械学習においては学習により見出した関係性のルールを評価するためにあらかじめ「未知なるデータ」を用意しておきます。
具体的には手元のデータのいくらかを別に取り分けておきます。
そして取り分けたデータをあえて学習には用いず「未知なるデータ」としてテスト用に残しておきます。
以下ではその「未知なるデータ」の取り分け方について、代表的な3つの方法を見ていきたいと思います。
ホールドアウト法
ホールドアウト法は手元のデータを2つに分割します。
そして片方を学習用、もう片方を未知なるデータとしてテスト用にする手法です。
以下の図のようなイメージです(2つに分割し、青色を学習用、赤色をテスト用とするイメージです)。

ホールドアウト法はシンプルでわかりやすいです。
ただ、データをどう分割するかでテストの結果が決まってしまう面があり
ある意味、結果が運次第になるというデメリットがあります。
またテスト用に分割されたデータは一度も学習されないことになり
学習の機会が大きく失われてしまいます。
1つ抜き交差検証法
ホールドアウト法のデメリットを改善したものが1つ抜き交差検証法です。
1つ抜き交差検証法では手元のデータのうちたった1個のデータだけをテスト用に取り分けておきます。
以下の図のようなイメージです。

例えば100個のデータがあったとするとそのうち1個だけを取り分け(上図の赤色)、
残りの99個のデータ(上図の青色)で学習します。
そして99個のデータで学習した結果を取り分けておいた1個のデータでテストします。
これにより手元のデータを最大限学習できるようになります。
そしてこの作業をすべてのデータに対して繰り返します。
つまり1番目のデータを取り分けて残りの99個のデータで学習したら、
次は2番目のデータを取り分けて残りの99個のデータで学習、
同様に3番目、4番目…と繰り返していきます。
そうして最終的にそれらの結果を平均(ならす)します。
これによりデータの分割の仕方(運)によって結果が決まってしまうことを回避します。
k分割交差検証法
1つ抜き交差検証法がデータを「全分割」しているとすると、
k分割交差検証法はデータを「k分割」する手法です。
以下のような図のイメージになります。

上記はk=5、つまり5分割交差検証を行った場合の図です。
多くの場合k=5あるいはk=10として分割を行います。
5分割の場合はそのうち1つ(上図の赤色)をテスト用に、
残りの4つ(上図の青色)を学習用に使います。
k分割交差検証法は1つ抜き交差検証法よりも計算量が少なくなるというメリットがあります。
100個のデータであれば、1つ抜き交差検証法では100回の学習を行うことになりますが、k分割交差検証法であればk回の学習だけで済みます。
実務ではデータの個数が膨大になることも多々あります。
したがって計算量を抑制できるk分割交差検証法が主に使われることになります。
分散とバイアス
ホールドアウト法、1つ抜き交差検証法、k分割交差検証法という3つの手法を見てきました。
ここで3つの手法を分散とバイアスという視点で考えてみましょう。
なお分散とバイアスについては以下の記事も参考にしてください。

まずバイアスについては、ホールドアウト法におけるバイアスが最も大きくなってしまいます。
というのもたった1度の学習、しかも、たまたま選ばれたデータでの学習を行うだけなのでそもそも学習が不足しています。
したがって未学習でバイアスの大きい単純思考型の学習にとどまってしまいます。
これに対して1つ抜き交差検証法やk分割交差検証法はバイアスを抑制しています。
学習とテストを何度も行うことで学習不足や単純思考に陥ることを回避しています。
分散については、1つ抜き交差検証法の分散が最も大きくなってしまいます。
1つ抜き交差検証法はデータが100個あれば学習とテストを100回行います。
おまけに毎回の学習データは非常に似通っています。
そのためテスト用に取り分けた1個のデータの値によって、テスト結果が大きくばらついて(分散が大きくなって)しまいます。
一方でk分割交差検証法はk回(5回や10回)のみの試行であることや、各回の学習データがバラエティに富んでいることで、テスト結果のばらつき(分散)が抑制されます。
これらからk分割交差検証法が分散とバイアスについて最もバランスがとれた手法ということになります。
k分割交差検証法が多くの場面で用いられているのは、計算量を抑制できることに加え、分散とバイアスのバランスが良い手法であるということが背景にあります。
まとめ
最後に今回の記事についてポイントを整理します。
- 機械学習では「未知なるデータ」をあらかじめテスト用に取り分ける
- ホールドアウト法はデータを2分割するシンプルな方法
- 1つ抜き交差検証法はデータを1つだけ取り分け、データの数だけ学習とテストを繰り返す
- k分割交差検証法はデータをk分割してk回学習とテストを行う
- 分散とバイアスのバランスはk分割交差検証法が最も優れている
今回見てきたホールドアウト法や交差検証法は機械学習ならではの手法です。
これを知っておくと(初学者が陥りがちな)見せかけの精度の高さに騙される心配はかなり減りますので、ぜひ一緒に覚えておきましょう。
今回は以上になります。
最後まで読んでいただきありがとうございました!

統計学の基礎を効率的に学べるベーシック講座です。統計学の入り口となる「確率分布・推定・検定」について豊富な図を用いて説明していきます。
2021年3月リリース後すでに20,000人以上の方に受講いただき大人気ベストセラーコースとなっています!ぜひこの機会に統計学や確率思考という一生モノのスキルを一緒に身につけましょう!
※上記リンクからですと時期によってはクーポンが自動適用されます。
※Udemyは世界最大級のオンライン学習プラットフォームです。以下記事にてUdemyをご紹介しておりますのでよろしければこちらもご覧ください。
