机器学习中数据集的划分

机器学习中数据集的划分

  • 1.如何划分数据集
  • 2.数据集的划分方法
    • 1.留出法(Hold-out)
    • 2.交叉验证法(Cross Validation)
    • 3.自助法(BootStrapping)
  • 3.划分方法的选择
  • 4.模型的拟合问题

1.如何划分数据集

在机器学习算法中,我们通常将原始数据集划分为三个部分:

  1. 训练集:训练模型
  2. 验证集:选择模型
  3. 测试集:评估模型

我们首先将数据集划分为训练集和验证集,由于模型的构建过程中也需要检验模型的配置,以及训练程度是过拟合还是欠拟合,所以会将训练数据再划分为两个部分,一部分是用于训练的训练集,另一部分是进行检验的验证集。

训练集用于训练得到神经网络模型,然后用验证集验证模型的有效性,挑选获得最佳效果的模型。验证集可以重复使用,主要是用来辅助我们构建模型的。最后,当模型“通过”验证集之后,我们再使用测试集测试模型的最终效果,评估模型的准确率,以及误差等。

注意:我们不能用测试集数据进行训练,之所以不用测试集,是因为随着训练的进行,网络会慢慢过拟合测试集,导致最后的测试集没有参考意义。

总结一下:

  1. 训练集用来计算梯度更新权重,即训练模型;
  2. 验证集用来做模型选择,而且可以避免过拟合。在训练过程中,我们通常用它来确定一些超参数。(例:根据验证集的准确率来确定early stoping的epoch大小,根据验证集确定学习率等等)
  3. 测试集则给出一个准确率以判断网络性能的好坏。

下面给出一个图片加强理解

机器学习中数据集的划分_第1张图片

2.数据集的划分方法

数据集的划分一般有三种方法:

1.留出法(Hold-out)

为了保证数据分布的一致性,通常我们采用分层采样的方式来对数据进行采样。

1.如果数据比较少:

只划分训练集和测试集则为:70%验证集,30%测试集;

划分训练集、验证集和测试集则为:60%训练集,20%验证集,20%测试集。

2.数据比较多:

只需要取一小部分当做测试集和验证集,其他的都当做训练集。

然后使用训练集来生成模型,验证集来选择模型,最后用测试集来测试模型的正确率和误差,以验证模型的有效性。

这种方法常见于决策树、朴素贝叶斯分类器、线性回归和逻辑回归等任务中。

缺点:只进行了一次划分,数据结果具有偶然。

2.交叉验证法(Cross Validation)

机器学习中数据集的划分_第2张图片

我们经常使用交叉验证方法来评估模型。有两种形式:K折交叉验证和留一法。

K折交叉验证的基本思想是:把原始训练数据集分割成K个不重合的子数据集,然后做K次模型训练和验证。每一次,使用一个子数据集验证模型,并使用其它K−1个子数据集来训练模型。最后,对这K次训练误差和验证误差分别求平均。

例如如图所示的10折交叉验证,将数据分成互不相交的10个子集,标记为D1,D2,D10,第一次将D10作为测试集,其余的作为训练集,进行实验,得到测试结果1,第二次将D9作为测试集,其余的作为训练集,进行实验,得到测试结果2,重复10次,得到10个测试结果,将这10次测试结果进行平均做为最终结果进行返回。

具体步骤:

交叉验证是将一个整体数据平均划分为K份

先取第一份子集数据作为测试集,剩下的K-1份子集数据作为训练集

再取第二份子集数据作为测试集,剩下的K-1份子集数据作为训练集

不断往复,重复K次

然后将得到的结果进行加权平均,作为最终的评估结果

优点:降低由一次随机划分带来的偶然性,提高其泛化能力,提高对数据的使用效率。

缺点:可能存在一种情况:数据集有5类,抽取出来的也正好是按照类别划分的5类。这样的结果就会导致,模型训练时没有学习到测试集中数据的特点,从而导致模型得分很低,甚至为0,

特例:

k k k=1的时候,我们称之为留一法

我们令样本划分次数K等于数据集合D的样本数量n,即把样本集合D划分为n份子集。

可以发现,留一法并不需要多次划分,其划分方式只有一种。

优点:因为留一法中的 S 与 D 很接近,所以 S 所训练出来的模型应该与 D 所训练出来的模型很接近,因此通常留一法得到的结果是比较准确的

缺点:当数据集很大的时候,留一法的运算成本将会非常的高以至于无法忍受。

3.自助法(BootStrapping)

留出法与交叉验证法都是使用分层采样的方式进行数据采样与划分,而自助法则是使用有放回重复采样的方式进行数据采样。

我们每次从数据集D中取一个样本作为训练集中的元素,然后把该样本放回,重复该行为 m 次,这样我们就可以得到大小为m的训练集,在这里面有的样本重复出现,有的样本则没有出现过,我们把那些没有出现过的样本作为测试集,剩余的作为训练集。

对任意一个样本,在m次采样中没有被取到的概率为 ( 1 − 1 m ) m (1-\frac{1}{m})^{m} (1m1)m,取极限为 1 e ≈ 0.368 \frac{1}{e} \approx 0.368 e10.368

优点:自助法在数据集较小、难以有效划分训练集和测试集时很有用。此外,自助法能从初始数据集中产生多个不同的训练集,这对集成学习等方法有很大的好处。

缺点:自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差。因此在初始数据量足够时,留出法和交叉验证法更加常用一些。

3.划分方法的选择

1.对于数据量充足的时候,通常采用留出法或者k折交叉验证法来进行训练/测试集的划分;

2.对于数据集小且难以有效划分训练/测试集时使用自助法;

3.对于数据集小且可有效划分的时候最好使用留一法来进行划分,因为这种方法最为准确 。

4.模型的拟合问题

1.如果训练集和测试集(验证集)上,正确率都很低,那么,说明模型处于欠拟合状态,需要调整超参数。

2.如果训练集上正确率很低,测试集(或验证集)上正确率较高,说明数据集有问题。

3.如果训练集上正确率很高,测试集(以及验证集)上正确率较低,说明模型过拟合,需要进行正则化或者Dropout来抑制过拟合。

4.如果训练集和验证集上正确率都很高,但是在测试集上正确率较低,那么说明模型的泛化能力不足,调整方法可参考之前的过拟合情况。

5.如果训练集和测试集(包括验证集)上模型的正确率都很高,那么,你成功了!

你可能感兴趣的:(机器学习,机器学习)