7.3 バイアス・バリアンス分解

モデルの予測誤差を「バイアス」「バリアンス」「ノイズ」の3つの要素に分解する理論を学ぶ。

この分解によって、シンプルすぎるモデル(高バイアス)と複雑すぎるモデル(高バリアンス)の間にあるトレードオフを数学的に理解できる。

予測誤差の謎

住宅価格を予測したいとしましょう。

訓練データとは、学習に使う過去のデータです。例えば「広さ80㎡、駅から5分の家は5000万円」といった実例の集まりです。テストデータとは、予測の精度を評価するための新しいデータです。

モデルとは、入力(広さ、駅からの距離など)から出力(価格)を予測するための数学的な式やアルゴリズムのことです。

さて、機械学習において、私たちは常にある謎に直面します。

訓練データにぴったりフィットするモデルを作ったのに、新しいテストデータではうまく予測できない。 逆に、訓練データへのフィットは不完全なのに、テストデータでは良い性能を発揮するモデルもある。

なぜこんなことが起こるのでしょうか?

訓練誤差とテスト誤差のギャップを示すアニメーション

この現象を理解するには、「予測誤差とは何か」を深く考える必要があります。 予測誤差は、実は3つの異なる成分から構成されています。 そして、この3つの成分を理解することで、「最適なモデルの複雑さ」を見つけるための指針が得られるのです。

一緒に、この謎を解き明かしていきましょう。

予測誤差の分解式

ある入力点 $x_0$ における予測誤差を数学的に分解してみましょう。

まず、重要な概念を整理します。

真の関数 $f(x)$ とは、現実世界に存在する「正解」の関係です。 例えば「広さと価格の本当の関係」です。しかし、私たちはこれを直接知ることはできません。

推定 $\hat{f}(x)$(ハット記号は「推定した」という意味)とは、 訓練データから学習したモデルの予測です。

現実のデータには避けられないノイズ $\varepsilon$ が含まれます。 例えば、同じ広さの家でも、内装や築年数によって価格は変動します。このランダムな変動がノイズです。

つまり、観測値は $Y = f(X) + \varepsilon$ と表されます。

この設定で、二乗誤差の期待値を計算すると、3つの項に分解できます:

$$\text{Err}(x_0) = \sigma^2_\varepsilon + \text{Bias}^2(\hat{f}(x_0)) + \text{Var}(\hat{f}(x_0))$$
予測誤差を3つの成分に分解するアニメーション

この式の意味を一つずつ見ていきましょう。

第1項 $\sigma^2_\varepsilon$既約誤差(Irreducible Error)です。 これはデータに含まれるノイズの分散であり、どんなに優れたモデルでも取り除くことができません。

第2項 $\text{Bias}^2(\hat{f}(x_0))$バイアスの二乗です。 これは「推定の平均が真の値からどれだけずれているか」を表します。

第3項 $\text{Var}(\hat{f}(x_0))$バリアンスです。 これは「推定が訓練データによってどれだけばらつくか」を表します。

より詳しく書くと:

$$\text{Err}(x_0) = \underbrace{\sigma^2_\varepsilon}_{\text{既約誤差}} + \underbrace{[\text{E}\hat{f}(x_0) - f(x_0)]^2}_{\text{バイアス}^2} + \underbrace{\text{E}[\hat{f}(x_0) - \text{E}\hat{f}(x_0)]^2}_{\text{バリアンス}}$$

バイアスとは何か

バイアスは、モデルの「系統的なずれ」を表します。

もっと直感的に説明しましょう。もし同じサイズの訓練データを何度も生成して、そのたびにモデルを学習したとします。 そして、すべてのモデルの予測を平均したとき、その平均が真の値とどれだけ離れているかがバイアスです。

$$\text{Bias}(\hat{f}(x_0)) = \text{E}[\hat{f}(x_0)] - f(x_0)$$

バイアスが大きい状況とはどんなものでしょうか?

例えば、真の関係が複雑な曲線なのに、直線で近似しようとした場合を考えてください。 どんなに多くのデータを集めても、直線では複雑な曲線の形を捉えられません。 何度訓練しても、同じ方向にずれ続けるのです。

真の関数と単純なモデルの系統的なずれを示すアニメーション

これがモデルバイアスです。 モデルのクラス(例:直線)が、真の関数を表現する能力を持たないときに生じます。

シンプルすぎるモデルは高いバイアスを持ちます。

バリアンスとは何か

バリアンスは、モデルの「ばらつき」を表します。

訓練データが変わると、推定も変わります。このばらつきの大きさがバリアンスです。

$$\text{Var}(\hat{f}(x_0)) = \text{E}[(\hat{f}(x_0) - \text{E}[\hat{f}(x_0)])^2]$$

バリアンスが大きい状況を考えてみましょう。

非常に柔軟なモデル(例:高次の多項式や k=1 の k-近傍法)を使った場合、 モデルは訓練データの細かな特徴まで捉えようとします。 しかし、その「細かな特徴」の多くは実はノイズです。

異なる訓練データを使うと、捉えるノイズのパターンが変わり、推定結果が大きく変動します。 これが高いバリアンスです。

訓練データによってモデルがばらつく様子を示すアニメーション

複雑すぎるモデルは高いバリアンスを持ちます。

バイアス・バリアンスのトレードオフ

ここで核心に触れましょう。

バイアスとバリアンスは、トレードオフの関係にあります。

予測誤差を最小化するには、この2つのバランスを取る必要があります。

$$\text{Err} = \sigma^2_\varepsilon + \text{Bias}^2 + \text{Variance}$$
複雑さに対するバイアス・バリアンス・誤差の関係を示すアニメーション

モデルの複雑さを増していくと、最初はバイアスの減少が支配的で、予測誤差は減少します。 しかし、ある点を超えると、バリアンスの増加が支配的になり、予測誤差は増加に転じます。

この「谷」の位置が、最適なモデルの複雑さです。

ここまでの振り返り

ここで一度立ち止まって、重要なポイントを振り返りましょう。

予測誤差の3成分

  1. 既約誤差 $\sigma^2_\varepsilon$: データに含まれるノイズ。これは避けられない
  2. バイアス²: モデルが系統的にずれている度合い。シンプルすぎるモデルで大きくなる
  3. バリアンス: 訓練データによってモデルがばらつく度合い。複雑すぎるモデルで大きくなる

トレードオフ

この概念を具体的なアルゴリズムで確認してみましょう。

k-近傍法での具体例

ここからは、具体的なアルゴリズムでバイアス・バリアンスを確認します。

k-近傍法(k-NN)とは、予測したい点の「近く」にあるデータを使って予測する方法です。

例えば、ある物件の価格を予測したいとき:

k の値によって、モデルの「複雑さ」が変わります。k が小さいほど複雑(柔軟)、k が大きいほど単純です。

k-近傍法におけるkの値とバイアス・バリアンスの関係を示すアニメーション

数式の詳細よりも、直感を理解しましょう。

k が小さいとき(例:k=1)

k が大きいとき(例:k=50)

これがバイアス・バリアンスのトレードオフの具体例です。

線形モデルでの具体例

線形回帰とは、データを直線(または高次元では平面)でフィットする方法です。

例えば、「価格 = a × 広さ + b」という式でデータをフィットします。 このとき、a と b がパラメータです。

パラメータの数が増えると、モデルはより複雑になります:

パラメータ数とバイアス・バリアンスの関係を示すアニメーション

線形モデルのバイアス・バリアンスには、シンプルな法則があります:

バリアンス ∝ パラメータ数 / データ数

つまり:

一方、パラメータ数が増えると表現力が上がり、バイアスは減少します。 これもトレードオフの一例です。

【発展】正則化とバイアス・バリアンス

※このセクションは発展的な内容です。スキップしても構いません。

正則化とは、モデルのパラメータを「小さく抑える」テクニックです。

なぜパラメータを小さくするのでしょうか?

直感的には、パラメータが大きすぎると、モデルが訓練データの細かなノイズまで捉えてしまいます。 パラメータを小さく抑えることで、ノイズへの過剰な反応を防ぎます。

正則化によるバイアス・バリアンスの変化を示すアニメーション

バイアス・バリアンスの観点では:

この「バイアスを少し増やして、バリアンスを大きく減らす」というトレードオフが、正則化の本質です。

バイアスの増加よりバリアンスの減少が大きければ、全体の予測性能は向上します。

分類問題でのバイアス・バリアンス

ここまで回帰問題(数値を予測する問題)を扱ってきましたが、分類問題(カテゴリを予測する問題)ではどうなるでしょうか?

分類問題の例:メールがスパムかどうか、画像が猫か犬か、など。

興味深いことに、分類問題でのバイアス・バリアンスの振る舞いは、回帰とは異なります。

回帰では、予測誤差はバイアス²とバリアンスの単純な和です。

分類では、バイアスとバリアンスが相互作用します。

なぜでしょうか?分類では、決定境界の「正しい側」にいる限り、誤差は0です。

分類でのバイアス・バリアンスの相互作用を示すアニメーション

具体例を考えましょう。あるメールがスパムである真の確率が0.9だとします。 モデルの推定の平均が0.6だとしても、0.5を超えているので「スパム」と正しく分類できます。

この場合、バイアス(0.9と0.6の差)はかなり大きいですが、予測は正しいのです。

これは回帰問題にはない特徴です。 分類では、バイアスがあっても境界を越えなければ問題になりません。

まとめと実践的な示唆

バイアス・バリアンス分解から得られる実践的な教訓をまとめましょう。

最適なモデル複雑さの選び方を示すアニメーション

1. 予測誤差の本質

予測誤差は、既約誤差、バイアス、バリアンスの3つから構成されます。 どんなに優れたモデルでも既約誤差は避けられません。

2. トレードオフの理解

シンプルなモデルは高バイアス・低バリアンス、複雑なモデルは低バイアス・高バリアンスです。 最適なモデルはこのトレードオフのバランス点にあります。

3. モデル選択への示唆

4. 正則化の役割

正則化は、推定バイアスを導入することでバリアンスを減少させます。 この追加バイアスによる損失がバリアンス減少による利得より小さければ、全体の予測性能は向上します。

次のセクションでは、これらの理論を実際のモデル選択にどう活かすかを学びます。