XGBoost CV 和早期停止
XGBoost CV and early stopping
我正在尝试使用 XGBoost.cv 提前停止,基于 mlogloss:
params = {'booster': 'gbtree', 'objective': 'multi:softprob',
'num_class': len(le.classes_), 'eta': 0.1,
'max_depth': 10, 'subsample': 1.0,
'scale_pos_weight': 1, 'min_child_weight': 5,
'colsample_bytree': 0.2, 'gamma': 0, 'reg_alpha': 0,
'reg_lambda': 1, 'eval_metric': 'mlogloss'}
res = xgb.cv(params, dm_train, nfold=5,
seed=42, early_stopping_rounds=10, verbose_eval=True,
metrics={'mlogloss'}, show_stdv=False)
print(res)
我对提前停止的理解是,如果我的评估指标在 n 轮(在本例中为 10 轮)后没有改善,运行 将终止。当我 运行 这段代码时,它在 10 轮后终止,打印输出:
test-mlogloss-mean
0: 6.107054
1: 5.403606
2: 4.910938
3: 4.546221
4: 4.274113
5: 4.056968
6: 3.876368
7: 3.728714
8: 3.599812
9: 3.485113
test-mlogloss 在每个时期都在下降,因此,我预计 运行 不会终止(因为准确性必须提高)。我哪里错了?
谢谢。
我没有设置 num_rounds 参数,它默认为 10。很简单。
我正在尝试使用 XGBoost.cv 提前停止,基于 mlogloss:
params = {'booster': 'gbtree', 'objective': 'multi:softprob',
'num_class': len(le.classes_), 'eta': 0.1,
'max_depth': 10, 'subsample': 1.0,
'scale_pos_weight': 1, 'min_child_weight': 5,
'colsample_bytree': 0.2, 'gamma': 0, 'reg_alpha': 0,
'reg_lambda': 1, 'eval_metric': 'mlogloss'}
res = xgb.cv(params, dm_train, nfold=5,
seed=42, early_stopping_rounds=10, verbose_eval=True,
metrics={'mlogloss'}, show_stdv=False)
print(res)
我对提前停止的理解是,如果我的评估指标在 n 轮(在本例中为 10 轮)后没有改善,运行 将终止。当我 运行 这段代码时,它在 10 轮后终止,打印输出:
test-mlogloss-mean
0: 6.107054
1: 5.403606
2: 4.910938
3: 4.546221
4: 4.274113
5: 4.056968
6: 3.876368
7: 3.728714
8: 3.599812
9: 3.485113
test-mlogloss 在每个时期都在下降,因此,我预计 运行 不会终止(因为准确性必须提高)。我哪里错了?
谢谢。
我没有设置 num_rounds 参数,它默认为 10。很简单。