Настройка гиперпараметра SageMaker XGBoost по сравнению с пакетом XGBoost python - PullRequest
0 голосов
/ 27 февраля 2020

Я пытаюсь выполнить гиперпараметрическую настройку модели 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 (au c из набора проверки): 0.766 Лучшая модель SageMaker (au c из набора проверки): 0.751

Интересно, почему SageMaker работает так плохо? Если SageMaker обычно работает хуже, чем пакет xgboost python, как люди обычно настраивают гиперпараметр xgboost? Спасибо за любые подсказки!

1 Ответ

0 голосов
/ 28 февраля 2020

Мое первое предположение - то, что вы используете другую версию XGBoost. Какое изображение вы используете? В режиме сценария включен открытый исходный код XGBoost использует 0,90.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...