【问题标题】:SageMaker XGBoost hyperparameter tuning versus XGBoost python packageSageMaker XGBoost 超参数调优与 XGBoost python 包
【发布时间】:2020-06-10 21:44:11
【问题描述】:

我正在尝试对 xgboost 模型进行超参数调整。我从 AWS Sagemaker 超参数调优开始,参数范围如下:

xgb.set_hyperparameters(eval_metric='auc',
                        objective='binary:logistic',
                        early_stopping_rounds=500,
                        rate_drop=0.1,
                        colsample_bytree=0.8,
                        subsample=0.75,
                        min_child_weight=0)

hyperparameter_ranges = {'eta': ContinuousParameter(0.01, 0.3),
                         'lambda': ContinuousParameter(0.1, 2),
                         'alpha': ContinuousParameter(0.5, 2),
                         'max_depth': IntegerParameter(5, 10),
                         'num_round': IntegerParameter(500, 2000)}

objective_metric_name = 'validation:auc'

tuner = HyperparameterTuner(xgb,
                            objective_metric_name,
                            hyperparameter_ranges,
                            max_jobs=10,  
                            max_parallel_jobs=3,
                            tags=[{'Key': 'Application', 'Value': 'cxxx'}])

并获得具有以下超参数集的最佳模型:

{
  "alpha": "1.4009334471163981",
  "eta": "0.05726016655019904",
  "lambda": "1.2070623852474922",
  "max_depth": "7",
  "num_round": "1052"
}

出于好奇,我将这些超参数连接到 xgboost python 包中,如下所示:

xgb_model = xgb.XGBClassifier(max_depth = 7,
                          silent = False,
                          random_state = 42,
                          n_estimators = 1052,
                          learning_rate = 0.05726016655019904,
                          objective = 'binary:logistic',
                          verbosity = 1,
                          reg_alpha = 1.4009334471163981,
                          reg_lambda = 1.2070623852474922,
                          rate_drop=0.1,
                          colsample_bytree=0.8,
                          subsample=0.75,
                          min_child_weight=0
                        )

我重新训练了模型,发现我从后者获得的结果比从 SageMaker 获得的结果要好。 xgboost(验证集的 auc):0.766 SageMaker 最佳模型(验证集的 auc):0.751

我想知道为什么 SageMaker 的表现如此糟糕?如果 SageMaker 通常性能比 xgboost python 包差,那么人们通常如何进行 xgboost 超参数调优呢?感谢您的任何提示!

【问题讨论】:

  • 您是否对 SM xgboost 和 python xgboost 使用相同的训练集和测试集?
  • 是的,我为两个 xgboost 使用相同的训练和测试集。

标签: xgboost amazon-sagemaker hyperparameters


【解决方案1】:

我的第一个猜测是您使用的是不同版本的 XGBoost。您使用的是哪个图像?启用脚本模式的开源 XGBoost 使用 0.90。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-11
    • 1970-01-01
    • 2020-01-20
    • 2020-09-10
    • 2020-01-31
    • 2021-06-02
    • 2021-12-15
    • 2021-09-29
    相关资源
    最近更新 更多