2.3 予測の2つのアプローチ:最小二乗法とk-最近傍法

「どうやってデータから予測するか」という問いに対して、まったく異なる哲学を持つ2つの手法を比べます。 この2つを理解することで、機械学習の核心にある「バイアスとバリアンスのトレードオフ」を直感的に掴みましょう。

なぜ2つのアプローチを比べるのか

手元に100個のデータポイントがある。青いグループとオレンジのグループに分かれていて、 新しい点がどちらに属するかを予測したい。

どうすればいい?

線形境界とk-NN境界の対比 - 2つの異なるアプローチを左右に並べた図

一番シンプルな考え方は2つある。

アプローチA

「どうせ境界は直線だろう」

データ全体にフィットする直線(あるいは超平面)を引いて、その線で分類する。 「世界はシンプルだ」という強い仮定を置く代わりに、少ないデータでも安定した予測ができる。

アプローチB

「近くにいるものは同じグループだろう」

新しい点が来たら、それに一番近いk個のデータを見つけて多数決で決める。 仮定はほとんどない。データが複雑な分布をしていても対応できるが、 その分、予測は不安定になりやすい。

この節では、この2つのアプローチを数学的に定式化し、 どちらが「正解」かを探る旅に出発しましょう。 (ネタバレすると:どちらも「正解」であり「不正解」でもある)

線形モデルと最小二乗法

線形モデルの考え方は単純明快だ。入力変数$X = (X_1, X_2, \ldots, X_p)$に対して、出力$Y$をこう予測する:

$$\hat{Y} = \hat{\beta}_0 + \sum_{j=1}^{p} X_j \hat{\beta}_j$$

たとえば2変数なら$\hat{Y} = \hat{\beta}_0 + X_1 \hat{\beta}_1 + X_2 \hat{\beta}_2$だ。$\hat{\beta}_0$ は切片(グラフで言えばY軸との交点)、$\hat{\beta}_1, \hat{\beta}_2$ は各変数の「効き具合」(重み)を表す。

数学的にはこれを行列とベクトルを使ってコンパクトに書ける:

$$\hat{Y} = X^T \hat{\beta}$$

「どの重みの組み合わせが一番いいか」を決めるのが最小二乗法だ。 予測値と実際の値のズレ(残差)の2乗和を最小化する:

$$\text{RSS}(\beta) = \sum_{i=1}^{N} (y_i - x_i^T \beta)^2$$

RSS(Residual Sum of Squares、残差平方和)が何を意味するか、 実際に見てみよう。

データ点に直線がフィットする過程と残差の可視化 - 直線が回転しながら残差が縮小していく

アニメーションで確認できる通り、最初はズレ(残差)が大きい。 直線が最適な位置に動くにつれて、各点から直線への距離(残差)が縮まっていく。 この「残差の合計を最小にする」という目標が最小二乗法の本質だ。

RSS を最小化する $\beta$ を求めると、解析的な解が得られる:

$$\hat{\beta} = (\mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T \mathbf{y}$$

この式の読み方:

  • $\mathbf{X}$:すべてのデータをまとめた行列(行がデータ点、列が変数)
  • $\mathbf{y}$:正解ラベルのベクトル
  • この式全体は「データ全体を見て、残差の合計が最小になる重みを一発で計算する」公式

これを正規方程式の解という。 行列の逆行列を1回計算するだけで、最適な重みが求まる。 これが線形モデルの強みの一つだ。

分類に使う場合は、予測値$\hat{Y}$が0.5より大きければクラス1(オレンジ)、小さければクラス0(青)と判定する。 決定境界は$\{x : x^T \hat{\beta} = 0.5\}$という直線(または超平面)になる。

直感的な意味:入力空間に対して最もフィットする「平らな板」を当てはめ、 その板で空間を2つに分割する。シンプルだが強力なアプローチだ。

k-最近傍法(k-NN)

線形モデルは「データが直線的な構造を持つ」という強い仮定に依存している。 しかし現実のデータがそうとは限らない。

k-最近傍法(k-NN)は、まったく逆の哲学から出発する。 「新しい点 $x$ が来たら、訓練データの中で$x$ に最も近い$k$ 個の点を探し、そのラベルを多数決で決める」というものだ:

$$\hat{Y}(x) = \frac{1}{k} \sum_{x_i \in \mathcal{N}_k(x)} y_i$$

ここで $\mathcal{N}_k(x)$$x$ に最も近い$k$ 個の訓練データの集合を表す。

kの値によって境界の形が劇的に変わることを確認してみよう:

kの値を変えると決定境界がどう変わるか - k=1から大きなkへの境界の変化
k = 1
各訓練データ点がそれ自身の「領域」を持つ。境界は非常にガタガタになる(ボロノイ分割)。訓練誤差は完全に0だが、これは過学習(データを丸暗記した状態)を意味する。
k = 15
より多くの点を参照するため、境界が滑らかになる。適切なバランス点。
k = N
全データを参照する。常に多数派クラスを予測するだけで、境界は退化する。
重要な観察:k-NNでは、訓練データをそのまま記憶しているだけで、 明示的なパラメータ「学習」は行っていない。 全パラメータはデータ点そのものだ。 これをノンパラメトリック法と呼ぶ。

有効パラメータ数は約$N/k$ である。$k=1$ のときは$N$ 個(過学習)、$k$ が大きくなるほどパラメータ数が減り、モデルが単純になる。

2つのアプローチを比べる — バイアスとバリアンス

線形モデルとk-NNは、それぞれ異なる「リスク」を抱えている。

ここで2つの重要な概念を導入しよう:

バイアス(偏り)

モデルの「ズレ」。単純すぎるモデルが持つ系統的な誤差。 何度やっても同じ方向に外れ続ける性質。

例:真の境界が曲線なのに直線しか学べない場合

バリアンス(分散)

モデルの「ブレ」。訓練データが変わると予測がどれだけ変化するか。 不安定さを表す。

例:少しデータが変わるだけで予測が大きく変化する場合

各手法の特徴はこうなる:

バイアス
バリアンス
線形モデル
高い危険あり
低い(安定)
k-NN
低い(柔軟)
高い危険あり

では、どちらが優れているのか?実はどちらが有利かはデータの構造による

データが生成されたシナリオを考えよう:

シナリオ1(単純)とシナリオ2(複雑)での各手法の比較 - 上下分割で2シナリオを対比
シナリオ 1
単純なデータ構造

2つのクラスのデータが、それぞれ1つのガウス分布から生成されている。 真の決定境界は直線(超平面)であり、線形モデルがほぼ最適に機能する。

線形モデルが有利

シナリオ 2
複雑なデータ構造

各クラスのデータが、10個の小さなガウスクラスターの混合から生成されている。 真の決定境界は非線形で複雑。k-NNがより適切に機能する。

k-NNが有利

実際のデータには必ず「どちらのシナリオに近いか」という問いがある。 そして多くの場合、答えは「その中間」だ。 これが機械学習において「モデル選択」が重要な理由だ。

kとモデル複雑度の関係 — スペクトル上で眺める

k-NNにおける $k$ という数値は、 「どれだけ柔軟なモデルを使うか」のコントロールレバーだ。

k = 1
最も複雑・過学習しやすい
← 複雑度 →
k = N
最も単純・過度に単純化

線形モデルはこのスペクトルの「シンプル端」に位置する特殊なケースとも見なせる。

訓練誤差とテスト誤差がどう変化するか、グラフで確認してみよう:

モデルの複雑度(1/k)に対する訓練誤差とテスト誤差の変化 - U字型のテスト誤差カーブ

グラフから読み取れること:

なぜU字型になるのか?

右端(k=1、高複雑度):訓練データを丸暗記。 新しいデータへの汎化が悪い。これが過学習(Overfitting)

左端(k=N、低複雑度):単純すぎてデータの本当の構造を捉えられない。 これが過少学習(Underfitting)

中央付近:両者のバランスが取れており、汎化性能が最も高い。

線形モデルのテスト誤差は、中程度の $k$ のk-NNに近い性能 (自由度3相当)を示しているが、最適なk-NNには及ばない。 これはシナリオ2(混合ガウス)のような複雑なデータ構造では、 線形モデルの「直線しか引けない」という制約がボトルネックになるためだ。

重要な教訓:「正解」のアルゴリズムはない。 データの構造を理解し、そのデータに合った「仮定」を持つモデルを選ぶことが機械学習の核心だ。 後の章で学ぶ多くの手法は、この線形モデルとk-NNの間のどこかに位置し、 それぞれ異なる仮定を持っている。

まとめ

線形モデル(最小二乗法)

強い構造的仮定(線形性)を置く。安定しているが融通が利かない。

k-最近傍法(k-NN)

最小限の仮定のみ。柔軟だが不安定になりやすい。

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

安定さと柔軟さは常にトレードオフの関係にある。

データの構造に合わせて選ぶ

普遍的な「最良」の手法は存在しない。データを見て判断する。