使用GridSearchCV调优SVM时测试准确率高于best_score_的原因?
为什么GridSearchCV的best_score_低于测试集准确率
你对best_score_的认知是正确的,它确实是交叉验证结果中mean_test_score的最大值,出现测试集准确率更高的情况属于正常现象,核心原因如下:
- 两个指标对应的训练数据量不同
best_score_是5折交叉验证过程中,每次仅用80%的训练集(4/5拆分)训练模型,在剩余20%验证集上得到的准确率的平均值,是对模型泛化能力的偏保守估计。而你调用clf.score(X_test, y_test)时,用到的最优模型是GridSearchCV筛选到最优超参数后,用100%的完整训练集重新训练得到的,训练数据量更多,模型拟合效果更好,泛化能力自然比交叉验证时用部分数据训练的模型更强,得分更高完全合理。 - 数据集随机波动的影响
测试集本身是独立于训练集的随机抽样样本,如果测试集的样本分布刚好和模型的拟合偏好更匹配、或者样本整体分类难度更低,也会出现测试得分高于交叉验证平均得分的情况。你这里两者差值仅在3%左右,属于完全正常的波动范围,不需要额外处理。
如果需要更稳定的泛化能力评估,可以采用多次交叉验证取平均的方式,或者调整数据集拆分的随机种子重复实验验证即可。
内容的提问来源于stack exchange,提问作者Lif
相关产品推荐
相关产品推荐

