如何创建 k 折交叉验证测试?

How to create a k-fold cross validation test?

我有一个来自污染传感器的数据需要验证。我将其与 londonair.org.uk 中的数据进行比较以进行比较。我创建了一个简单的线性回归模型,X 轴是我的传感器数据,Y 轴是 Londonair 数据,并且能够得到一个简单的模型(以 y=mx + c 的形式)。我的教授让我使用 k 折交叉验证来验证模型,但我不确定如何。

我不确定要在哪个数据集上执行测试。应该是从传感器获取的原始数据还是我应该获取通过回归模型计算的数据?

Mini-Introduction 到 K-Fold Cross-Validation

K-Fold cross-validation将训练数据集分成k个不同的等份, 也称为 "folds"。依次将每个折叠视为测试集(也 称为 "validation set"),而其余 k - 1 个块成为训练集。 该模型通过迭代 k - 1 个块来训练并测试生成的模型 在验证集块上,其中测量了一些指标,例如准确度、标准 偏差等。该过程重复k次,之后所有模型的均值 计算评估以确定最终模型评估。

总而言之,K-fold cross-validation 可以通过以下步骤实现:

随机打乱初始数据集。

  1. 将数据集分成 k 份。
  2. 每折:

    (a) 设置first fold作为测试数据集

    (b) 将剩余的折叠设置为训练数据集。

    (c) 使用训练集进化模型并使用模型评估测试 数据集。

    (d) 重复k次。

  3. 计算 k 个测试数据集评估的模型评估平均值。

您正在验证您的模型,即您正在尝试了解您的模型在多大程度上能够捕获原始数据中的潜在模式和关系 - 所以数据您用于训练的将是您的原始数据(训练意味着您将其输入模型以使其能够学习),而验证数据是您输入模型以查看其学习训练数据的程度的数据。 基本的 k-fold 交叉验证思想不是在训练期间用它之前已经看到的数据测试模型。

特别是你的案例

您有带标签的数据,每个实例都是 "pair":污染数据 -> 伦敦航空数据。比方说你有 100 对独特的 - 你会喂养例如。将 80 个这样的对放入模型中进行训练(如果原始数据污染值为 a,伦敦航空标签为 b),其余 20 个用于验证- 你给模型输入污染数据并检查模型 returns 正确的伦敦航空数据标签对应于污染数据(如果原始数据污染值为 a,标签应该是什么根据型号?)。重复上面介绍中描述的过程,然后平均结果,这将反映您的模型准确性。