Chapter 22
モデル選択と予測 — 過学習・交差検証・情報量規準
この章がなぜ必要なのか——「よく当てはまる」と「よく予測できる」は違う.
手元のデータへの当てはまりは、変数を増やすほど良くなる。 極端には、\(n\) 個の点は \(n-1\) 次の多項式で完全に通せる(\(n-1\) 次多項式の係数は \(n\) 個あり、「\(n\) 個の点を通る」という \(n\) 本の式でちょうど決まる)。誤差ゼロである。
だがそのモデルで新しいデータを予測すると、悲惨な結果になる。 データのノイズまで覚え込んでしまったからだ。これが過学習である。
この章は「モデルの良さをどう測るか」に答える。 10 章の MSE 分解(バイアス² + 分散)が、ここで実務的な形をとって戻ってくる。この章では機械学習の慣用に合わせて分散をバリアンスとも呼ぶ。 そして統計学と機械学習が完全に合流する場所でもある。
この章で使う既出の用語(定義は各リンク先). 標本(01 章 2 節)、外れ値(03 章 1 節)、期待値 \(E[\cdot]\)・分散 \(V[\cdot]\)(06 章 3〜4 節)、独立(04 章 5 節)、相関(06 章 5 節)、尤度・最大対数尤度(10 章 3 節)、MSE 分解・一致性(10 章 2 節, 5 節)、多重比較(17 章 1 節)、ブートストラップ(16 章)、残差 \(e_i\)・\(SS_E\)・\(SS_T\)・\(R^2\)(18 章 3〜4 節)、正則化・Ridge・Lasso(20 章 7〜8 節)、てこ比 \(h_{ii}\)(20 章 3 節)、正解率・適合率・再現率(= 感度)・AUC(21 章 5 節)、キャリブレーション(21 章 8 節)
1. 過学習と汎化
| 用語 | 意味 |
|---|---|
| 訓練誤差 | 学習に使ったデータでの誤差 |
| 汎化誤差(テスト誤差) | 未知のデータでの誤差。本当に知りたいのはこちら |
| 過学習 (overfitting) | 訓練誤差は小さいが汎化誤差が大きい状態 |
| 未学習 (underfitting) | 両方とも大きい状態 |
モデルの複雑さを上げていくと.
- 訓練誤差は単調に下がり続ける
- 汎化誤差はいったん下がって、その後上がる(U 字型)
この U 字の底が最適な複雑さである。 訓練誤差を見ているかぎり、この底は絶対に見つからない。
2. バイアス-バリアンス分解
新しい点 \(x_0\) における予測誤差を分解する。真のモデルを \(y=f(x)+\varepsilon\)、ノイズは平均 0・分散 \(\sigma^2\)(\(E[\varepsilon]=0\)、\(V[\varepsilon]=\sigma^2\))とする。\(\hat f\) は訓練データから作った予測モデルで、訓練データが変わると変わる確率的なものなので、\(E[\hat f(x_0)]\) や \(V[\hat f(x_0)]\) は「訓練データの取り直し」についての期待値・分散である。
導出: \(y_0 = f(x_0)+\varepsilon\) で \(\varepsilon\) は \(\hat f\) と独立。\(\bar f = E[\hat f(x_0)]\) と置く。
(真ん中の項は独立性より \(E[\varepsilon(f-\hat f)] = E[\varepsilon]E[f-\hat f]\) と分けられ、\(E[\varepsilon]=0\) で消える。最後は \(V[\varepsilon] = E[\varepsilon^2] - E[\varepsilon]^2 = E[\varepsilon^2]\)。)
∎(証明終わりの記号)
| 項 | 意味 | モデルを複雑にすると |
|---|---|---|
| バイアス² | モデルの表現力不足による系統誤差 | 減る |
| バリアンス | データが変わると予測が変わる度合い | 増える |
| \(\sigma^2\) | ノイズそのもの | 変わらない(減らせない) |
これが「複雑さ」のトレードオフの正体である. 単純すぎるモデルは的の中心を外す(高バイアス)。 複雑すぎるモデルは的の周りに散らばる(高バリアンス)。 総和を最小にする中間点が最適である。
ダーツで言えば、下手だが安定した人(高バイアス・低バリアンス)と、 中心を狙えるが手ブレする人(低バイアス・高バリアンス)—— どちらも点が取れない。両方の和が小さい人が強い。
20 章の正則化は、意図的にバイアスを増やしてバリアンスを減らす操作だった。 この分解を見れば、なぜそれが得になりうるかが分かる。
3. 交差検証 (cross-validation)
汎化誤差を推定する、最も汎用的で信頼できる方法。
ホールドアウト法
データを訓練用・テスト用に分割(例: 7:3)。
欠点: 分割の仕方で結果が変わる。データを無駄にする(テスト分は学習に使えない)。
\(k\)-分割交差検証
- データを \(k\) 個のグループに分割
- 1 つをテスト、残りを訓練にして誤差を計算
- テストにするグループを変えて \(k\) 回繰り返す
- \(k\) 個の誤差を平均
(\(\text{MSE}_j\) は \(j\) 番目のグループをテストにしたときの平均二乗誤差 \(\frac{1}{m}\sum(y_i-\hat y_i)^2\)、\(m\) はそのグループのデータ数。7 節 でまとめる指標の 1 つ。)
\(k=5\) または \(10\) が標準。
| \(k\) | バイアス | バリアンス | 計算量 |
|---|---|---|---|
| 小(2〜3) | 大(各回の訓練データが全体の \((k-1)/k\) しかなく、最終モデルより不利な条件で測るので、汎化誤差を悲観的に見積もる) | 小 | 小 |
| 中(5〜10) | バランス良好 | 中 | 中 |
| 大(\(=n\)、LOOCV) | 小 | 大 | 大 |
LOOCV(1 個抜き交差検証)
\(k=n\) の場合。線形回帰では閉じた式で一発計算できる。
(\(\hat y_i\) は全データで学習した回帰の予測値、\(h_{ii}\) はてこ比。20 章。)
導出: 線形回帰の予測値はデータの線形結合 \(\hat y_i = \sum_j h_{ij} y_j\) で書け、その対角成分 \(h_{ii}\) がてこ比である(20 章)。 点 \(i\) を除いて学習したモデルの、点 \(i\) での予測値を \(\hat y_{(i)}\) とする。 ここで「\(y_i\) を \(\hat y_{(i)}\) に差し替えた \(n\) 個のデータ」を考えると、点 \(i\) を除いて求めた回帰直線はこの差し替え点の上をちょうど通る(残差 0)ので、差し替え後の全データに対する最小二乗解でもある。 線形性より、この差し替えデータでの点 \(i\) の予測値は
\(\hat y_{(i)}\) について解くと \(\hat y_{(i)}(1-h_{ii}) = \hat y_i - h_{ii}y_i\)。よって除外したときの予測誤差は
これを 2 乗して平均したものが上の式である。∎
\(n\) 回モデルを作り直す必要がないという驚くべき結果である。 1 回の回帰から得られる残差とてこ比だけで、LOOCV の値が完全に計算できる。 てこ比の高い点は、除いたときの影響が大きいので、分母で強く割り増しされる。
やってはいけない交差検証
「特徴量選択をしてから交差検証」は重大な誤り。 全データを使って「\(y\) と相関の高い変数を 100 個選ぶ」→ そのあと交差検証、 という手順は、テストデータの情報が変数選択に漏れている(データリーク)。 結果として汎化性能を大きく楽観視する。
正しくは、変数選択も含めて交差検証のループの中に入れる。 標準化・欠測補完・特徴量エンジニアリングも同様である。
sklearnのPipelineはこれを強制するための仕組みでもある。
特殊な状況
| 状況 | 使う方法 |
|---|---|
| クラス(分類問題の目的変数のカテゴリ)の不均衡 | 層化 \(k\)-分割(各分割のクラス比を保つ) |
| 時系列 | 時系列分割(過去で学習、未来で検証)。ランダム分割は厳禁 |
| グループ構造(同一患者の複数測定) | グループ \(k\)-分割(同じ患者が訓練とテストに分かれないように) |
時系列でランダム分割をすると、未来の情報で過去を予測することになる. 「完璧な予測モデルができた」ように見えるが、実運用では全く動かない。 実務で最もよく見る失敗の 1 つである。
4. 情報量規準
交差検証は計算コストが高い。理論的に汎化誤差を近似するのが情報量規準である。
AIC(赤池情報量規準)
(\(\ell\) = 最大対数尤度、\(p\) = モデルのパラメータ数。3 節 の分割数 \(k\) とは別物なので文字を変えてある。\(\log\) はこの章では自然対数。)小さいほど良い。
導出の考え方. 真の分布 \(g\) と推定した分布 \(f_{\hat\theta}\) のカルバック・ライブラー情報量 \(KL(g\|f_{\hat\theta})\) を最小にしたい。これは直接計算できないが、 その期待値を推定すると「最大対数尤度」にバイアス \(p\) が乗っていることが示せる。 それを補正したのが \(-2\ell+2p\) である。
\(2p\) は「パラメータを増やすと当てはまりが良くなるのは当たり前」という分の割引である。
正規線形モデルでは(\(SS_E\) は残差平方和 \(\sum(y_i-\hat y_i)^2\)、18 章)
小標本補正 (AICc):
\(n/p < 40\) なら AICc を使う、というのが Burnham と Anderson が示した経験的な目安である(\(n\) が大きければ補正項は 0 に近づき、どちらでも同じになる)。
BIC(ベイズ情報量規準)
\(\log n > 2\)(自然対数なので \(n\ge 8\)、\(\ln 8 = 2.08\))なら BIC の方が罰則が重く、より単純なモデルを選ぶ。
AIC と BIC の違い
| AIC | BIC | |
|---|---|---|
| 罰則 | \(2p\) | \(p\log n\) |
| 目的 | 予測精度の最適化 | 真のモデルの選択 |
| 理論的性質 | 漸近有効(\(n\) が大きいとき、候補の中で予測誤差が最小のモデルを選ぶ) | 一致性(真のモデルを選ぶ確率→1) |
| 前提 | 真のモデルは候補にない(近似) | 真のモデルが候補に含まれる |
| 傾向 | やや複雑なモデルを選ぶ | 単純なモデルを選ぶ |
どちらが正しいのかではなく、目的が違う. 「予測を当てたい」なら AIC、「本当の構造を知りたい」なら BIC。 実務では両方計算して、選ばれるモデルが一致するかを見るとよい。 大きく食い違うなら、モデル選択自体が不安定であるという情報になる。
なお、AIC は LOOCV と漸近的に等価である(Stone が 1977 年に示した結果。証明は本シリーズの範囲を超えるので事実として引用する)。 情報量規準と交差検証は、別の道から同じ場所に着いている。
5. モデル選択の実務
手順
1. 目的を決める(予測か、解釈か、因果推論か)
↓
2. 候補モデルを立てる(理論・ドメイン知識に基づく)
↓
3. 交差検証 or 情報量規準で評価
↓
4. 最終モデルを全データで学習
↓
5. 完全に未使用のテストデータで最終評価(1 回だけ)5 の「1 回だけ」が重要. テストデータを見て調整すると、 それはもうテストデータではなく訓練データである。 何度も使えば、テストデータへの過学習が起きる(17 章の多重比較と同じ構造)。
理想は訓練/検証/テストの 3 分割。検証データでモデルを選び、 テストデータは最後の 1 回だけ使う。
目的による使い分け
| 目的 | 方針 |
|---|---|
| 予測 | 交差検証で選ぶ。解釈不能でも精度が最優先。正則化・アンサンブルが有効 |
| 解釈 | 単純なモデル。係数の意味が説明できること。BIC 寄り |
| 因果推論 | モデル選択をデータに任せてはいけない。因果構造から変数を決める(24 章) |
3 番目が特に重要である. 因果効果を推定したいとき、 「AIC が最小だから」という理由で交絡因子を落としてはいけない。 逆に、中間変数(処置の結果として変わる変数)を入れると効果が消える。
統計的な当てはまりの良さと、因果的な正しさは無関係である。
6. アンサンブル
複数のモデルを組み合わせて精度を上げる。バイアス-バリアンス分解で説明できる。
| 手法 | 仕組み | 主に減らすもの |
|---|---|---|
| バギング | ブートストラップ標本で複数モデルを作り平均 | バリアンス |
| ランダムフォレスト | バギング + 変数もランダム選択 | バリアンス |
| ブースティング | 前のモデルの誤りを順に修正 | バイアス |
| スタッキング | 複数モデルの予測を入力に、さらにモデルを学習 | 両方 |
なぜバギングでバリアンスが減るのか: 独立な \(B\) 個の予測の平均の分散は \(\sigma^2/B\)(06 章)。 実際には完全独立ではない。各予測の分散が \(\sigma^2\)、どの 2 つの予測の相関も \(\rho\) とすると、和の分散は \(B\) 個の分散と \(B(B-1)\) 組の共分散 \(\rho\sigma^2\) の和(06 章)なので、平均の分散は
\(B\) を増やしても第 1 項 \(\rho\sigma^2\) は残る。 ランダムフォレストが変数もランダムに選ぶのは、\(\rho\)(木どうしの相関)を下げるためである。
7. 予測性能の指標
回帰
| 指標 | 式 | 特徴 |
|---|---|---|
| MSE | \(\frac{1}{n}\sum(y_i-\hat y_i)^2\) | 大きな誤差を重く見る |
| RMSE | \(\sqrt{\text{MSE}}\) | 元の単位。最も使われる |
| MAE | \(\frac{1}{n}\sum\lvert y_i-\hat y_i\rvert\) | 外れ値に頑健 |
| MAPE | \(\frac{100}{n}\sum\lvert\frac{y_i-\hat y_i}{y_i}\rvert\) | 相対誤差。\(y\approx 0\) で破綻 |
| \(R^2\) | \(1-SS_E/SS_T\) | テストデータでは負になりうる |
分類
21 章の指標(正解率、感度、特異度、AUC)に加えて:
| 指標 | 式 |
|---|---|
| F1 スコア | \(\dfrac{2\times\text{適合率}\times\text{再現率}}{\text{適合率}+\text{再現率}}\)(再現率 = 感度。21 章) |
| 対数損失 | \(-\frac{1}{n}\sum_{i=1}^n[y_i\log\hat p_i+(1-y_i)\log(1-\hat p_i)]\)(\(\hat p_i\) は \(y_i=1\) の予測確率) |
| Brier スコア | \(\frac{1}{n}\sum(y_i-\hat p_i)^2\) |
確率を出力するなら、対数損失や Brier スコアを見るべきである. 正解率や AUC は「順位が合っているか」しか見ないので、 確率の較正が崩れていても高い値が出る(21 章のキャリブレーション)。
8. 「モデルはすべて間違っている」
ジョージ・ボックスの言葉: 「すべてのモデルは間違っている。しかし、いくつかは役に立つ。」
統計モデルは現実の単純化であり、真実そのものではない。 問うべきは「このモデルは正しいか」ではなく、 「このモデルは、この目的にとって十分に役立つか」である。
だから AIC の理論も「真のモデルが候補にある」とは仮定していない(あくまで近似の良さを測る)。 実務でモデルを選ぶときも、完璧さではなく目的への適合で判断する。
オッカムの剃刀
同じ説明力なら、より単純なモデルを選ぶ。
| 理由 | 内容 |
|---|---|
| 過学習しにくい | パラメータが少ないほどバリアンスが小さい |
| 解釈しやすい | 説明できることの価値 |
| 頑健 | データが変わっても結果が安定 |
| 実装・保守が楽 | 実務では無視できない |
情報量規準の罰則項(\(2p\) や \(p\log n\))は、この原則を数式にしたものである。
9. まとめ
| 概念 | 内容 |
|---|---|
| 過学習 | 訓練誤差 ↓、汎化誤差 ↑ |
| バイアス-バリアンス | \(\text{誤差}=\text{バイアス}^2+\text{バリアンス}+\sigma^2\) |
| 交差検証 | \(k=5\) or \(10\)。汎化誤差の最も信頼できる推定 |
| LOOCV | 線形回帰なら \(\sum\left(\frac{e_i}{1-h_{ii}}\right)^2/n\)(\(e_i = y_i-\hat y_i\))で一発 |
| AIC | \(-2\ell+2p\)。予測重視 |
| BIC | \(-2\ell+p\log n\)。真のモデル探索 |
- 訓練誤差を見てモデルを選んではいけない。必ず汎化誤差を推定する。
- 複雑さのトレードオフはバイアス-バリアンス分解で説明できる。
- 交差検証では、前処理・変数選択もループの中に入れる(データリーク防止)。
- 時系列はランダム分割禁止。時間順に分ける。
- AIC は予測、BIC は真のモデル。目的で使い分ける。
- 因果推論のための変数選択を、データに任せてはいけない(24 章)。