Kaggle Tutorial

実験管理と再現性

シード固定・構成管理・実験ログ・Notebook 整理で、再現できる実験サイクルを回す方法を学びます。

なぜ再現性が要るか#

コンペは「少しずつ変えて CV を比較する」反復です。再現できない実験は比較できず、 「効いたはずの変更」を見失います。アンサンブルでは特に、各モデルの出力を後で組み合わせるため、 どの構成で出した予測かを確実に管理する必要があります。

シードを固定する#

乱数に依存する箇所(分割・モデル初期化・サンプリング)の乱数シードを固定します。

import os, random
import numpy as np

def set_seed(seed=42):
    os.environ["PYTHONHASHSEED"] = str(seed)
    random.seed(seed)
    np.random.seed(seed)
    # 各モデルにも random_state / seed を渡す

メモ

完全な再現が難しい要素(GPU の非決定性など)もあります。それでも分割と前処理のシードを 固定すれば、変更の効果を比較できる程度の再現性は保てます。

構成を切り出す#

特徴量・モデル・パラメータ・fold をハードコードせず、設定(config)として分離します。

CONFIG = {
    "features": ["TotalSF", "Age", "OverallQual"],
    "model": "lgbm",
    "params": {"learning_rate": 0.05, "num_leaves": 31},
    "n_splits": 5,
    "seed": 42,
}

設定を変えるだけで実験が切り替わり、結果と設定を 1 対 1 で残せます。

実験ログを残す#

各実験の 設定・CV スコア・提出ファイル名を表に記録します。 「何を変えたら CV がどう動いたか」を後から追えるのが、改善の最大の武器です。

exp_id | 変更点              | CV(AUC) | Public LB | submission
-------+--------------------+---------+-----------+----------------
 012   | TotalSF 追加        | 0.9123  | 0.911     | sub_012.csv
 013   | LGBM+XGB 平均       | 0.9156  | 0.913     | sub_013.csv

Notebook を整理する#

  • セルの実行順序を上から通るように保つ(飛び実行で再現不能にしない)
  • EDA / 前処理 / 学習 / 提出 をセクション分け
  • 重要な発見は Markdown セルに残す

ヒント

「再現できる 1 本の Notebook/スクリプト」を保つと、終盤に最良構成を再学習して提出するのが安全・確実になります。

理解度チェック#

Quiz再現性のために最も基本となる対策は?

次のステップ#

次は、ベースラインから終盤までのコンペ戦略と、信頼できる CV の作り方を学びます。