为何常规交叉验证与调参后的ROC AUC得分差异显著?
超参数调优后ROC AUC大幅下降但其他指标稳定的问题
我在评估XGBoost分类器时,先将数据集划分为训练集和验证集,使用模型默认参数对训练集执行5折分层交叉验证并计算ROC AUC:
xgbClassCV = XGBClassifier() kfold = StratifiedKFold(n_splits = 5) auc = cross_val_score(xgbClassCV, x_train, y_train, scoring = "roc_auc", cv = kfold) auc_avg = auc.mean()
所得ROC AUC(auc_avg)约为0.76。
随后我使用训练集通过随机交叉验证进行超参数调优:
xgbGrid = {..., ..., ..., ...} xgbClassHT = XGBClassifier() kfold = StratifiedKFold(n_splits = 5) xgbClassRand = RandomizedSearchCV(estimator = xgbClassHT, param_distributions = xgbGrid, n_iter = 60, \ cv = kfold, n_jobs = -1, verbose = 2) xgbClassRand.fit(x_train, y_train)
获取最优参数后,用该参数训练XGBoost分类器,在验证集上生成预测并计算ROC AUC:
xgbClassFT = XGBClassifier(..., ..., ..., ...) xgbClassFT.fit(x_train, y_train) predictions = xgbClassFT.predict(x_val) auc = metrics.roc_auc_score(y_val, predictions)
该ROC AUC(auc)约为0.65,比交叉验证结果低11个百分点。但我计算的其他得分(如准确率、精确率、召回率和F1)基本保持一致。
我对逻辑回归重复此过程,同样出现ROC AUC约差11个百分点但其他得分基本一致的情况。
内容的提问来源于stack exchange,提问作者Jaime Andrés Castañeda
相关产品推荐
相关产品推荐

