2.9 モデル選択とバイアス-バリアンス・トレードオフ

機械学習の核心に迫る問いかけ:「シンプルなモデルと複雑なモデル、どちらが良いのか?」

この章では、予測精度を左右する根本的なトレードオフ「バイアス vs バリアンス」を理解し、最適なモデルの複雑さをどう選ぶかを学びます。

訓練データにうまくフィットすることと、未知のデータに対してうまく予測することは、実は別問題なのです。

謎から始める - なぜ完璧にフィットするモデルがダメなのか

データが与えられたとき、そのデータに「完璧に」フィットするモデルを作ることは難しくありません。しかし、ここに不思議な現象があります。

訓練データに完璧にフィットするモデルは、新しいデータに対してはうまく予測できないことが多いのです。

これは直感に反するように思えます。データをよく説明できるモデルが、なぜ予測できないのでしょうか?

この謎を解く鍵が「バイアス-バリアンス・トレードオフ」です。

ここで重要な用語を整理しましょう:

訓練誤差を小さくすることは比較的簡単です。極端に複雑なモデルを使えば、訓練データの点を全て通るような曲線を描けます。しかし、本当に知りたいのはテスト誤差、つまり「未知のデータに対してどれだけうまく予測できるか」です。

モデルの複雑さに応じた訓練誤差とテスト誤差の変化

このアニメーションが示すように、モデルの複雑さが増すにつれて、訓練誤差は単調に減少し続けます。しかし、テスト誤差はU字型の曲線を描きます。

ある点を超えると、モデルが複雑になればなるほど、テスト誤差は大きくなってしまうのです。最適なモデルの複雑さは、このU字曲線の谷底にあります。

バイアスとバリアンスの正体

テスト誤差を詳しく分析してみましょう。

ここで「予測誤差(Expected Prediction Error: EPE)」という用語を使います。これは「新しいデータに対する予測の平均的な誤差」を表し、テスト誤差の期待値と同じものです。つまり、EPEを最小化することがテスト誤差を最小化することに繋がります。

このEPEは、実は3つの成分に分解できます:

$$\text{EPE} = \sigma^2 + \text{Bias}^2 + \text{Variance}$$
テスト誤差を3つの成分に分解する様子

それぞれの成分が何を意味するか、見ていきましょう:

この分解は「バイアス-バリアンス分解」と呼ばれ、予測誤差の本質を理解する上で極めて重要です。

既約誤差はどうしようもありませんが、バイアスとバリアンスは、モデルの選び方によってコントロールできます。しかし、ここに問題があります。この2つは、シーソーのように動くのです。

シンプルすぎる vs 複雑すぎる

バイアスとバリアンスは、モデルの複雑さに応じて逆方向に動きます。これがトレードオフの本質です。

同じデータに対するシンプルなモデルと複雑なモデルの対比

シンプルすぎるモデル(例:データに直線をフィット)

複雑すぎるモデル(例:データの全ての点を通る高次多項式)

真の関数が比較的シンプル(例えば線形に近い)場合、シンプルなモデルが有利です。一方、真の関数が複雑な場合、ある程度複雑なモデルが必要です。

しかし、真の関数の複雑さは通常わかりません。だからこそ、適切なモデルの複雑さを選ぶ「モデル選択」が重要になるのです。

k-最近傍法で見るバイアス-バリアンス

バイアス-バリアンス・トレードオフを、具体的な手法で確認してみましょう。

k-最近傍法(k-NN)とは

k-最近傍法は、非常にシンプルな予測手法です。新しい点$x_0$の値を予測したいとき、訓練データの中から$x_0$に最も近いk個の点を見つけて、その値の平均を予測値とします。

例えば:

kの値によって予測がどう変化するかを示すアニメーション

このkの値が、モデルの複雑さを制御するパラメータになっています。kが小さいほど複雑(データの細部に反応)、kが大きいほどシンプル(滑らかな予測)になります。

k-NNの予測誤差を分解する

k-NNでは、予測点$x_0$における予測誤差は次のように分解できます:

$$\text{EPE}_k(x_0) = \underbrace{\sigma^2}_{\text{既約誤差}} + \underbrace{\left[ f(x_0) - \frac{1}{k}\sum_{\ell=1}^{k}f(x_{(\ell)}) \right]^2}_{\text{バイアス}^2} + \underbrace{\frac{\sigma^2}{k}}_{\text{バリアンス}}$$

ここで$x_{(\ell)}$$x_0$に近い順に並べた$\ell$番目の訓練点です。

この式をよく見ると、バイアスとバリアンスがkに対して逆方向に動くことがわかります:

k=1のとき(最も複雑)

k=15のとき(よりシンプル)

このように、kを調整することで、バイアスとバリアンスのバランスを取ることができます。k=5付近が最適となることも多いですが、実際にはデータと真の関数の複雑さに依存します。

最適な複雑さを見つける

バイアス-バリアンス・トレードオフを理解したところで、実践的な問題に移りましょう。「最適なモデルの複雑さをどう見つけるか」です。

重要な洞察:訓練誤差はテスト誤差の良い推定量ではない

モデルを複雑にするほど訓練誤差は下がり続けます(究極的には0になる)。しかし、テスト誤差はある点から上昇し始めます。もし訓練誤差だけを見てモデルを選ぶと、常に最も複雑なモデルを選んでしまい、過学習に陥ります。

では、どうすればよいのでしょうか?

モデルの複雑さを変えながらテスト誤差が最小となる点を探索する様子

実際には、テスト誤差を直接測定することはできません(テストデータは「未来のデータ」だからです)。そこで、以下のような手法が使われます:

  1. クロスバリデーション(交差検証):訓練データの一部を「疑似テストデータ」として使用し、テスト誤差を推定する
  2. 情報量規準(AIC, BIC):訓練誤差にモデルの複雑さに応じたペナルティを加える
  3. ホールドアウト法:データを訓練用と検証用に分割する

これらの手法は、モデルの複雑さとテスト誤差の関係を推定し、最適な複雑さを選ぶことを可能にします。詳しくは後の章で扱います。

まとめ - トレードオフを味方につける

この章で学んだことを振り返りましょう。

バイアス-バリアンス分解

$$\text{テスト誤差} = \sigma^2 + \text{Bias}^2 + \text{Variance}$$
バイアスとバリアンスがモデル複雑さに応じて変化し、総誤差が最小となる点を示すアニメーション

トレードオフの本質

モデル選択の原則

この考え方は、機械学習のあらゆる手法に共通する基盤です。線形回帰のパラメータ数、k-NNのk、ニューラルネットワークの層数やユニット数、正則化の強さなど、すべてがバイアス-バリアンス・トレードオフの中で最適化されるべきハイパーパラメータなのです。

「最も複雑なモデルが最良」でも「最もシンプルなモデルが最良」でもありません。データと問題に応じた「ちょうど良い複雑さ」を見つけることが、機械学習の実践における重要なスキルです。