python - XGBoost CV 和最佳迭代

标签 python machine-learning statistics xgboost

我正在使用 XGBoost cv 为我的模型找到最佳轮数。如果有人能证实(或反驳),我将不胜感激,最佳回合数是:

    estop = 40
    res = xgb.cv(params, dvisibletrain, num_boost_round=1000000000, nfold=5, early_stopping_rounds=estop, seed=SEED, stratified=True)

    best_nrounds = res.shape[0] - estop
    best_nrounds = int(best_nrounds / 0.8)

即:完成的总轮数为 res.shape[0],因此为了获得最佳轮数,我们减去提前停止轮数。

然后,我们根据用于验证的分数增加轮数。 对吗?

最佳答案

是的,如果当您执行 best_nrounds = int(best_nrounds/0.8) 时您认为您的验证集占整个训练数据的 20%(另一种说法是您执行了5 折交叉验证)。

规则可以概括为:

n_folds = 5
best_nrounds = int((res.shape[0] - estop) / (1 - 1 / n_folds))

或者,如果您不执行 CV,而是执行一次验证:

validation_slice = 0.2
best_nrounds = int((res.shape[0] - estop) / (1 - validation_slice))

您可以看到应用此规则的示例 here on Kaggle (查看评论)。

关于python - XGBoost CV 和最佳迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40500638/

相关文章:

scala - 如何将 ML 稀疏向量类型的变量转换为 MLlib 稀疏向量类型?

python - 使用 Tensorflow 多项式回归给出错误答案

r - 错误概率函数

python - Python 中大数的高斯核密度估计 (KDE)

python - Python 中唯一的列表元素,但更喜欢大写值

python - Sendgrid 使用 API key 进行身份验证

Javascript 变量未在函数范围之外更改

Python3 BeautifulSoup 返回连接字符串

python - sklearn test train split - 获取原始列表文件名的索引

python - 报告来自两个预先计算的直方图的双样本 K-S 统计量