【【初心者必見】ホールドアウト法とクロスバリデーション、どっちを使う?機械学習の評価方法を完全攻略

こんにちは。ゆうせいです。

あなたは今、一生懸命作ったAIモデルの性能をどうやって測ればいいのか、悩んでいませんか。

せっかく勉強して機械学習モデルを作っても、その実力を正しく評価できなければ、現場で使えるものにはなりません。料理を作って味見をしないままお客さんに出すようなものです。ちょっと怖いですよね。

今日は、機械学習の評価方法として必ず登場するホールドアウト法とクロスバリデーションについて、新人エンジニアのあなたにもわかるように、とことん噛み砕いてお話しします。

専門用語も出てきますが、高校生でもイメージできるように解説しますので、安心してついてきてくださいね。

では、さっそく始めましょう。

なぜモデルの評価が必要なのか

具体的な手法の話に入る前に、ひとつ質問です。

あなたは学校のテスト勉強をするとき、過去問を丸暗記したことはありますか。

もし過去問を完璧に覚えたとしても、本番のテストで全く違う問題が出たらどうでしょう。点数は取れませんよね。

機械学習もこれと同じです。

手元にあるデータ(過去問)だけ完璧に正解できても、未知のデータ(本番のテスト)で正解できなければ意味がありません。

この、未知のデータに対しても正しく予測できる能力のことを汎化性能(はんかせいのう)と呼びます。

逆に、手元のデータに馴染みすぎてしまい、未知のデータに対応できなくなる状態を過学習(かがくしゅう)と言います。まさに過去問の丸暗記状態です。

モデルの評価とは、この汎化性能がどれくらいあるのか、過学習していないかをチェックするための健康診断のようなものなのです。

シンプルイズベストなホールドアウト法

まず紹介するのは、もっとも基本的でシンプルなホールドアウト法です。

名前は難しそうですが、やっていることは単純です。手元にあるデータを2つにパサッと分けるだけです。

  1. 学習用データ(モデルを賢くするために使う)
  2. テスト用データ(実力を測るために使う)

イメージとしては、100問ある過去問集のうち、80問を勉強用に使って、残りの20問を実力試し用の模擬試験として取っておく感じです。

一般的には、学習データとテストデータを 8 : 27 : 3 の割合で分けることが多いですね。

ホールドアウト法のメリット

最大のメリットは、計算コストが低いことです。

一度だけデータを分割して、一度だけ学習・評価を行えば終わります。

データ量が数十万件、数百万件と膨大な場合や、ディープラーニングのように学習に時間がかかる場合は、この速さが非常にありがたいのです。

ホールドアウト法のデメリット

一方で、弱点もあります。それは運に左右されやすいことです。

たまたまテスト用データに、すごく簡単な問題ばかり集まってしまったらどうなるでしょう。

実力以上に良い点数が出てしまいますよね。逆もまた然りです。

データの分け方によって評価結果がバラついてしまうため、データの数が少ないときにはあまり信頼できません。

徹底的に検証するクロスバリデーション

さて、ホールドアウト法の弱点である運任せな部分を解消するために考え出されたのが、クロスバリデーション(交差検証法)です。

その中でも最もよく使われる k分割交差検証(k-fold cross-validation)について解説します。

これは、データを1回だけ分けるのではなく、k個のグループに分けて、何度も検証を繰り返す手法です。

例えば、データを5つのグループ(グループA、B、C、D、E)に分けたとしましょう。この場合、 k = 5 となります。

1回目:Aをテスト用、残りのB〜Eを学習用にする

2回目:Bをテスト用、残りのA・C〜Eを学習用にする

...

5回目:Eをテスト用、残りのA〜Dを学習用にする

このように、テスト役を交代しながら合計5回学習と評価を行い、最後に出た5つのスコアの平均値を、そのモデルの最終的な成績とします。

クロスバリデーションのメリット

この方法の良いところは、すべてのデータが一度はテスト用として使われることです。

特定のデータに偏ることがないため、ホールドアウト法に比べて、非常に信頼性の高い評価結果が得られます。

データの数が少ないプロジェクトでは、貴重なデータを無駄なく使えるこの手法が重宝されます。

クロスバリデーションのデメリット

勘の鋭いあなたならもうお気づきですね。

そうです、時間がかかるのです。

5分割なら5回、10分割なら10回も学習と評価を繰り返さなければなりません。

計算にかかる時間は、単純に k 倍になります。

巨大なデータを扱う場合や、学習に何日もかかるようなモデルでは、時間がかかりすぎて現実的ではないこともあります。

結局、どっちを使えばいいの?

ここまで読んで、結局どっちがいいの?と思ったかもしれません。

判断基準は、主にデータの量と計算リソース(時間やマシンのスペック)です。

ホールドアウト法を選ぶべきとき

  • データ量が十分に多いとき(数万件以上など)
  • ディープラーニングなど、学習に膨大な時間がかかるとき
  • まずは手早く結果を知りたいとき

クロスバリデーションを選ぶべきとき

  • データ量が少ないとき(数千件以下など)
  • マシンのスペックに余裕があり、時間をかけても正確な評価がしたいとき
  • 最終的なモデルの性能を厳密に報告する必要があるとき

今後の学習の指針

いかがでしたか。

モデルの評価は、作ったAIを世に出すための最終関門です。

ホールドアウト法は模試を一回受けるだけ、クロスバリデーションは何度も条件を変えて実力を測る、と覚えておいてください。

まずは手元のデータセットを使って、Pythonのライブラリであるscikit-learnなどを使い、実際に両方の手法を試してみてください。

同じデータでも、手法を変えると評価スコアがどう変わるのかを体感するのが、一番の近道です。

次のステップとしては、グリッドサーチという手法を学んでみましょう。今回学んだクロスバリデーションと組み合わせて、モデルの最適な設定値(ハイパーパラメータ)を自動で探すテクニックです。

焦らず、一つずつ武器を増やしていきましょう。

セイ・コンサルティング・グループでは新人エンジニア研修のアシスタント講師を募集しています。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。