跳到内容

什么是交叉验证?比较机器学习模型

2021年7月21日

交叉验证

交叉验证是数据科学家的宝贵工具。

这对建造更精确的建筑物是有用的机器学习模型和评估它们在独立测试数据集上的工作情况。

交叉验证易于理解和实现,使其成为比较不同模型的预测能力(或技能)并选择最佳的方法。当可用数据数量有限时,它是一种很好的方法,可以检查预测模型在实践中是如何工作的。

交叉验证用于保护模型不受影响过度拟合,特别是在可用数据量有限的情况下。它也被称为旋转估计或样本外测试,主要用于模型的目标是预测的设置。

你知道吗?如果一个模型对训练数据建模得太好,以致于它对新数据的性能产生负面影响,则该模型被认为是“过拟合”的。

这种重新采样过程也被用来比较不同的机器学习模型,并确定它们在解决特定问题时的工作效果。换句话说,交叉验证是一种用来评估机器学习模型技能的方法。

简单地说,在交叉验证的过程中,原始数据样本被随机分成几个子集。机器学习模型训练所有子集,除了一个。训练完成后,通过对剩余子集进行预测来检验模型。

在许多情况下,使用不同的子集进行多轮交叉验证,并对结果进行平均,以确定哪个模型是好的预测器。

为什么交叉验证很重要?

在可用数据量有限的情况下,交叉验证至关重要。

假设你需要预测自行车轮胎被扎破的可能性。为此,你已经收集了现有轮胎的数据:轮胎的年龄,行驶的里程,车手的体重,以及之前是否被扎破。

要创建一个预测模型,您将使用这个(历史)数据。你需要对这些数据做两件事火车算法及其应用测试该模型。

你知道吗?在机器学习中,算法和模型是不同的。模型是机器学习算法学到的东西。

由于您只有有限数量的可用数据,使用所有的数据来训练算法是幼稚的。如果您这样做了,您就没有任何数据可以用来测试或评估模型了。

重用训练集作为测试集并不是一个好主意,因为我们需要评估模型在没有训练过的数据上的准确性。这是因为培训背后的主要目标是让模型能够处理真实世界的数据。你的训练数据集不可能包含模型可能遇到的所有数据点。

一个更好的主意是使用前75%(三个块)的数据训练数据集最后的25%(一块)作为测试数据集.这将允许您比较不同算法对测试数据的分类情况。

但是,当然,如何知道使用前75%的数据作为训练集,其余25%作为测试集是最好的方法呢?

相反,您可以使用前25%的数据进行测试;或者,您可以使用第三个数据块作为测试数据集,其余数据块作为训练数据集。

提示:使用机器学习软件使任务自动化并做出准确的预测。

因此,一种类型的交叉验证被称为k-折交叉确认使用数据集的所有(4)部分作为测试数据,一次一个,然后总结结果。

例如,交叉验证将使用前三个数据块来训练算法,并使用最后一个数据块来测试模型。然后记录模型在测试数据中的表现。

记录性能或精度后,将使用第一、第二和第四个数据块进行训练,使用第三个数据块进行测试。该过程将继续,直到所有块都用作测试数据一次。计算所有结果的平均值以评估模型的性能。

在上面的例子中,数据被分为四个块。因此,就调用了这种交叉验证4倍交叉验证.如果把它分成10块,它就是10倍交叉验证

简而言之,交叉验证对于模型选择是有用的,并且可以毫不费力地检查一个模型对新数据的概括程度。

换句话说,它有助于确定模型的预测误差。它还用于比较不同机器学习方法的性能或准确性,如支持向量机(SVM),再(资讯),线性回归或逻辑回归。

以下是数据科学家喜欢交叉验证的更多原因:

  • 让他们在不牺牲任何子集的情况下使用所有数据(对于拒绝方法无效)
  • 揭示了数据和算法的一致性
  • 有助于避免过度安装和不足安装

交叉验证还用于调整hyperparameters通过一种叫做随机网格搜索交叉验证

类型的交叉验证

交叉验证方法可大致分为两类:详尽的不完方法。

顾名思义,详尽的交叉验证方法致力于测试所有可能的方法,将原始数据样本划分为训练集和测试集。另一方面,非详尽方法并不计算将原始数据划分到训练和评估集的所有方法。

下面是五种常见的交叉验证类型。

1.坚持的方法

这个坚持的方法是一种基本的交叉验证方法,该方法将原始数据集分为训练数据和测试数据两部分。这是一种非详尽的方法,正如预期的那样,模型在训练数据集上训练,并在测试数据集上评估。

在大多数情况下,训练数据集的大小是测试数据集的两倍,这意味着原始数据集以80:20或70:30的比例分割。此外,在将数据划分为训练集和验证集之前,数据会被随机打乱。

然而,这种交叉验证方法有一些缺点。由于模型是在不同的数据点组合上训练的,因此每次训练后,它都会显示不同的结果。此外,我们永远无法完全确定所选的训练数据集是否代表整个数据集。

如果原始数据样本不是太大,那么也有可能测试数据包含一些关键信息,而模型将无法识别这些信息,因为训练数据中没有包含这些信息。

然而,如果您急于训练和测试一个模型,并且有一个大数据集,那么顽固交叉验证技术是理想的。

2.K-fold交叉验证

这个k-折交叉确认方法是抵抗方法的改进版本。因为它不依赖于我们如何选择训练和测试数据集,所以它给模型的评分带来了更多的一致性。

它是一种非详尽的交叉验证方法,顾名思义,数据集被分成k次的分割,而holdout方法执行了k次。

例如,如果k的值等于2,就会有两个大小相等的子集。在第一次迭代中,模型在一个子样本上训练,在另一个子样本上验证。在第二次迭代中,模型在前一次迭代中用于验证的子集上训练,并在另一个子集上测试。这种方法被称为2倍交叉验证

类似地,如果k的值等于5,这种方法叫做5倍交叉验证方法,包括五个子集和五个迭代。k的值也是任意的。一般情况下,k的值为10。如果您对选择值感到困惑,建议您使用同样的方法。

k折交叉验证过程首先将原始数据集随机分割成k个折叠或子集。在每次迭代中,模型在整个数据集的k-1子集上训练。然后在第k子集上对模型进行测试,以检验其性能。

重复此过程,直到所有k折叠都用作评估集。每次迭代的结果都是平均的,称为交叉验证精度.交叉验证精度被用作比较不同模型效率的性能指标。

k折交叉验证技术通常产生较少的偏差模型,因为原始数据集的每个数据点都会出现在训练集和测试集。如果数据量有限,这种方法是最优的。

但是,正如预期的那样,这个过程可能很耗时,因为算法必须从头开始重新运行k次。这也意味着它所需的计算量是保持法的k-1倍。

3.分层k-fold交叉验证

由于我们在k-fold交叉验证中随机洗牌数据并将其拆分为多个折叠,因此有可能最终得到不平衡的子集。这可能会导致训练出现偏差,从而导致模型不准确。

例如,考虑一个二进制分类问题,其中两种类型的类标签各包含50%的原始数据。这意味着这两个类在原始样本中以相同的比例存在。为了简单起见,我们将这两个类命名为A和B。

在对数据进行洗牌并将其拆分为折叠时,很有可能最终会出现折叠,其中大多数数据点来自a类,只有少数来自B类。这样的子集被视为不平衡的子集,可能会导致创建不准确的分类器。

为了避免这种情况,折叠使用一个称为分层.在分层中,数据被重新排列,以确保每个子集都是整个数据集的良好代表。

在上面的二元分类示例中,这意味着最好分割原始样本,使折叠中的一半数据点来自a类,其余来自B类。

4.Leave-p-out交叉验证

Leave-p-out交叉验证(LpOCV)是一种穷举法,从n所代表的数据样本总数中抽取p个数据点。

模型在n-p个数据点上训练,然后在p个数据点上测试。对来自原始样本的所有可能的p组合重复同样的过程。最后,对每次迭代的结果进行平均,以获得交叉验证的精度。

5.分析交叉验证

遗漏交叉验证(LOOCV)方法是LpOCV的简化版本。在这种交叉验证技术中,p的值被设置为1。因此,这种方法不太详尽。然而,由于模型需要拟合n次,因此该方法的执行成本高且耗时长。

还有其他的交叉验证技术,包括重复随机子抽样验证、嵌套交叉验证、时间序列交叉验证。

交叉验证的应用

交叉验证的主要应用是评估机器学习模型的性能。这有助于比较机器学习方法,并确定哪种方法最适合解决特定问题。

例如,假设你正在考虑k近邻(KNN)或主成分分析(PCA)进行光学字符识别。在本例中,可以使用交叉验证,根据每个方法分类错误的字符数来比较这两个方法。

交叉验证也可用于特征选择选择对预测输出贡献最大的要素。

交叉验证的局限性

交叉验证的主要挑战是需要过多的计算资源,特别是在k倍CV这样的方法中。由于该算法必须从头开始重新运行k次,它需要k倍的计算来计算。

另一个限制是围绕着看不见的数据。在交叉验证中,测试数据集是用来评估模型性能的未见数据集。理论上,这是在实际应用程序中检查模型如何工作的好方法。

但是,在实践中永远不可能有一组全面的看不见的数据,也永远不可能预测模型将来可能遇到的数据类型。

假设建立了一个模型来预测个人感染某种特定传染病的风险。如果模型是根据一项只涉及特定人群的研究(例如,25岁左右的女性)的数据进行训练的,当它应用于一般人群时,与交叉验证的准确性相比,预测性能可能会有很大的不同。

此外,交叉验证只有在原始样本集中控制人为偏差的情况下才会产生有意义的结果。

交叉验证来拯救

交叉验证模型构建是创建具有更高精度或性能的机器学习应用程序的一种优秀方法。交叉验证技术,如k-fold交叉验证,可以在不牺牲测试分割的情况下评估模型的性能。

它们还消除了不平衡的数据分割所导致的问题;简而言之,它们可以让数据科学家减少对运气的依赖,更多地依靠迭代。

机器学习的一个子集试图模仿人类大脑的功能。它被称为深度学习如果可能的话,人工通用智能将需要其决策能力。

机器学习
但是机器是如何学习的呢?

了解更多关于机器学习的知识,这是一门让计算机无需明确编程就能正常工作的科学。

机器学习
但是机器是如何学习的呢?

了解更多关于机器学习的知识,这是一门让计算机无需明确编程就能正常工作的科学。

不要错过任何一个邮件。

订阅,让您的手指紧握科技脉搏。

提交此表格即表示您同意接收G2的营销沟通。