使用HalvingGridSearchCV调优XGBRegressor超参数得分低问题排查
代码不合理/错误点
- 超参数搜索逻辑完全失效:你传入的
param_grid中所有参数的候选列表都只有1个固定值,HalvingGridSearchCV没有多组参数可供对比筛选,所谓的「最优参数」就是你手动指定的唯一一组参数,相当于白用了搜索类,没有起到调参作用。 - 存在数据泄露风险:
fit方法中传入的早停验证集用了全局测试集(x_test, y_test),调参过程直接用到了测试集信息,会导致最终测试集评估结果失真,正确的做法是早停逻辑在交叉验证的每一折内部的验证集上执行。 - 参数设置不符合XGBoost的常规合理范围:
max_depth设置为500属于完全不合理的取值,XGBoost作为单棵树深度较小的集成模型,常规取值在3~20之间,过深的树不仅会大幅增加训练耗时,还极容易导致过拟合。- 正则化参数
reg_lambda设置为50、min_child_weight设置为50,正则强度过高,很可能导致模型欠拟合,拟合能力不足自然得分偏低。
- HalvingGridSearchCV的参数配置浪费算力:
aggressive_elimination=True是为了在候选参数组合极多时快速淘汰差的组合,你只有1组参数的情况下开启该配置完全没有意义。
模型得分偏低的常见原因
- 超参数覆盖范围完全错误:你没有针对核心参数设置合理的搜索区间,例如学习率常规搜索范围是0.010.1、树深312、正则化参数0~10区间,你固定的参数偏离合理区间,自然得不到好的效果。
- 数据层面问题:特征工程处理不到位,例如缺失值、异常值未处理,特征和目标变量的相关性极低,或者样本量不足以支撑模型拟合,都会导致模型上限很低。
- 指标判断误区:你输出的
best_score_是交叉验证的RMSE得分,需要结合目标变量的取值范围判断得分高低,如果目标变量本身的取值范围是1以上,0.05的RMSE属于非常优秀的结果,如果目标变量本身均值只有0.1左右,0.05的RMSE才属于偏高的情况,建议先计算相对误差(如MAPE)再判断模型效果。 - 拟合状态问题:你可以对比训练集、交叉验证集、测试集的得分差:如果训练集得分远高于验证/测试集得分,属于过拟合,需要降低模型复杂度;如果三者得分都很低,属于欠拟合,需要降低正则强度、提升模型拟合能力。
内容的提问来源于stack exchange,提问作者dado
相关产品推荐
相关产品推荐

