通俗易懂彻底理解10-fold cross-validation method(十倍交叉验证法)

十倍交叉验证法:

将所有数据分为十份,然后将每一份作为验证集,其他作为训练集来进行训练和验证。在这一过程中,保持超参数一致,然后取10个模型的平均训练loss和平均验证loss,来衡量超参数的好坏。最后取得一个满意的超参数以后,使用全部数据作为训练集,用该超参数训练获得1个模型。

使用交叉验证的目的是:

为了降低由于训练集和验证集单次划分而导致的偶然性,充分利用现有的数据集来进行多次划分从而避免因为特殊划分而选择了不具有泛化能力的偶然超参数和模型。通过交叉验证来降低偶然性,提高泛化能力。

对数据集划分对训练模型和超参数设置的理解:

假设在极端情况下,训练集中有20个样本,其中有2个样本与其他样本差别很大,但它们2个本身是相同的,剩下的18个是可以互推的。如果这两个样本其中一个被划分到训练集,另一个被划分到验证集,则在这种情况下,将超参数如网络结构设置的复杂一些来尽可能的拟合训练集,训练出来的模型自然地可以很好地泛化到验证集。但是如果这两个样本都被划分到验证集中,训练集中对这两个样本的信息包含有限,完全按照训练集进行训练将导致过拟合,这是因为完全的拟合与信息的不完全性之间的不匹配造成了事实上的过度推断。必须将超参数设置的小一点来保留一定的弹性,即不能因为训练集里的人都是极端的变态,所以假设测试集中也是一模一样极端的变态,在这一划分下,由于验证集确实跟训练集不太一样,所以将条件放松,以一个稍微正常一点不那么变态的基本的人的标准来对验证集进行推断反而能取得更加具有泛化能力的结论。正是由于数据集的划分对超参数和模型的影响,所以才需要使用交叉验证来寻求折中。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐