Я пытаюсь выполнить гиперпараметрическую настройку модели 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? Спасибо за любые подсказки!