このシリーズではE資格対策として、シラバスの内容を項目別にまとめています。
検証集合
「学習データ」「検証データ」「テストデータ」
- 学習データ: 学習データは、機械学習モデルがパターンを「学び」、その予測のための内部パラメータを調整するために使用されます。つまり、モデルがデータから何かを学ぶための主要な情報源となります。
- 検証データ: 学習の途中でモデルの性能を評価するために使用されます。これにより、モデルの過学習を防ぎ、モデルのハイパーパラメータを調整します。過学習とは、モデルが学習データに適合しすぎて新しいデータに対する予測性能が低下する現象を指します。
- テストデータ: 最終的に、テストデータはモデルの未見のデータに対する性能を評価するために使用されます。これは学習や検証のプロセスで一度も見られていないデータであり、モデルが新しいデータに対してどれだけ適切に予測できるかを評価するための「公平な」テストとなります。
これら3つのデータセットは、各々が異なる役割を果たしてモデルの訓練と評価を行います。全体のデータを適切に分割することにより、過学習を防ぎ、モデルがまだ見ぬデータに対しても高い性能を発揮することが可能となります。また、これらの分割比率は一般的には学習:検証:テスト=60%:20%:20% や 70%:15%:15% とされますが、具体的な分割比率は問題の性質やデータの量によります。
ホールドアウト法
まず、全体のデータセットをランダムに2つのセット、通常は「学習データ」(または「訓練データ」)と「テストデータ」に分割します。この分割の際の比率はデータの量や目的によりますが、一般的には70%を学習データ、残りの30%をテストデータとすることが多いです。
学習データはモデルの学習に利用され、学習によりモデルのパラメータは最適化されます。一方、テストデータはモデルのパフォーマンスを評価するために使用され、学習プロセスで一度も使用されません。これにより、モデルがまだ見ぬ新たなデータに対してどれほどの性能を発揮するか、つまりモデルの汎用性を評価することが可能となります。
次に、学習データの一部をさらに「検証データ」に分割します。これはモデルのハイパーパラメータのチューニングや、学習の途中でのパフォーマンスチェックに利用されます。
ホールドアウト法の数式表現は以下のようになります。
学習データ=全データ量×0.7テストデータ=全データ量×0.3学習データテストデータ=全データ量×0.7=全データ量×0.3
そして、学習データからさらに一部を検証データに分割する場合、
検証データ=学習データ×0.3学習データ=学習データ×0.7検証データ学習データ=学習データ×0.3=学習データ×0.7
となります。ただし、これらの比率は目的やデータの性質に応じて調整可能です。この方法により、未知のデータに対するモデルのパフォーマンスを公平に評価することができます。
K分割交差検証(K-fold cross-validation)
データの分割とモデルの評価方法の一つであり、特にデータ量が少ない場合や、モデルの汎化性能をより正確に評価したい場合に有用です。この方法では、全データをK個の「ブロック」または「折れ」に分割し、それぞれのブロックをテストデータとし、残りのK-1個のブロックを学習データとします。このプロセスをK回繰り返すことで、すべてのデータが一度だけテストデータとして使われることを保証します。
具体的な手順は次の通りです。
- データをランダムにK個のブロックに分割します。
- そのうちの1つのブロックをテストデータ、残りのK-1個のブロックを学習データとします。
- モデルを学習データで訓練し、テストデータで評価します。
- 上記のプロセスをK回繰り返し、各回で異なるブロックをテストデータとします。
- K回の評価結果の平均を取り、これをモデルの性能とします。
数式で表すと次のようになります。
1回目の評価:
学習データ=全データ量−1ブロックのデータ量テストデータ=1ブロックのデータ量学習データテストデータ=全データ量−1ブロックのデータ量=1ブロックのデータ量
2回目の評価:
学習データ=全データ量−1ブロックのデータ量テストデータ=1ブロックのデータ量学習データテストデータ=全データ量−1ブロックのデータ量=1ブロックのデータ量
といった具体的な割り当てがK回続きます。
この手法の利点は、全データが一度はテストデータとして利用されるため、データ利用効率が良く、より信頼性の高い評価が得られることです。しかし、モデルをK回訓練する必要があるため、計算コストが高くなるという欠点もあります。
その他の検証方法
- ストラティファイドK分割交差検証(Stratified K-Fold Cross Validation): これはK分割交差検証の一種ですが、各ブロック内のクラスの比率が全体のクラスの比率と同じになるようにデータを分割します。これにより、特に不均衡なデータセットにおいてより信頼性の高いモデルの評価が可能になります。
- リーブ・ワン・アウト交差検証(Leave-One-Out Cross Validation、LOOCV): これはK分割交差検証の特殊なケースで、データの量がKと同じになります。つまり、一つのサンプルだけをテストデータとし、残りのすべてのデータを学習データとして使用します。このプロセスをすべてのデータに対して行います。LOOCVはデータセットが非常に小さいときに有用ですが、計算負荷が高いという欠点があります。
- ブートストラップ法(Bootstrapping): ブートストラップ法では、元のデータセットからランダムに(置換を許して)データを選び出し、新たなデータセットを生成します。この新たなデータセットを学習データとし、元のデータセットから新たなデータセットに含まれないデータをテストデータとして使用します。このプロセスを複数回繰り返すことで、データのバリエーションを増やし、モデルの評価を行います。ブートストラップ法は、データ量が少ない場合に特に有用です。
これらの手法を選ぶ際には、データの特性、問題の性質、利用可能な計算リソースなどを考慮することが重要です。
まとめ
最後までご覧いただきありがとうございました。