交叉验证
一些概念
模型产生包括模型训练和模型验证。
模型验证&模型测试:模型验证时模型产生阶段的步骤。测试则是发生在原型产生阶段之后。
什么是交叉验证
首先交叉验证区别于参数调优。交叉验证是产生训练数据集和验证数据集的方法。
K折交叉验证,是交叉验证最常用的一种方法:
1)先将数据集划分成k个数据集。
2)对于每一种超参数, 依次使用其中的k-1个数据集来训练数据,并用保留的验证集来验证模型。
3)模型的总体表现取所有k次验证的平均值。
使用sklearn库进行交叉验证
为什么使用交叉验证
1、数据集太小,不能保留足够的数据进行验证
2、验证集可以看做在训练好的众多模型中人工选择一个在验证集上拟合最好的模型;因此,交叉验证更好的评估模型的预测性能、泛化性能。
3、可以从有限的数据中获取尽可能多的有效信息。
问题总结
1、为什么还要进行所有数据集重新训练,是否太浪费时间?
通过K-Fold 多次划分的形式进行训练是为了获取某个模型的性能指标,单一K-Fold训练的模型无法表示总体性能,但是我们可以通过K-Fold训练的训练记录下来较为优异的超参数,然后再以最优模型最优参数进行重新训练,将会取得更优结果。
2、何时使用K-Fold
我的看法,数据总量较小时,其他方法无法继续提升性能,可以尝试K-Fold。
我的看法,数据总量较小时,其他方法无法继续提升性能,可以尝试K-Fold。
其他情况就不太建议了,例如数据量很大,就没必要更多训练数据,同时训练成本也要扩大K倍(主要指的训练时间)。