K 折交叉验证简单指南
为了评估模型在数据集上的性能,我们需要衡量模型做出的预测与观察到的数据的匹配程度。
衡量这一点的最常见方法是使用均方误差 (MSE),其计算公式如下:
MSE = (1/n)*Σ(y i – f(x i )) 2
金子:
- n:观察总数
- y i :第 i 个观测值的响应值
- f( xi ):第 i个观测值的预测响应值
模型预测与观测值越接近,MSE 就越低。
在实践中,我们使用以下过程来计算给定模型的 MSE:
1.将数据集分为训练集和测试集。
2.仅使用训练集中的数据创建模型。
3.使用模型对测试集进行预测并测量测试的 MSE。
MSE 测试让我们了解模型在从未见过的数据上的表现如何。然而,使用单个测试集的缺点是 MSE 测试可能会根据训练和测试集中使用的观察结果而发生显着变化。
避免此问题的一种方法是每次使用不同的训练和测试集多次拟合模型,然后将测试 MSE 计算为所有测试 MSE 的平均值。
这种通用方法称为交叉验证,其特定形式称为k 折交叉验证。
K 折交叉验证
K 折交叉验证使用以下方法来评估模型:
步骤 1:将数据集随机分为k组,或“折叠”,大小大致相等。
第 2 步:选择其中一个折叠作为您的固定集。将模板调整到剩余的 k-1 折叠。根据张紧层中的观测值计算 MSE 检验。
步骤 3:重复此过程k次,每次使用不同的集合作为排除集。
步骤 4:将测试的总体 MSE 计算为测试的k 个MSE 的平均值。
测试 MSE = (1/k)*ΣMSE i
金子:
- k:折叠数
- MSE i :在第 i 次迭代时测试 MSE
如何选择K
一般来说,我们在 k 重交叉验证中使用的折叠越多,MSE 测试偏差越低,但方差越高。相反,我们使用的折叠越少,偏差就越高,但方差就越低。这是机器学习中 偏差-方差权衡的典型例子。
在实际应用中,我们一般选择使用5层到10层之间。正如《统计学习简介》中所指出的,该折叠数已被证明可以在偏差和方差之间提供最佳平衡,从而提供测试 MSE 的可靠估计:
总而言之,在 k 倍交叉验证中,存在与 k 的选择相关的偏差-方差权衡。
通常,考虑到这些因素,我们会使用 k = 5 或 k = 10 执行 k 倍交叉验证,因为经验表明这些值可以产生测试错误率估计值,既不会出现过高的偏差,也不会出现过高的方差。
-第 184 页,统计学习简介
K 折交叉验证的好处
当我们将数据集拆分为单个训练集和单个测试集时,根据测试集中的观测值计算的测试 MSE 可能会根据训练集和测试集中使用的观测值而发生显着变化。
使用 k 折交叉验证,我们能够使用训练和测试集的几种不同变体来计算 MSE 测试。这使我们有更大的机会获得测试 MSE 的无偏估计。
K 折交叉验证还提供了优于留一交叉验证 (LOOCV) 的计算优势,因为它只需拟合模型k次而不是n次。
对于需要很长时间才能拟合的模型,k 折交叉验证可以比 LOOCV 更快地计算测试 MSE,并且在许多情况下,如果使用足够数量的折叠,则每种方法计算出的测试 MSE 将非常相似。
K 折交叉验证扩展
k 折交叉验证有多种扩展,包括:
重复 k 折交叉验证:这是简单地重复 k 折交叉验证n次的地方。每当训练集和测试集混合时,这都会进一步减少测试 MSE 估计的偏差,尽管这比普通的 k 折交叉验证需要更长的时间才能完成。
留一交叉验证:这是 k 折交叉验证的一种特殊情况,其中k = n 。您可以在此处了解有关此方法的更多信息。
分层 k 折交叉验证:这是 k 折交叉验证的一个版本,其中数据集以每次折叠代表整体的方式重新排列。正如Kohavi所指出的,与普通的 k 折交叉验证相比,这种方法往往可以在偏差和方差之间提供更好的权衡。
嵌套交叉验证:这是在每个交叉验证折叠中执行 k 折叠交叉验证的地方。这通常用于在模型评估期间执行超参数调整。