📅  最后修改于: 2020-09-29 03:24:49             🧑  作者: Mango
交叉验证是一种通过在输入数据的子集上训练模型效率并对输入数据的先前未见子集进行测试来验证模型效率的技术。我们也可以说这是一种检查统计模型如何概括为独立数据集的技术。
在机器学习中,始终需要测试模型的Solidity。这意味着仅基于训练数据集;我们无法将模型拟合到训练数据集上。为此,我们保留数据集的特定样本,该样本不属于训练数据集。之后,我们在部署之前在该样本上测试我们的模型,并且此完整过程要经过交叉验证。这与一般的火车测试分裂有所不同。
因此,交叉验证的基本步骤是:
有一些用于交叉验证的常用方法。这些方法如下:
我们使用验证集方法将输入数据集划分为训练集和测试或验证集。两个子集都被赋予了数据集的50%。
但是它的一大缺点是我们仅使用50%的数据集来训练我们的模型,因此该模型可能会错过捕获数据集的重要信息的机会。它还倾向于给出欠拟合的模型。
在这种方法中,训练数据不包含p个数据集。这意味着,如果原始输入数据集中总共有n个数据点,则将np个数据点用作训练数据集,并将p个数据点用作验证集。对所有样本重复此完整过程,并计算平均误差以了解模型的有效性。
这种技术有一个缺点。也就是说,对于大p可能在计算上很困难。
该方法类似于leave-p-out交叉验证,但是要代替p,我们需要从训练中取出1个数据集。这意味着,在这种方法中,对于每个学习集,仅保留一个数据点,而其余数据集用于训练模型。对每个数据点重复此过程。因此,对于n个样本,我们得到n个不同的训练集和n个测试集。它具有以下功能:
K折交叉验证方法将输入数据集分为大小相等的K组样本。这些样品称为褶皱。对于每个学习集,预测函数使用k-1倍,其余部分用于测试集。这种方法是一种非常流行的CV方法,因为它易于理解,并且与其他方法相比,输出的偏差较小。
k折交叉验证的步骤是:
让我们以5倍交叉验证为例。因此,数据集分为5折。在第一个迭代中,保留第一折以测试模型,其余部分用于训练模型。在第二次迭代中,第二折用于测试模型,其余部分用于训练模型。此过程将继续进行,直到每个折痕都不用于测试折痕为止。
考虑下图:
该技术类似于k倍交叉验证,但有一些小的变化。这种方法适用于分层概念,它是重新排列数据以确保每个折点或每组都能很好地代表完整数据集的过程。解决偏差和方差是最好的方法之一。
可以通过一个房价示例来理解,使得某些房屋的价格可能比其他房屋的价格高得多。为了解决这种情况,分层的k倍交叉验证技术很有用。
此方法是所有方法中最简单的交叉验证技术。在这种方法中,我们需要删除训练数据的一个子集,并通过在数据集的其余部分上对其进行训练来使用它来获得预测结果。
在此过程中发生的错误告诉我们的模型在未知数据集下的表现如何。尽管此方法执行起来很简单,但仍然面临方差大的问题,有时还会产生误导性的结果。
交叉验证技术存在一些限制,如下所示: