GridSearchCV异常:始终返回首个搜索参数为最优值问题咨询
参数顺序改变导致最优参数变化的原因
你两次运行得到的两组最优参数实际效果完全等价:penalty='l2' 与 penalty='elasticnet' + l1_ratio=0.0 的逻辑回归正则项逻辑完全一致,因此两类参数训练出的模型效果完全相同,交叉验证得分也完全一致。
sklearn的GridSearchCV在多个参数组合得分相同时,会优先选择遍历顺序中先出现的参数组合,你调整parameters列表的顺序等价于调整参数遍历顺序,因此会返回先出现的那组等价参数。
GridSearchCV结果看似比基线差的原因
- 评估维度不统一:
GridSearchCV.best_score_是5折交叉验证中每折验证集的f1_macro得分平均值,反映的是模型的泛化能力;而你计算的基线得分是全量训练集上的预测得分,训练集得分天然会高于验证集得分,二者没有可比性。 - 评估指标不统一:GridSearchCV调参的优化目标是
f1_macro,而你首先用f1_micro对比基线和调参结果,两类指标的计算逻辑不同,不能直接横向对比。 - 随机种子未对齐:你传入GridSearchCV的逻辑回归固定了
random_state=42,但基线模型没有设置random_state,saga solver本身是带随机性的优化算法,随机种子不同会导致最终训练结果存在波动。 - 浮点精度误差导致参数排序偏差:如果C=1和C=0.1的交叉验证得分差距极小,在浮点误差范围内可以认为一致,GridSearchCV会优先选择遍历顺序中更靠前的参数值,因此会返回先出现的C=0.1。
验证建议
- 查看
model.cv_results_中所有参数组合的得分,确认{'C':0.1, 'penalty':'l2'}和{'C':0.1, 'penalty':'elasticnet', 'l1_ratio':0.0}的得分是否完全一致,同时确认C=1对应的交叉验证得分和C=0.1的差异幅度。 - 要对比基线和调参后模型的效果,应统一用相同的评估规则:比如都用5折交叉验证的验证集得分对比,或者都用独立测试集的得分对比,不要用训练集得分和交叉验证得分比。
- 对齐基线模型的random_state和固定参数,再重新计算基线的交叉验证得分,和GridSearch的结果对比。
内容的提问来源于stack exchange,提问作者Lisbeth
相关产品推荐
相关产品推荐

