5.1 基底展開と正則化 - 線形モデルの壁を超えて
データから「規則」を見つけたい。最もシンプルな方法は「直線を引く」こと。 でも現実のデータは、直線には乗らない。曲がっているのです。
この章では、直線しか引けないはずの道具で、曲線を描く手法を紹介します。 シンプルなアイデアが、驚くほど柔軟な表現力を生み出す瞬間を一緒に見ていきましょう。
この章をマスターすると:
- 直線しか使えなかった手法で、複雑な曲線パターンを捉えられるようになる
- 「モデルが複雑すぎる/単純すぎる」問題への対処法がわかる
- スプラインやリッジ回帰など、実務で頻出する手法の土台を理解できる
線形モデルの限界
まず「線形モデル」とは何か、確認しておきましょう。
例えば、気温($X$)から電力消費量($Y$)を予測したいとします。 最もシンプルな予測式は:
これは中学校で習った「一次関数」です。グラフに描くと直線になります。
- $\beta_0$(ベータゼロ): 切片。気温が0度のときの電力消費の基準値
- $\beta_1$(ベータワン): 傾き。気温が1度上がると電力消費がどれだけ変わるか
入力変数が複数あっても同じです。広さ($X_1$)と築年数($X_2$)から家賃($Y$)を予測するなら:
どの入力変数も、出力に一定の割合で影響します。$X_1$(広さ)が1増えれば、$Y$(家賃)は$\beta_1$だけ増える。 シンプルで解釈しやすい。
しかし、現実のデータを見てみてください。

点が直線上に並ぶことは稀です。多くの場合、データは曲がっています。 年齢と収入の関係は直線ではない。気温と電力消費の関係も、実は直線ではない(極端に暑いとエアコンで消費が跳ね上がる)。
直線を無理やり当てはめると、データの本質的なパターンを見逃してしまいます。
「それなら、曲線を使えばいいじゃないか」
その通りです。でも、どうやって?
発想の転換 - 変数を「変換」する
ここで、シンプルだけれど強力なアイデアを紹介します。
入力変数 $X$ をそのまま使うのではなく、変換してから線形モデルに入れる。
例えば、$X$ の代わりに $X^2$(Xの2乗)も一緒に使ってみましょう。
この式は $X$ について2次の多項式になります。グラフに描くと放物線です。
ポイントは、この式を次のように見ることです:
係数 $\beta_0, \beta_1, \beta_2$ は、「変換後の変数」$1, X, X^2$ に対して足し合わせの形で結合しています。
別の見方をしてみましょう。入力 $X$ を、「$X$そのもの」と「$X^2$」という2つの新しい特徴量に変換して考えます。 すると、この拡張された空間では、放物線のパターンがシンプルに表現できるのです。

つまり、入力を変換すれば、線形モデルの枠組みのまま曲線が描ける。
この変換に使う関数 $1, X, X^2$ を基底関数と呼びます。
「基底」とは?
建物の土台のこと。これらの関数を土台にして、様々な曲線を「組み立てる」というイメージです。 どんな曲線も、基底関数を適切な割合($\beta$)で混ぜ合わせることで作れる。
基底展開の一般形
この考え方を一般化しましょう。
$h_1(X), h_2(X), \ldots, h_M(X)$ という $M$ 個の変換(基底関数)を用意します。 そして、それらを足し合わせてモデルを作ります:
この $\sum$(シグマ)記号は「足し合わせ」を意味します。つまり:
これが基底展開です。
例えば $M=3$ で多項式基底を使う場合:
これは先ほど見た2次多項式そのものです。$M=4$ にすれば3次多項式、$M=5$ にすれば4次多項式...と、$M$ を増やすほど複雑な曲線が描けるようになります。

様々な基底関数
基底関数 $h_m(X)$ には様々な選択肢があります:
| 基底関数 | 例 | 何ができるか |
|---|---|---|
| 多項式 | $X, X^2, X^3, \ldots$ | 滑らかな曲線を描ける |
| 対数・平方根 | $\log X, \sqrt{X}$ | 急激な変化を緩やかに表現 |
| 区間指示関数 | $I(a \leq X < b)$ | 「この範囲にいるか」で0/1を返す |
驚くべきことに、基底関数を適切に選び、数を十分に増やせば、どんな複雑な曲線も近似できるのです。
係数 $\beta_m$ の推定は、通常の線形回帰と同じ手法が使えます。 基底関数で変換したデータに対して、「予測と実際のズレを最小にする」係数を見つければよい。
線形の手法が、非線形の世界を捉える。
これが基底展開の力です。
しかし、ここで新たな問題が生まれます。
「どれくらいの数の基底関数を使えばいいのか?」
自由度が増えると何が起こるか
基底関数の数 $M$ を増やせば、より複雑な曲線を表現できます。
でも、ここで注意が必要です。
$M$ を増やしすぎると何が起こるでしょうか?
訓練データへのフィットは完璧になります。すべての点を通る曲線が引ける。 しかし、そんな曲線は新しいデータには役立たない。 データに含まれるノイズ(ランダムな誤差)まで覚えてしまうからです。
これが過学習(オーバーフィッティング)の問題です。 訓練データを「暗記」しすぎて、本質的なパターンを見失う。

逆に、$M$ が小さすぎると、データの本質的なパターンを捉えきれません。 これは過少適合(アンダーフィッティング)です。 モデルが単純すぎて、複雑な現実を表現しきれない。
過少適合(アンダーフィッティング)
モデルが単純すぎる。本質的なパターンを見逃す。
適切なフィット
パターンを捉えつつ、ノイズは無視。
過学習(オーバーフィッティング)
モデルが複雑すぎる。ノイズまで覚えてしまう。
モデルの複雑さをどうコントロールするか。
これが機械学習の核心的な問いなのです。
複雑さを制御する3つのアプローチ
モデルの複雑さをコントロールする方法は、大きく分けて3つあります。
1. 制限(Restriction)
使える基底関数の種類を最初から制限する方法です。
例えば、「各入力変数ごとに独立した曲線を作り、それらを足し合わせるだけ」と決めてしまう。 変数同士の複雑な組み合わせは考えない。この制約により、モデルの複雑さが自動的に抑えられます。
2. 選択(Selection)
多くの基底関数の候補から、有用なものだけを選ぶ方法です。
決定木(データを条件で分岐させる手法)はこの代表例。 データに基づいて、どの変数のどの分割点が予測に役立つかを自動的に選択します。
3. 正則化(Regularization)
すべての基底関数を使うが、係数にペナルティを課す方法です。
やっていることはシンプル:
- データへのフィットの良さを測る(予測が実際の値からどれだけズレているか)
- そこに「係数が大きすぎるとペナルティ」を加える
- この2つのバランスを取る係数を探す
数式で書くと:
- 左側: 予測と実際の値のズレの合計(小さいほど良い)
- 右側: 係数の大きさへのペナルティ(係数が大きすぎると罰)
- $\lambda$(ラムダ): ペナルティの強さ。大きいほど係数を抑え、滑らかなモデルになる

正則化のポイント
$\lambda = 0$ : ペナルティなし → 複雑なモデル(過学習しやすい)
$\lambda$ が大きい: 強いペナルティ → シンプルなモデル(過少適合しやすい)
適切な $\lambda$ を見つけることが重要です。
この正則化アプローチは、後の章で学ぶリッジ回帰やスプラインの基礎になります。
これから学ぶこと
この章では、基底展開の具体的な手法を詳しく見ていきます。

区分多項式とスプライン
入力空間を区間に分割し、各区間で多項式をフィットする。 でも、境界でガタガタになっては困る。どうやって滑らかにつなげるか? これがスプラインの核心です。
スムージングスプライン
正則化の考え方をスプラインに適用すると、データ点の数だけ基底を使いながらも、過学習を防ぐことができます。
多次元への拡張
入力変数が複数ある場合、どう対処するか? 変数が増えると必要なデータ量が爆発的に増える「次元の呪い」という問題があります。 これを回避する手法を学びます。
ウェーブレット
信号処理で生まれた基底。時間と周波数の両方で「局所的」な特徴を捉える、ちょっと変わった手法です。
どの手法も、「表現力」と「複雑さ」のバランスという共通の問いに答えようとしています。
一緒に、その答えを探っていきましょう。
この章のまとめ
- 線形モデルの限界: 現実のデータは曲がっている。直線では捉えきれない
- 基底展開: 入力を変換すれば、線形の枠組みで非線形を表現できる
- 複雑さの問題: 基底を増やしすぎると過学習、少なすぎると過少適合
- 3つのアプローチ: 制限、選択、正則化で複雑さをコントロール
次のセクションでは、具体的な基底関数の設計方法として、区分多項式とスプラインを詳しく見ていきます。