过度拟合训练数据,同时仍在改进验证数据
Overfitting on the training data while still improving on the validation data
我正在用 R 中的 XGBoost 拟合一个二元分类模型。我的数据集有 300k 个观测值,有 3 个连续预测变量和 1 个单热编码因子变量,有 90 个水平。因变量 y
为 True 或 False。
我已经进行了随机子采样以找到最佳超参数。对于每个设置,我都做了 5 折(分组)CV。下面的超参数设置导致了 5 倍估值数据折叠的最高平均 AUC:
booster objective max_depth eta subsample colsample_bytree min_child_weight
gbtree binary:logistic 8 0.7708479 0.2861735 0.5338721 1
接下来我在下面的 XGBoost 模型拟合中使用了这些超参数设置:
model_n <- xgb.train(data = xgb_trainval,
booster = "gbtree",
objective = "binary:logistic",
max_depth = 8,
eta = 0.7708479,
subsample = 0.2861735,
colsample_bytree = 0.5338721,
min_child_weight = 1,
nrounds = 1000,
eval_metric = "auc",
early_stopping_rounds = 30,
print_every_n = 100,
watchlist = list(train = xgb_trainval, val = xgb_val)
)
我是这样可视化测评日志的:
model_iterations <- model_n$evaluation_log$iter
model_train_auc <- model_n$evaluation_log$train_auc
model_val_auc <- model_n$evaluation_log$val_auc
我得出结论,该模型在训练数据上过度拟合,因为 AUC 在 200 次迭代后变得接近 1。同时,该模型仍在验证数据上进行改进。一方面,我会得出结论,经过 500 次迭代后的模型不能成为一个好的模型,因为它在训练数据上严重过度拟合。另一方面,该模型在验证数据上具有最高的 AUC。
如果这个模型对训练数据过度拟合如上所示,它是否是最优的,或者我是否应该进一步调整以拥有一个对训练数据过度拟合较少的模型(具有相似甚至略低的 AUC验证数据)?
谢谢!
是的,这是一个可行的策略,但有一个最终的未见过的测试集。
同时检查所有数据,您对观察结果是否满意,与不满意的观察结果相比,它的得分很高。
您对模型无法处理的案例满意吗?
如果不是,则进行加权训练,这样重要类型的情况处理得很好,不太重要的情况可能处理不好。
我正在用 R 中的 XGBoost 拟合一个二元分类模型。我的数据集有 300k 个观测值,有 3 个连续预测变量和 1 个单热编码因子变量,有 90 个水平。因变量 y
为 True 或 False。
我已经进行了随机子采样以找到最佳超参数。对于每个设置,我都做了 5 折(分组)CV。下面的超参数设置导致了 5 倍估值数据折叠的最高平均 AUC:
booster objective max_depth eta subsample colsample_bytree min_child_weight
gbtree binary:logistic 8 0.7708479 0.2861735 0.5338721 1
接下来我在下面的 XGBoost 模型拟合中使用了这些超参数设置:
model_n <- xgb.train(data = xgb_trainval,
booster = "gbtree",
objective = "binary:logistic",
max_depth = 8,
eta = 0.7708479,
subsample = 0.2861735,
colsample_bytree = 0.5338721,
min_child_weight = 1,
nrounds = 1000,
eval_metric = "auc",
early_stopping_rounds = 30,
print_every_n = 100,
watchlist = list(train = xgb_trainval, val = xgb_val)
)
我是这样可视化测评日志的:
model_iterations <- model_n$evaluation_log$iter
model_train_auc <- model_n$evaluation_log$train_auc
model_val_auc <- model_n$evaluation_log$val_auc
我得出结论,该模型在训练数据上过度拟合,因为 AUC 在 200 次迭代后变得接近 1。同时,该模型仍在验证数据上进行改进。一方面,我会得出结论,经过 500 次迭代后的模型不能成为一个好的模型,因为它在训练数据上严重过度拟合。另一方面,该模型在验证数据上具有最高的 AUC。
如果这个模型对训练数据过度拟合如上所示,它是否是最优的,或者我是否应该进一步调整以拥有一个对训练数据过度拟合较少的模型(具有相似甚至略低的 AUC验证数据)?
谢谢!
是的,这是一个可行的策略,但有一个最终的未见过的测试集。
同时检查所有数据,您对观察结果是否满意,与不满意的观察结果相比,它的得分很高。
您对模型无法处理的案例满意吗?
如果不是,则进行加权训练,这样重要类型的情况处理得很好,不太重要的情况可能处理不好。