モデル評価 — 完全な講義ノート
動画ソース: データサイエンス · モジュール 3 — モデル評価 · Coursera · Park 教授 · 46 分
なぜ分割するのか
レッスン- 目的: モデルが未見データでどう振る舞うかを推定する — 唯一意味のある指標。
- 失敗: 訓練だけで評価するとどんなモデルも良く見えてしまう(悪いモデルも含めて)。
- ホールドアウト原則: モデル選定やハイパラ調整など、いかなる決定もテストセットを最終評価前に見てはいけない。
三分割
レッスン- 訓練: モデルパラメータの当てはめに使う。
- 検証: ハイパラ調整とモデル比較に使う — 何度も触る。
- テスト: 最後に 1 回だけ — 実運用性能の推定。
- なぜ 3 つ必要: テストで調整すると第二の訓練セットになり、汎化を過大評価してしまう。
典型的な分割比
レッスン- 70/15/15: 中規模(1k–10万サンプル)の標準。
- 80/10/10: 1–10万サンプルで訓練に CV を行う場合に多い。
- ビッグデータ 98/1/1: 100万以上の場合は 1% でも 1 万サンプル — 安定推定に十分。
層化
レッスン- いつ: クラス不均衡や稀少事象がある場合に層化サンプリングを使う。
- 効果: 各分割でクラス比を保ち、検証セットに正例が 0 件入る事故を防ぐ。
- ツール: sklearn の StratifiedKFold もしくは train_test_split(stratify=y)。
交差検証
レッスン- k-fold: 訓練セットを k 分割。k-1 で訓練、1 で検証。回しながら k 個のスコアを平均。
- k の目安: 5 か 10。それ以上は限界効用低下。
- 時系列: 拡大窓・ロー リング窓を使い、未来データで訓練しない。
過学習
レッスン- 定義: モデルが信号ではなくノイズを暗記する。
- 兆候: 訓練精度は上がるが検証精度は頭打ちか下がる。
- 対策: データ追加、モデル簡素化、L1/L2、Dropout、Early Stopping、Data Augmentation。
データリーク
レッスン- 前処理リーク: Scaler を全データで fit すると分布情報が漏れる — Pipeline 化して CV 内で処理。
- 目的リーク: 目的変数から派生した特徴量を使うと不自然に高精度になる。
- 時間リーク: 未来データで訓練して過去を予測する — 時系列ではローリング分割を必ず使う。
演習例
レッスン- 設定: 1 万サンプル、二値分類、70/15/15 で分割。
- 件数: train = 7,000、val = 1,500、test = 1,500。
- 層化: クラス比 80/20 なら各分割もその比を保つ — 訓練は 5,600 / 1,400。






