واریانس seed: همون مدل، ده بار آموزشدیده
ده تا آموزش یکسان که فقط seedشون فرق داره، نویز ذاتی مدل رو کمی میکنن: هر بهبود tuningی که از این واریانس کوچیکتر باشه، از شانس قابل تشخیص نیست — یه حفاظ که هر پروژه یه بار باید حسابش کنی.
کاربرد
که برای یه بهبود 0.002 واحدی AUC که در واقع چیزی جز نویز seed نیست، جشن نگیری (یا deploy نکنی).
پیشنیازها
lightgbm, scikit-learn, numpy
Python
import numpy as np
from lightgbm import LGBMClassifier
from sklearn.metrics import roc_auc_score
aucs = []
for seed in range(10):
m = LGBMClassifier(n_estimators=400, learning_rate=0.05,
subsample=0.8, subsample_freq=1,
random_state=seed, verbose=-1)
m.fit(X_train, y_train)
aucs.append(roc_auc_score(y_test, m.predict_proba(X_test)[:, 1]))
aucs = np.array(aucs)
print("AUC par graine :", np.round(aucs, 4))
print(f"moyenne {aucs.mean():.4f} | std {aucs.std():.4f} "
f"| plage {aucs.max() - aucs.min():.4f}")نتیجه
AUC par graine : [0.8712 0.8694 0.8731 0.8708 0.8687 0.8725 0.8703 0.8696 0.8719 0.8741] moyenne 0.8712 | std 0.0017 | plage 0.0054 Leçon : une « amélioration » de +0.003 d'AUC observée après un tuning tient dans la plage de bruit de graine (0.0054) — elle ne prouve rien. Pour comparer deux variantes : moyenner 5 graines de chaque côté, ou exiger un gain > 3x le std (ici > 0.005).
ReproductibilitéGraineVarianceAUC