2.7 構造化回帰モデル
機械学習でよく聞く「過学習」という言葉。「訓練データに合わせすぎると良くない」と言われますが、なぜでしょうか? データに合わせることが目的なのに、合わせすぎると駄目?
このセクションでは、この一見矛盾した問題の核心に迫ります。 実は、制約なしでは予測問題は解けないのです。 この驚くべき事実を理解することが、機械学習全体の見通しを得る鍵となります。
データだけでは答えが決まらない
予測問題を考えてみましょう。
まず用語を整理します。訓練データ(training data)とは、モデルを学習させるために使うデータのことです。$(x_1, y_1), \ldots, (x_N, y_N)$ という $N$ 個のペアが与えられ、 この情報を使って、新しい入力 $x$ に対する出力 $y$ を予測するルール(関数 $f$)を見つけたいのです。
最もシンプルなアプローチは、残差平方和(RSS: Residual Sum of Squares)を最小化することです。
この式の意味を読み解きましょう。$f(x_i)$ は「関数 $f$ に入力 $x_i$ を入れたときの予測値」、$y_i$ は「実際の正解値」です。$(y_i - f(x_i))^2$ は「予測と正解のズレの2乗」。 これを全データ点について足し合わせたものがRSSです。
RSSが小さいほど、訓練データへのフィットが良いことを意味します。では、RSSを0にできれば完璧でしょうか?
ここに落とし穴があります。
RSSを最小化する関数は無限に存在します。

なぜでしょうか?訓練点をすべて通る関数であれば、どんな形でもRSS = 0を達成できるからです。 直線でも、うねうねした曲線でも、訓練点を通りさえすればRSSは0です。
これは深刻な問題です。無限の候補の中から1つを選ばなければなりませんが、データだけを見ても、どれが正しいかわからないのです。
制約がなければ予測は失敗する
無限の解があることの何が問題なのでしょうか?
問題は、訓練データに完璧にフィットしても、新しいデータの予測が壊滅的に悪くなりうることです。
ここでテストデータ(test data)という概念が重要になります。 テストデータとは、モデルの学習には使わず、学習後のモデルの性能を評価するために取っておくデータのことです。 モデルが本当に「予測できる」かどうかは、見たことのないテストデータで測らなければわかりません。

先ほどのうねうねした曲線を思い出してください。訓練点はすべて通過しているので、訓練データに対してはRSS = 0、つまり「完璧」です。
しかし、訓練点の間を見てください。曲線は激しく上下に振動しています。 もし新しいデータ点(テストデータ)が訓練点の間に落ちたら、予測は大きく外れるでしょう。
これが過学習(オーバーフィッティング)の本質です。
過学習とは
訓練データに合わせすぎた結果、データの本質的なパターンではなく、ノイズや偶然の配置まで学習してしまい、 未知のデータに対する予測力が失われること。
ここで重要な洞察があります:
良い予測をするためには、関数の自由度を制限しなければならない。
無制限の自由度は、一見するとデータによく適合しますが、実際には予測能力を破壊します。制約こそが予測を可能にするのです。
複雑性制約という発想
では、どのような制約を課せばよいのでしょうか?
機械学習で最も広く使われるのは、複雑性制約(complexity restriction)という考え方です。
直感的には、「関数が急激に変化しすぎないようにする」制約です。 入力空間の小さな領域内では、関数が以下のような「規則的な」振る舞いをすることを要求します:
- ほぼ一定(k近傍法の基本仮定)
- 線形(局所線形回帰)
- 低次多項式(局所多項式回帰)

なぜ「滑らかさ」が良いのでしょうか?
それは、現実世界の多くの現象が連続的に変化するからです。 身長と体重の関係、気温と電力消費の関係、広告費と売上の関係—どれも、入力が少し変わったら出力も少し変わる、という性質を持っています。
急激に振動する関数は、このような現実のパターンをうまく表現できません。 滑らかさの制約は、「現実はおおむね連続的だ」という事前知識を反映しているのです。
近傍サイズが制約の強さを決める
複雑性制約を実装する最も直接的な方法は、近傍(neighborhood)のサイズを調整することです。
ここでk近傍法(k-Nearest Neighbors, k-NN)について簡単に振り返りましょう。 k近傍法は、「新しい点の値を予測するには、その近くにある訓練点を見ればよい」という直感に基づく手法です。 具体的には、予測したい点 $x_0$ の周りにある最も近い $k$ 個の訓練点を見つけ、 それらの平均(回帰の場合)または多数決(分類の場合)で予測値を計算します。
この $k$ の値は、実は制約の強さを制御しています:
k が小さい(例:k=1)
- 非常に小さな近傍のみを考慮
- 関数は局所的なデータに強く依存
- 予測は不安定で、ノイズに敏感
- 制約が弱い → 複雑な関数を許容
k が大きい(例:k=100)
- 広い範囲のデータを平均化
- 関数は滑らかになる
- 予測は安定するが、局所的なパターンを見逃す可能性
- 制約が強い → シンプルな関数に限定

ここに興味深いトレードオフがあります。 制約を強くしすぎると(kを大きくしすぎると)、データの本質的なパターンまで消してしまいます。 制約が弱すぎると(kを小さくしすぎると)、ノイズまで拾ってしまいます。
最適な制約の強さは、データ自体から決められません。なぜなら、訓練データへのフィットだけを見れば、常に制約を弱くした方が良く見えるからです(k=1ならRSS=0)。 後の章で、この問題をどう解決するかを学びます。
このトレードオフは、k近傍法に限った話ではありません。次のセクションで、制約の選択がより深い問題につながることを見ていきましょう。
制約は「仮定」である
ここで立ち止まって考えてみましょう。
私たちは「滑らかな関数が良い」と言いましたが、それは本当でしょうか?
実は、どんな制約を選ぶかは、データの外にある知識や仮定に基づいています。 「現実世界は滑らかに変化する」という仮定は、多くの場合正しいですが、常に正しいわけではありません。
例えば、株価のデータを考えてみてください。ニュースが出た瞬間に株価は急変動します。 このような「不連続な変化」を含むデータに対して、強い滑らかさ制約は不適切かもしれません。

ここで重要な教訓があります:
制約の選択は、問題の曖昧さを解消しない。曖昧さを「どの制約を選ぶか」という問題に移し替えるだけである。
つまり、機械学習において「万能の手法」は存在しません。 どんな手法にも暗黙の仮定があり、その仮定がデータの性質に合っているかどうかが、予測性能を左右します。
この洞察は、後の章で様々な手法を学ぶ際の指針となります。 新しい手法を見たときは、常に「この手法は何を仮定しているのか?」と問いかけてください。
次元の呪いを克服する鍵
最後に、構造化回帰モデルと次元の呪いの関係を整理しましょう。
次元の呪いとは何か?—高次元空間では、私たちの直感に反する現象が起こります。 例えば、10次元空間では、データの99%以上が空間の「境界」付近に集中してしまいます。 「近くの点」を見つけようとしても、すべての点が遠く離れてしまうのです。
前のセクション(2.5)で見たように、この現象のせいで高次元空間ではk近傍法のような局所的な手法は破綻します。 「局所的な」近傍を定義しようにも、近傍を意味のあるサイズに保つと、ほとんどすべてのデータを含んでしまうからです。
しかし、構造化モデルはこの問題を回避できます。
例えば、線形モデル $f(x) = x^T\beta$ を考えてみましょう。この式を展開すると:
つまり、各入力変数 $x_1, x_2, \ldots, x_p$ にそれぞれ重み $\beta_1, \beta_2, \ldots, \beta_p$ をかけて足し合わせたものです。 このモデルは $p$ 個のパラメータ $\beta = (\beta_1, \ldots, \beta_p)$ で完全に特徴づけられます。 次元 $p$ が増えても、推定すべきパラメータの数は $p$ 個のままです。
対照的に、k近傍法の「実効的なパラメータ数」は $N/k$ 程度であり、これは $p$ とは独立にデータ数 $N$ に依存します。 高次元では、十分な密度でデータをサンプリングするために必要な $N$ が指数関数的に増大するため、k近傍法は実用的でなくなります。

構造化モデルは、次元によらず一定数のパラメータで済むため、次元の呪いを回避できる。
もちろん、これは代償を伴います。線形モデルは「関数が線形である」という強い仮定を置いています。 この仮定が正しければ、高次元でも効率的に学習できます。仮定が間違っていれば、バイアスが生じます。
これが、機械学習における本質的なトレードオフ—バイアスとバリアンス—の核心です。 次のセクション(2.9)で、このトレードオフを詳しく分析します。