机器学习中的训练集和测试集

2025 年 6 月 23 日 | 阅读 8 分钟

机器学习是当今世界上蓬勃发展的技术之一,它使计算机/机器能够将大量数据转化为预测。然而,这些预测在很大程度上取决于数据的质量,如果我们没有为模型使用正确的数据,那么它将无法产生预期的结果。在机器学习项目中,我们通常将原始数据集分为训练数据和测试数据。我们在原始数据集的一个子集,即训练数据集上训练我们的模型,然后评估它是否能够很好地泛化到新的或未见过的数据集或测试集。因此,训练集和测试集是机器学习的两个关键概念,其中训练集用于拟合模型,测试集用于评估模型

在本主题中,我们将讨论训练集和测试集以及它们之间的区别。那么,让我们从机器学习中训练集和测试集的介绍开始。

什么是训练集?

训练数据是原始数据集中最大(尺寸)的子集,用于训练或拟合机器学习模型。首先,训练数据被输入到机器学习算法中,这些算法从中学习如何为给定的任务进行预测。

例如,为了训练一个情感分析模型,训练数据可以如下所示:

输入输出(标签)
新的UI很棒积极
更新非常慢消极

训练数据的变化取决于我们使用的是监督学习还是无监督学习算法。

对于无监督学习,训练数据包含未标记的数据点,即输入未标记相应的输出。模型需要从给定的训练数据集中找到模式才能进行预测。

另一方面,对于监督学习,训练数据包含标签,以便训练模型并进行预测。

我们提供给模型的训练数据类型对模型的准确性和预测能力负有很大责任。这意味着训练数据的质量越好,模型的性能就越好。训练数据约占机器学习项目总数据的60%或更多。

什么是测试集?

一旦我们使用训练数据集训练了模型,就可以用测试数据集来测试模型了。该数据集评估模型的性能,并确保模型能够很好地泛化到新的或未见过的数据集。测试数据集是原始数据的另一个子集,它独立于训练数据集。然而,它具有一些相似类型的特征和类概率分布,并在模型训练完成后将其用作模型评估的基准。测试数据是一个组织良好的数据集,包含针对给定问题模型在实际使用中将遇到的每种情况的数据。通常,测试数据集约占机器学习项目总原始数据的20-25%。

在这个阶段,我们还可以检查并比较测试准确率与训练准确率,这意味着我们的模型在测试数据集上的准确率与在训练数据集上的准确率相比如何。如果模型在训练数据上的准确率大于在测试数据上的准确率,那么该模型就称为过拟合。

测试数据应

  • 代表原始数据集的一部分。
  • 它应该足够大,能够提供有意义的预测。

需要将数据集拆分为训练集和测试集

将数据集拆分为训练集和测试集是数据预处理的重要组成部分,因为这样做可以提高模型的性能,从而提高预测能力。

我们可以这样理解:如果我们用训练集训练模型,然后用一个完全不同的测试数据集测试它,那么我们的模型将无法理解特征之间的相关性。

Train and Test datasets in Machine Learning

因此,如果我们使用两个不同的数据集来训练和测试模型,那么模型的性能将会下降。因此,将数据集拆分为两部分(即训练集和测试集)很重要。

这样,我们就可以轻松地评估模型的性能。例如,如果它在训练数据上表现良好,但在测试数据集上表现不佳,那么就可以估计模型可能发生了过拟合。

对于数据集的拆分,我们可以使用scikit-learntrain_test_split函数。

可以使用上面的代码的第一行来拆分数据集

说明

在上面代码的第一行,我们从sklearn库导入了train_test_split函数。

在第二行,我们使用了四个变量,它们是

  • x_train:用于表示训练数据的特征
  • x_test:用于表示测试数据的特征
  • y_train:用于表示训练数据的因变量
  • y_test:用于表示测试数据的自变量
  • 在train_test_split()函数中,我们传递了四个参数。前两个是数据数组,test_size用于指定测试集的大小。test_size可以是.5、.3或.2,表示训练集和测试集的划分比例。
  • 最后一个参数random_state,用于为随机生成器设置一个种子,以便您始终获得相同的结果,最常用的值是42。

过拟合和欠拟合问题

过拟合和欠拟合是机器学习模型中最常见的问题。

当一个模型在训练数据集上表现得相当好,但在新数据集或未见过的数据集上泛化能力不强时,就可以认为该模型是过拟合。过拟合的问题发生在模型试图覆盖所有数据点,从而开始缓存数据中的噪声。因此,它无法很好地泛化到新数据集。由于这些问题,模型的准确性和效率会下降。通常,复杂模型过拟合的几率较高。我们可以通过多种方式避免模型过拟合,例如使用交叉验证方法、提前停止训练或通过正则化等。

另一方面,当模型无法捕捉数据的潜在趋势时,就称为欠拟合。这意味着模型即使在训练数据集上也表现不佳。在大多数情况下,当模型与我们试图解决的问题不完全匹配时,就会出现欠拟合问题。为了避免欠拟合问题,我们可以增加模型的训练时间或增加数据集中的特征数量。

训练数据与测试数据

  • 训练数据和测试数据之间的主要区别在于,训练数据是用于训练机器学习模型的原始数据子集,而测试数据用于检查模型的准确性。
  • 训练数据集通常比测试数据集大。训练集和测试集的典型划分比例为80:20、70:30或90:10
  • 模型对训练数据很熟悉,因为它用于训练模型,而测试数据对模型来说就像未见过/新数据。

训练和测试数据如何在机器学习中工作?

机器学习算法使机器能够基于过去的观察或经验进行预测和解决问题。算法可以从输入给它的训练数据中获得这些经验或观察。此外,机器学习算法的一大优点是它们可以自行学习并随着时间的推移而改进,因为它们是用相关的训练数据进行训练的。

一旦模型使用相关的训练数据进行了充分的训练,就可以用测试数据进行测试。我们可以通过以下三个步骤来理解整个训练和测试过程:

  1. 输入:首先,我们需要通过将训练输入数据输入模型来训练模型。
  2. 定义:现在,训练数据与相应的输出(在监督学习中)进行标记,模型将训练数据转换为文本向量或一定数量的数据特征。
  3. 测试:在最后一步,我们通过将测试数据/未见过的数据集输入模型来测试模型。这一步确保模型训练有效并且能够很好地泛化。

以上过程通过下图进行说明

Train and Test datasets in Machine Learning

高质量训练数据的特征

由于机器学习模型的预测能力在很大程度上取决于它的训练方式,因此用高质量的数据来训练模型非常重要。此外,机器学习遵循“垃圾进,垃圾出”的原则。这意味着我们无论输入什么类型的数据到模型中,它都会做出相应的预测。对于高质量的训练数据,应考虑以下几点:

1. 相关性

训练数据的首要质量应该是与您要解决的问题相关。这意味着您使用的任何数据都应与当前问题相关。例如,如果您正在构建一个模型来分析社交媒体数据,那么数据应该来自不同的社交网站,如Twitter、Facebook、Instagram等。

2. 统一性

数据集中特征之间应始终存在统一性。这意味着特定问题的所有数据都应从同一来源获取,并具有相同的属性。

3. 一致性:在数据集中,相同的属性必须始终对应相同的标签,以确保数据集中的一致性。

4. 全面性:训练数据必须足够大,能够代表您需要更好地训练模型的充分特征。通过全面数据集,模型将能够学习所有边缘情况。

结论

良好的训练数据是机器学习的基石。理解高质量训练数据在机器学习中的重要性至关重要,因为它确保您拥有正确质量和数量的数据来训练模型。

训练数据和测试数据之间的主要区别在于,训练数据是用于训练机器学习模型的原始数据子集,而测试数据用于检查模型的准确性。