#optuna
Вопрос:
Допустим, я хочу попробовать как LGBM, так и XGBoost, у каждого из которых есть несколько гиперпараметров с одинаковым именем:
estimator_name = trial.suggest_categorical("estimator_name", ["lgbm", "xgboost"])
if estimator_name == "lgbm":
params = {
"reg_alpha": trial.suggest_loguniform("reg_alpha", 1/1024, 1024),
# ...
}
estimator = LGBMClassifier(**params)
elif estimator_name == "xgboost":
params = {
"reg_alpha": trial.suggest_loguniform("reg_alpha", 1/1024, 1024),
# ...
}
estimator = XGBClassifier(**params)
estimator.fit( ... )
В LGBM и XGBoost reg_alpha
имеют разные значения, так как LGBM работает на уровне листа, а XGBoost работает на уровне функций. Таким образом, в этом случае разные значения reg_alpha
будут иметь очень разные эффекты, в зависимости от значения estimator_name
.
Сможет ли Optuna справиться с этим должным образом? Или есть лучший способ, которым я должен это делать?