xgboost:监视列表中要使用的数据

xgboost: what data to use in the watchlist

当 运行 xgboost 优化其超参数时,我使用监视列表中的开发(验证)集并从中得出预测以检查其性能是否正确?在使用 hyperopt 搜索超参数时,我也有关于遵循相同过程的问题。

我想知道这是否正确,因为令人印象深刻的是,除了在最后做出最终预测之外,我们从未将测试集用于任何其他用途。谢谢你的时间。

# prepare xgboost data
xg_train = xgb.DMatrix(X_train, label=y_train)
xg_test = xgb.DMatrix(X_test, label=y_test)
xg_dev = xgb.DMatrix(X_dev, label=y_dev)

# validations set to watch performance
watchlist = [(xg_train,'train'), (xg_dev,'eval')]

# validation results
evals_results = {}

# boost
bst = xgb.train(params=param,
                dtrain=xg_train,
                num_boost_round=5000,
                evals=watchlist,
                evals_result=evals_results,
                early_stopping_rounds=100)

# generate scores
predicted_y = bst.predict(xg_dev, ntree_limit=bst.best_iteration)
current_score = f1_score(y_dev, np.round(predicted_y), average='weighted')

插话回答问题:是的,直觉是正确的。使用开发集观察训练效果。