上一篇推文《》对 中常用的两种数据使用方案做了介绍。
目前来看,第一种一分为二加训练集交叉验证做超参数调优的方式使用最为广泛,而其最被人诟病的地方在于,当数据量不大的时候,一分为二受到随机性的影响太大,以至于出现了为了保证结果可重复性而使用的随机种子的变动也会造成结果的大幅波动乃至最终结论的变化的情形。有鉴于此,第二种嵌套式重采样方式的应用日益常见,下面简述其过程:
以外层3折内层5折的嵌套式交叉验证为例,整个数据先平均拆分为完全互斥的ABC三块,然后将AB、AC、BC两两合并分别用以训练模型,相应剩下的C、B、A块分别用以测试对应模型。以AB合并数据为训练集为例,此时因为模型有超参数需要调优,所以将AB两块合并数据平均拆分为完全互斥的共五块数据,进而将每一组备选超参数都执行5次训练测试,这其中五块数据的每一块都会单独作为一次测试使用,将每一组备选超参数的5次测试集结果平均之后比较得到最优的一组超参数,再返回到AB合并数据上采用该组最优超参数训练模型,并用C块数据加以评估。最后将外层3折的3次测试结果平均作为模型评估指标。
需要留意的是,最后3个测试结果是3个不同的模型(训练集不同、所使用的超参数也可能不同)在3个不同的测试集上的评估结果。这也带来另一个问题:后续需要模型做预测跟解释性输出时怎么办?是否可以采用外层3个模型中的某一个?
首先,不建议采用外层3个模型中的任一个,原因就是3个模型也是一分为二的结果,跟第一种方案中得到的模型无异;其次,为了后续预测和解释性输出,建议回到整个数据集训练模型,超参数调优依然使用交叉验证。
最后说下标题所指的问题,模型评估和超参数调优都使用交叉验证是否必须嵌套?按我的理解,非必须。
之前说将训练集上模型超参数调优的结果用于模型间比较有数据使用上的瑕疵,实际上是两步走的思路,第一步先用交叉验证的方式确定各个模型的最优超参数,第二步用各个模型在测试集上的性能指标比较出最优模型。
但是实际上不同超参数或称不同配置的决策树的区别,和决策树与随机森林的区别,实际上是一样的。也就是说,不同超参数的决策树和不同超参数的随机森林可以放到一个层面比较,所以说嵌套式重采样不是必须的,尤其是数据量不多的情况下。
当然,个人观点,仅供参考。