このページは、機械学習モデルの 評価と汎化 を、初学者向けに短く整理するノートです。時系列の背景は 評価と汎化史、全体の座標は 古典機械学習モデル史 を参照してください。特徴量設計との関係は 特徴量設計(概要)、各モデル(線形系・SVM・木系)の比較は各概要ページを併せて読むと立体的になります。
ざっくりいうと
- 汎化:学習に使っていないデータでも性能が落ちにくい、という性質。手元データで自慢するためではなく、本番で当てたい から測る。
- 過学習(オーバーフィッティング):訓練データに合わせ込みすぎて、未知データで崩れる状態。未学習(アンダーフィッティング) とトレードオフ。
- 評価設計:データの 分け方(訓練・検証・テスト)と 指標 の選び方をセットで決める作業。モデル選択と同じくらい結果を左右する。
- 正則化:過学習を抑える側の道具。代表は L2(リッジ) と L1(ラッソ)。反復学習なら 早期終了(early stopping)も近い役割。
- 指標選定:精度(accuracy)以外にも、適合率・再現率・F 値・ROC/AUC・RMSE/MAE など、課題に合った見方を選ぶ。
評価の中で何をしているか
たとえば家賃予測のモデルを作るとき、手元の成約データだけで「ぴったり当てる式」を作っても、新しい物件で外しがちでは意味がありません。評価と汎化は、こうした「手元では当たるのに本番で外す」という 見かけと実態のズレ を、再現可能な手順で見つけて潰すための営みです。だいたい次の流れになります。
- データを 訓練・検証・テスト に分ける(時系列やグループ構造があれば、未来や別人を混ぜないように分割を工夫する)。
- 訓練 で、モデルのパラメータ(線形なら係数、木なら分岐条件など)をデータから決める。
- 検証 で、過学習していないかを見ながら、ハイパーパラメータ(正則化の強さ、木の深さ、SVM の
Cや γ など)を選ぶ。 - テスト で、本番に近い未知データに対する性能を見積もる。テストには触らない、が原則。
スケールがバラバラなら学習前に 標準化と正規化 を検討するなど、評価以前の前処理が結果に効いてきます。検証データを何度も覗いて選び直すと、それ自体が 検証データへの過学習 になり得るので、回数や設計を意識して使います。
学習・検証・テストの役割分担
| 段階 | 役割 | 触れていいか |
|---|---|---|
| 訓練 | モデルのパラメータを決める | ✓(学習で使う) |
| 検証 | ハイパーパラメータの選択や早期終了の判断 | ✓(覗くが学習はしない) |
| テスト | 本番に近い性能の見積もり | ✗(最後まで触らない) |
強みと限界(短く)
強み(評価設計を意識する意義)
- モデル単体の精度自慢ではなく、本番に近い性能 で比較できるので、選び間違いが減る。
- データ漏えいや分布のずれといった 失敗パターンを早期に発見 しやすい。
- ハイパーパラメータ探索や正則化と組み合わせると、過学習を抑えながら 性能を引き上げられる。
- 業務目的と指標を結びつけて議論できるようになる(不均衡やコスト非対称への配慮)。
限界(典型的な落とし穴)
- データ漏えい(data leakage):未来情報や目的変数の影が特徴量に紛れ、見かけ性能だけが膨らむ。
- 検証データへの過学習:ハイパーパラメータ探索を繰り返すうちに、検証セットだけに合わせ込んだモデルになる。
- 指標と業務目的のずれ:精度は高くても、再現率不足で重要事象を取りこぼす、コスト非対称を無視している、など。
- 訓練分布と本番分布のずれ(分布シフト):時間や対象集団が変われば、見かけ性能と実運用の差が広がる。
何が「過学習」「未学習」を生むか(イメージ)
「ぴったり当てたい」と「全体に通用させたい」は、データ量と複雑さの綱引きでバランスが決まります。複雑すぎるモデルや、データに対して d(特徴数)が大きすぎる 状態は、訓練ではきれいでも検証で崩れがちです。逆に単純すぎれば、訓練段階で既に当たりません。
- 過学習:訓練データの偶然のクセを覚えてしまった状態。検証スコアが訓練スコアより大幅に低い。
- 未学習:そもそも訓練データのパターンを取れていない状態。訓練スコアからして低い。
- バイアス:モデルが体系的にズレる傾向。単純すぎると大きくなる。
- バリアンス:データを少し入れ替えるとモデルが大きくぶれる傾向。複雑すぎると大きくなる。
正則化や交差検証は、この綱引きを 観察 → 抑制 するための道具立て、と読み替えられます。
よく混ざる用語(会話での補足)
訓練 / 検証 / テスト
- 訓練(train):モデルのパラメータを決めるためのデータ。
- 検証(validation):ハイパーパラメータ選択や早期終了の判断に使うデータ。何度も覗いてもよいが、覗きすぎると過学習する。
- テスト(test):最後まで触らずに残し、本番に近い性能を見積もるためのデータ。
交差検証(cross-validation)
データを k 個に分け、k-1 で学習・残り 1 で検証、を k 回回して平均を取る方法(k 分割)。データが少ないときに 検証セットの偶然性 を平均で抑えるのが狙い。leave-one-out は k = N の極端版。
ROC 曲線・AUC
しきい値を動かしたときの 真陽性率と偽陽性率 をプロットした曲線が ROC、その下の面積が AUC。不均衡データや、しきい値設計を後で詰めたい場面で扱いやすい指標。
正則化(L1, L2)
損失に「重みが大きいほどペナルティ」の項を足して、過学習を抑える方法。L2(リッジ) は係数を全体的に小さく、L1(ラッソ) は不要な係数を 0 に潰しやすい、というイメージ。
分布シフト
訓練分布と本番分布のずれ。x の出方が変わる 共変量シフト、y の比率が変わる ラベルシフト、関係そのものが変わる 概念ドリフト などに分かれる。