2.8 制限付き推定量のクラス
あなたは今、困っています。
データを使って予測モデルを作りたい。でも、訓練データを完璧に通る関数は無限に存在する。どれも訓練誤差はゼロ。では、どれを選べばいいのでしょうか?
これは深刻な問題です。無限の選択肢があるのに、正解を選ぶ根拠がない。しかも前章で見た「次元の呪い」のせいで、高次元になるほどデータは疎になり、局所的な手法は破綻する…
ここに、ある大胆なアイデアがあります。
「すべての関数を考える」のをやめて、「特定の性質を持つ関数だけ」に絞り込む。「滑らかな関数」「特定の形の関数」「近くで似た値を取る関数」…そういった制約を課すことで、無限の選択肢を扱いやすい範囲に狭めるのです。
でも、なぜそれがうまくいくのでしょうか? 制約を課すと何が起こるのでしょうか?
この章では、制約付き推定量の3つの大きなクラスを見ていきます。一見異なるこれらのアプローチが、実は同じ本質的なアイデアを共有していることがわかるはずです。
なぜ制約が必要なのか?
ちょっと実験をしてみましょう。
5つのデータ点があります。これらすべてを通る曲線を引いてください、と言われたら、どんな曲線を引きますか?
実は、無限に多くの曲線が引けます。ぐにゃぐにゃ蛇行する曲線、急上昇して急降下する曲線、どれも5点すべてを通ります。
ここで「残差二乗和(RSS)」という指標を考えます。これは「予測値と実際の値のズレの二乗を全部足したもの」です。すべてのデータ点を通る曲線なら、RSS = 0。つまり訓練誤差はゼロです。
でも、どの曲線が「正解」なのでしょうか?

新しいデータ点で試すとわかります。ぐにゃぐにゃ曲線は、データ点の間で予測不能な動きをします。一方、滑らかな曲線は、より「もっともらしい」予測をしそうです。
ここで気づくことがあります。「滑らかな曲線が良い」という判断は、私たちの事前知識から来ています。データだけからは決められない。「自然界の現象は通常滑らかだ」という信念を、モデルに組み込んでいるのです。
これが「制限付き推定量」の本質です:
- ペナルティ法:「滑らかでない関数は罰を与える」
- カーネル法:「近くの点では似た値を取るはず」
- 基底関数法:「特定の形の関数だけ考える」
3つとも、事前知識を数学的に表現する方法です。
粗さペナルティとベイズ法
「滑らかな関数が良い」と言いました。でも、「滑らかさ」をどうやって数学的に測るのでしょうか?
ここで、二階微分という概念が登場します。
関数の一階微分は「傾き」を表します。二階微分は「傾きの変化率」、つまりどれだけ急に曲がっているかを表します。直線なら二階微分はゼロ。ぐにゃぐにゃ曲線なら二階微分は大きな値になります。
これを使って「粗さ」を定義できます:
この式は「二階微分の二乗を、すべての点で積分したもの」です。急激に曲がる部分が多いほど、この値は大きくなります。
さて、ここからがアイデアです。RSSだけを最小化するのではなく、ペナルティ項を加えます:
これは「データへのフィット」と「滑らかさ」の両方を同時に考える式です。$\lambda$(ラムダ)というパラメータが、両者のバランスを制御します。

- $\lambda = 0$:ペナルティなし → どんな曲線でもOK
- $\lambda$ が大きい:滑らかさ重視 → 直線に近づく
- 中間の $\lambda$:ちょうど良いバランス
実は、このアプローチには深い意味があります。ベイズ統計という分野では、ペナルティ項は「事前分布」と解釈できます。事前分布とは「データを見る前に持っている信念」のこと。ここでは「滑らかな関数ほど確率が高い」という信念を、$J(f)$で表現しているのです。
完全な式を書き下すと:
この式の意味:
- 第1項:データへのフィット度(小さいほど良い)
- 第2項:関数の滑らかさ(小さいほど滑らか)
- $\lambda$:両者のバランスを制御
カーネル法と局所回帰
ペナルティ法とは全く違うアプローチを考えてみましょう。
ある点での予測値を知りたい。直感的に、その点の近くにあるデータ点が重要そうです。遠くのデータ点より、近くのデータ点の方が参考になるはず。
これは「k-近傍法」のアイデアでした(k個の最も近いデータ点の平均を取る手法)。でも、k-近傍法には問題がありました。「近傍に入るか入らないか」の二択だったのです。近傍の境界ぎりぎりの点も、すぐそばの点も、同じ重みで扱われる…
もっと自然な方法があります。距離に応じて滑らかに重みを変えるのです。
予測点に近いほど大きな重み、遠いほど小さな重み。これを実現するのがカーネル関数です。最も一般的なのはガウスカーネル(釣鐘型の曲線):
この式で、$x_0$は予測したい点、$x$は各データ点、$\lambda$はカーネルの「幅」です。$\lambda$が大きいほど、遠くの点も考慮します。

この重みを使った加重平均が予測値になります:
これをNadaraya-Watson推定量と呼びます。分子は「重み×値」の合計、分母は「重みの合計」。つまり重み付き平均です。
各項の意味:
- $K_\lambda(x_0, x_i)$:$x_i$ の重み($x_0$ に近いほど大きい)
- $y_i$:各訓練点の出力値
- 分母:重みの合計(正規化のため)
ここで暗黙の仮定に気づきましたか? 「近くの点では関数値が似ている」という仮定です。ペナルティ法とは違う形で、同じ本質—滑らかさの仮定—を表現しているのです。
基底関数と辞書法
3つ目のアプローチは、発想を変えます。
これまでは「どんな関数でも良いが、滑らかなものを選ぶ」でした。今度は最初から「特定の形の関数だけ考える」のです。
どういうことでしょうか? 例を見てみましょう。
「どんな関数も、基本的な関数の組み合わせで作れる」という考え方があります。音楽で言えば、どんな音も基本的な音の重ね合わせで表現できる(フーリエ変換:音を周波数成分に分解する数学的手法)。同じように、関数も「基底関数」の重ね合わせで表現できます:
ここで $h_m(x)$ が基底関数、$\theta_m$ がその重み(係数)です。

基底関数の例:
- 多項式: $1, x, x^2, x^3, \ldots$(曲線を近似)
- 三角関数: $\sin, \cos$(周期的なパターンを表現)
- スプライン: 区分的な多項式を滑らかにつないだもの
基底関数を決めてしまえば、あとは係数 $\theta_m$ を通常の回帰で求めるだけ。これは2.3節で見た線形回帰の自然な拡張です。
各項の意味:
- $h_m(x)$:m番目の基底関数
- $\theta_m$:m番目の係数(データから学習)
- $M$:基底関数の数(モデルの複雑さを制御)
さらに大胆なアイデアがあります。基底関数自体もデータから学習するのです。これがニューラルネットワークの考え方です。シグモイド関数という基底を使い、その形もデータに合わせて調整します。
このように基底を適応的に選ぶ方法は「辞書法」とも呼ばれます。無限の候補から、データに合った「単語」を選び出すイメージです。
3つのアプローチの統一的な見方
ここで一歩引いて、全体像を見てみましょう。
3つのアプローチは全然違うように見えました:
- ペナルティ法:二階微分を罰する
- カーネル法:近くの点で重み付き平均
- 基底関数法:特定の基底の線形結合
でも、本質は同じです。どれも「近くの点では関数値が似ている」という仮定を、違う言葉で表現しているだけ。
そして、どのアプローチにも「調整つまみ」があります:
- ペナルティ法の $\lambda$:どれだけ滑らかさを重視するか
- カーネル法の $\lambda$:どこまでを「近く」と見なすか
- 基底関数法の $M$:何個の基底を使うか
このつまみを回すと、モデルの複雑さが変わります。ここで重要な概念が登場します:バイアスとバリアンスのトレードオフ。
バイアス(偏り):モデルが単純すぎて、真の関係を捉えられない誤差
バリアンス(ばらつき):モデルが複雑すぎて、ノイズにも反応してしまう誤差

- つまみを「単純」側に回す → バイアス大、バリアンス小
- つまみを「複雑」側に回す → バイアス小、バリアンス大
最適な点は、両者のバランスが取れた場所。でも、訓練データだけでは見つけられません。クロスバリデーション(データを分割して一部を検証用に使う手法)などで、未知のデータへの性能を推定する必要があります。
まとめ
この章で学んだことを振り返りましょう。
最初の問いは「訓練データを通る曲線は無限にある。どれを選ぶ?」でした。
答えは「制約を課す」こと。データだけでは決められないから、事前知識を使うのです。
3つのアプローチを見ました:
1. 粗さペナルティとベイズ法
- 「急激に曲がる関数は罰する」
- 二階微分でペナルティを定義
- ベイズ的には「滑らかな関数を好む」という信念
2. カーネル法と局所回帰
- 「近くの点を重視して平均する」
- ガウスカーネルで重みを決定
- k-近傍法の洗練版
3. 基底関数と辞書法
- 「特定の形の関数だけ考える」
- 基底関数の線形結合で表現
- ニューラルネットワークもこの仲間
3つとも見た目は違うが、本質は同じ。「近くの点では関数値が似ている」という仮定を、違う言葉で表現しているだけでした。
そして、どのアプローチにも「複雑さを調整するつまみ」があり、これがバイアス-バリアンスのトレードオフを制御します。
次章では「どうやってこのつまみを最適な位置に合わせるか」—モデル選択の問題に進みます。