データの分割方法 ~学習用データと検証用データ~

こんにちは!
IT企業に勤めて、約2年間でデータサイエンティストになったごぼちゃん(@XB37q)です!

このコラムでは、AIに学習させるデータの分割方法を紹介します。
AIモデルを構築する場合、ただ単純に手元のデータをすべて使って構築することはあまり行われません。
その理由は?じゃあどうやって構築するの?といった疑問に答えていきたいと思います。

AIモデルの構築に使うデータとは

モデル構築に使用するデータ
モデル構築に使用するデータ

AIモデルを構築する場合、ただ単純に手元のデータをすべて使って構築することはあまり行われません。
それはなぜでしょうか?

AIはデータをもとに精度が高くなるようにモデルを構築します。
しかし、そのモデルが現実の新しいデータに対してどれほど精度が高いのかを判断することが必要になります。
ここで、全データを使用してモデルを構築した場合、その精度を判断するためには、既にモデルを構築した時に使用した全データを使用することになります。
しかし、これではモデルが正解を知っているため、現実の新しいデータとして精度を確認することは出来ていません。

それではどのように現実の新しいデータに近い精度を確認すればよいのでしょうか?
その答えが、全データを使用してモデルを構築するのではなく、全データの一部を学習データとしてモデル構築に使用するデータとすることで、全データ – 学習データ = 残りのデータ(検証データ)を使ってモデルの精度を確認することができます。

モデルを構築した時のデータは、過去問を解いて学んだあと、試験でその過去問と同じ問題が出ているイメージになり、正しく学習が出来ているかを把握することが出来ません。

そのため、AIのモデルを構築する場合は、全データをまず学習データと検証データの2種類に分けて、モデル構築用のデータと精度を検証するデータの2つの使い方が必要になります!

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

学習データと検証データに分割する方法は、下記の2つが一般的です。

  • ホールドアウト法:全データを1回だけ分割する
  • K-分割交差検証:全データを複数回分割する

次の章から1つずつ紹介していきます。

ホールドアウト法 (holdout method)

ホールドアウト法(holdout method)
ホールドアウト法(holdout method)

単純に全体の何割かを学習用データセットとし、残りをテスト用データセットとするといった分割を行う方法です

モデルの性能評価をより適切にするためにデータを3分割してモデルを評価することも一般的です

学習用データセットと検証用データセットは学習段階で用いられ、テスト用データセットは最終的なモデルの予測精度の確認のためにのみ使用します

K-分割交差検証 (K-fold cross-validation)

K-分割交差検証(K-fold cross-validation)
K-分割交差検証(K-fold cross-validation)
K-分割交差検証(K-fold cross-validation)-2
K-分割交差検証(K-fold cross-validation)-2

データをkグループへ分割し、k-1グループを学習用データセットとし、残りの1グループをテスト用データセットにして、平均予測精度を求める方法です

十分なデータ量が用意できない場合に、データを3分割すると偏りが生じて適切な学習・検証が行われない可能性があるため、データの偏りを回避する方法として使用されます

ベイズ最適化

ベイズ最適化では、事前分布と事後分布と呼ばれる確率統計の理論を使用してハイパーパラメータの探索を行います。
その際、人間が行う試行錯誤に近い、探索活用と呼ばれる試行錯誤を繰り返します。
もしもハイパーパラメータ探索を手動で行う際、まず初めに適当な値(初期値)を入れて結果を確認します。
そして、もう一度適当な値を入れて 1 度目の予測精度と比較し、次の探索する場所を決めていくと思います。
このように今まであまり調べていない未知の領域に対して適当に値を当てはめることを探索、探索により得た情報を元に設定した指標が最小値(最大値)になると期待できるハイパーパラメータを選択することを活用と呼びます。
探索と活用をまとめると下記のように表現することができます。
探索:まだ試していない値の範囲でハイパーパラメータを更新して、予測精度がどう変化するか情報を得る
活用:探索で得られた情報をもとに、予測精度が高まる可能性が高い範囲にハイパーパラメータを更新する

データの分割方法 ~学習用データと検証用データ~” に対して1件のコメントがあります。

コメントは受け付けていません。