[深度概念]·K-Fold 交叉验证 (Cross-Validation)的理解与应用 (2)

3、 由于我们每次留下一个

clip_image028[2]

(j从1到k),因此会得到k个经验错误,那么对于一个

clip_image010[5]

,它的经验错误是这k个经验错误的平均。

4、 选出平均经验错误率最小的

clip_image010[6]

,然后使用全部的S再做一次训练,得到最后的

clip_image012[4]

 

核心内容:

通过上述1,2,3步进行模型性能的测试,取平均值作为某个模型的性能指标

根据性能指标来挑选出最优模型,再进行上述第4步重新进行训练,获得最终模型

疑问解答:

1.为什么不直接拆分训练集与数据集,来验证模型性能,反而采用多次划分的形式,岂不是太麻烦了?

我们为了防止在训练过程中,出现过拟合的问题,通行的做法通常是将数据分为训练集和测试集。测试集是与训练独立的数据,完全不参与训练,用于最终模型的评估。这样的直接划分会导致一个问题就是测试集不会参与训练,这样在小的数据集上会浪费掉这部分数据,无法使模型达到最优(数据决定了程性能上限,模型与算法会逼近这个上限)。但是我们又不能划分测试集,因为需要验证网络泛化性能。采用K-Fold 多次划分的形式就可以利用全部数据集。最后采用平均的方法合理表示模型性能。

2.为什么还要进行所有数据集重新训练,是否太浪费时间?

我们通过K-Fold 多次划分的形式进行训练是为了获取某个模型的性能指标,单一K-Fold训练的模型无法表示总体性能,但是我们可以通过K-Fold训练的训练记录下来较为优异的超参数,然后再以最优模型最优参数进行重新训练,将会取得更优结果。

3.何时使用K-Fold

我的看法,数据总量较小时,其他方法无法继续提升性能,可以尝试K-Fold。其他情况就不太建议了,例如数据量很大,就没必要更多训练数据,同时训练成本也要扩大K倍(主要指的训练时间)。

4.参考

1.K-Fold 交叉验证 (Cross-Validation)

2.规则化和模型选择(Regularization and model selection)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpswyp.html