RandomizedSearchCV最优估计器拟合及评估集使用规则
问题解答
最优估计器重拟合是否使用全部训练集
答案是肯定的。
RandomizedSearchCV的refit参数默认值为True,你看到的最后多出来的1次拟合就是这个refit流程:所有超参数组合跑完5折交叉验证、算出每组参数的平均CV得分后,程序会选出得分最高的最优超参组合,用这组参数在你传入clf.fit()的**完整训练集(即全部X_train、y_train)**上重新训练最终模型,训练好的成品模型存在clf.best_estimator_属性里,之后调用clf.predict()、clf.predict_proba()做预测时,用的就是这个重训后的模型。
因为你初始化LGBMClassifier时开了early_stopping_round=100,这次重训过程中早停规则同样会生效。
传入的评估集在RSCV流程中的使用环节
你在fit时传入的(X_test,y_test)评估集,会在两个环节被用到:
- 每折交叉验证的训练阶段:RSCV每采样出一组超参数,就要跑5折CV。每折训练子模型的时候,你传的这个固定评估集会直接透传给LGBM的原生fit方法,作为早停的验证集——每折训练时模型每迭代一轮,就会在这个评估集上算一次AUC,连续100轮AUC没涨就提前终止当前折的训练,不会跑完默认的100轮迭代。
这里要提一句:这个阶段早停用的是你一开始拆分出来的固定X_test,不是5折拆分出来的内部验证集,属于典型的测试集数据泄露:超参搜索过程中模型反复接触测试集信息,最后在X_test上算出来的指标会比真实泛化效果偏高,结果不可靠。如果要避免泄露,应该把早停用的验证集从训练集里拆分出来,不要用最终的测试集做早停。
- 最优模型的refit重训阶段:最后那次全量训练集的拟合,同样会把这个评估集传给LGBM做早停验证,用来确定最终模型的最佳迭代轮数。
内容的提问来源于stack exchange,提问作者user2614233
相关产品推荐
相关产品推荐

