K 折交叉验证是一种用于评估模型性能的技术。它对于估计模型对新的、未见过的数据的泛化程度特别有帮助。该过程涉及将数据集划分为“k”个大小大致相等的子集或折叠。以下是步骤的细分:
1.数据集分割:
数据集被分为“k”个相同大小的子集或折叠。例如,如果您有 1,000 个样本并选择“k”为 5,则每次折叠将包含 200 个样本。
2.迭代训练和评估:
该模型被训练“k”次。在每次迭代中,使用不同的折叠作为验证集,剩余的折叠用于训练。例如:
-
迭代 1: 折叠 1 作为验证,折叠 2 到 k 用于训练
-
迭代 2: 将第 2 次折叠作为验证,将第 1 次和第 3 次折叠到 k 用于训练
-
迭代 3: 第 3 次折叠作为验证,第 1 次和第 2 次折叠以及第 4 次到 k 次用于训练
-
...依此类推,直到所有折叠都被用作验证集。
3.绩效评估:
每次迭代后,都会使用验证集上选定的指标(例如准确度、精确度、召回率等)来评估模型的性能。对每次迭代的性能指标进行平均或组合,以给出模型性能的总体估计。
4. 指标聚合:
对每次迭代的性能指标(例如准确度分数)进行平均或组合,以提供模型性能的总体评估。这个聚合指标代表了模型在未见过的数据上的预期性能。
K 折交叉验证相对于简单的训练/测试分割的优点
-
更好地利用数据:K 折交叉验证可以更好地利用可用数据,因为每个样本都用于训练和验证。
-
减少性能估计的方差:它通过减少与单个训练/测试分割相关的方差来提供更可靠的模型性能估计。
-
泛化:它有助于理解模型如何在不同的数据子集上执行,从而评估其泛化能力。
选择“k”的值
-
较高的“k”值:使用较高的“k”值(例如 10 或更高)会导致验证集较小,这可能会导致性能估计中的较低的偏差,但计算成本较高。
-
较低的“k”值:使用较低的“k”值(例如 3 或 5)减少计算费用,但由于验证规模较小,可能会导致性能估计中出现较高的偏差套。
实际场景中
-
对于大型数据集,较高的“k”值可能会导致计算成本高昂。
-
当数据集较小时,较高的“k”可能无法在每个折叠中提供足够的数据来进行稳健的模型训练。
-
一般来说,通常使用 5 或 10 等值,因为它们在计算效率和可靠的性能估计之间取得平衡。