机器学习中的交叉验证17 Mar 2025 | 5 分钟阅读 交叉验证是一种通过在部分输入数据上训练模型,并在之前未见过的数据子集上进行测试来验证模型效率的技术。我们也可以说它是一种检查统计模型如何泛化到独立数据集的技术。 在机器学习中,总是需要测试模型的稳定性。这意味着仅仅根据训练数据集,我们无法在训练数据集上拟合模型。为此,我们保留了数据集中的一个特定样本,该样本不是训练数据集的一部分。之后,我们在部署前在该样本上测试模型,整个过程都属于交叉验证。这与通用的训练-测试分割不同。 因此,交叉验证的基本步骤是:
交叉验证中使用的方法有一些常用的交叉验证方法。这些方法如下:
验证集方法在验证集方法中,我们将输入数据集分为训练集和测试集或验证集。两个子集各占数据集的50%。 但它有一个很大的缺点是,我们只使用50%的数据集来训练模型,因此模型可能会遗漏数据集中的重要信息。它也倾向于产生欠拟合模型。 留P个样本交叉验证在此方法中,将P个数据集排除在训练数据之外。这意味着,如果原始输入数据集共有N个数据点,则将N-P个数据点用作训练数据集,P个数据点用作验证集。整个过程对所有样本重复进行,并计算平均误差以了解模型的有效性。 这项技术有一个缺点;对于较大的P,它可能在计算上很困难。 留一法交叉验证此方法类似于留P个样本交叉验证,但不是留P个,而是需要从训练中留出1个数据集。这意味着,在此方法中,对于每个学习集,只保留一个数据点,其余数据集用于训练模型。此过程对每个数据点重复。因此,对于N个样本,我们得到N个不同的训练集和N个测试集。它具有以下特点:
K折交叉验证K折交叉验证方法将输入数据集分成K个大小相等的样本组。这些样本称为折。对于每个学习集,预测函数使用k-1折,其余的折用作测试集。这种方法是一种非常流行的CV方法,因为它易于理解,并且输出比其他方法偏差小。 K折交叉验证的步骤是:
我们以5折交叉验证为例。因此,数据集被分成5折。在第1次迭代中,保留第一折来测试模型,其余用于训练模型。在第2次迭代中,第二折用于测试模型,其余用于训练模型。此过程将一直持续到每一折都被用作测试折。 请看下图: ![]() 分层K折交叉验证这项技术与K折交叉验证类似,只有一些小改动。这种方法基于分层概念,它是一种重新排列数据以确保每个折或组都能很好地代表整个数据集的过程。为了处理偏差和方差,这是最好的方法之一。 我们可以通过房屋价格的例子来理解这一点,例如一些房屋的价格可能远高于其他房屋。为了应对这种情况,分层K折交叉验证技术非常有用。 留出法这是所有交叉验证技术中最简单的方法。在此方法中,我们需要移除训练数据的一个子集,并使用该子集通过在其余部分数据集上训练来获得预测结果。 此过程中发生的错误表明我们的模型在未知数据集上的表现如何。虽然这种方法简单易行,但它仍然面临高方差的问题,而且有时会产生误导性的结果。 机器学习中交叉验证与训练/测试分割的比较
交叉验证的局限性交叉验证技术有一些局限性,如下所示:
交叉验证的应用
下一个主题数据科学与机器学习 |
我们请求您订阅我们的新闻通讯以获取最新更新。