実験管理と再現性
シード固定・構成管理・実験ログ・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.csvNotebook を整理する#
- セルの実行順序を上から通るように保つ(飛び実行で再現不能にしない)
- EDA / 前処理 / 学習 / 提出 をセクション分け
- 重要な発見は Markdown セルに残す
ヒント
「再現できる 1 本の Notebook/スクリプト」を保つと、終盤に最良構成を再学習して提出するのが安全・確実になります。
理解度チェック#
次のステップ#
次は、ベースラインから終盤までのコンペ戦略と、信頼できる CV の作り方を学びます。