0

假设我想同时尝试 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 能否妥善处理此问题?还是有更好的方法我应该这样做?

4

0 回答 0