机器学习7-数据集划分

 前言

机器学习中可以将数据集分为两个子集,即训练集、测试集。更好的方式是将数据集分为三个子集,即训练集、验证集、测试集。

 

一、划分为训练集、测试集

数据集划分为两个子集的概念:

训练集—用于训练模型;

测试集—用于测试训练后模型

比如,将数据集划分为一个训练集、一个测试集:

使用此方案时,需要确保测试集满足以下两个条件:

  • 规模足够大,可产生具有统计意义的结果。
  • 能代表整个数据集。即,挑选的测试集的特征应该与训练集的特征相同。

当测试集满足上述两个条件,通常能得到一个能够较好泛化到新数据的模型。

 

使用训练集、测试集训练模型的过程

“调整模型”是指调整模型相关的参数、超参数、模型结构,比如:学习率、添加或移除特征,或从小设计全新模型等等。

 

 

二、划分为训练集、验证集、测试集

将数据集划分为三个子集,如下图所示,可以大幅降低过拟合的发送几率:

 

使用训练集、验证集、测试集训练模型的过程

首先选择早验证集上获得最佳效果的模型。然后使用测试集再次检查该模型。

这个方法训练出来的模型通过会更好,是因为暴露给测试集的信息更少。

划分为训练集、验证集、测试集方法中,通过测试集调整模型效果,从中不断学习测试集的规律;从而使得测试集和新数据有区别,模型对测试集有些认识了,对新数据还是完全不认识的情况下预测的

 

注意

不断适应测试集和验证集会使其逐渐失去效果。适应相同数据来决定超参数设置或其它模型改进的次数越多,对于这些结果能够真正泛化到未见过的新数据的效果就越低。

建议:收集更多数据来“刷新”测试集和验证集。重新开始是一种很好的重置方式。

 

关键词

训练集(training set),数据集的子集,用于训练模型。与验证集和测试集相对。

验证集(validation set),数据集的一个子集,从训练集分离而来,用于调整超参数。与训练集和测试集相对。

测试集(test set),数据集的子集,用于在模型经过验证集的初步验证后,进行测试模型。与训练集和验证集相对。

过拟合(overfitting),创建的模型与训练数据过于匹配,以至于模型无法根据新数据做出正确的预测。

 

参考:https://developers.google.cn/machine-learning/crash-course/training-and-test-sets/splitting-data

参考:https://developers.google.cn/machine-learning/crash-course/validation/another-partition

(完)