lightgbmの結果が毎回変わってしまう
解決したいこと
lightgbm, optuna を使って機械学習をしているのですが、実行結果が毎回変わってしまいます。
random_stateの設定し忘れがないか何度も確認したのですが結局分からず・・・。
わかる方よろしくおねがいします。
該当コード
import lightgbm
from sklearn.metrics import roc_auc_score
import optuna
from sklearn.model_selection import train_test_split
#X, y はDataFrameです。欠損値補完にもlightgbmを用いていますが、そこの時点では毎回同じ結果になっていることは確認済みです
X_train, X_valid, y_train, y_valid = train_test_split(X, y, test_size=0.3, stratify=y, random_state=42)
def objective(trial):
param_grid = {
"num_leaves": trial.suggest_int("num_leaves", 30, 100),
"max_bin": trial.suggest_int("max_bin", 200, 500),
"num_iterations": trial.suggest_int("num_iterations", 100, 200),
"max_depth": trial.suggest_int("max_depth", 1, 1000)
}
model = lightgbm.LGBMClassifier(**param_grid, random_state=42)
model.fit(X_train, y_train)
return roc_auc_score(y_valid, model.predict_proba(X_valid)[:, 1])
study = optuna.create_study(direction="maximize", sampler=optuna.samplers.RandomSampler(seed=42))
study.optimize(objective, n_trials=100, n_jobs=-1)
study.best_params #これも毎回違います
model = lightgbm.LGBMClassifier(random_state=42, **study.best_params)
model.fit(X_train, y_train)
roc_auc_score(y_valid, model.predict_proba(X_valid)[:, 1]) #このスコアが毎回変わってしまいます
よろしくおねがいします。
0