我正在使用从 Kaggle 下载的数据集。数据集已经分为训练和测试两个 CSV。
我使用训练集构建了一个模型,因为我将训练 CSV 导入到 Jupyter Notebook 中。我预测使用 Train CSV 本身。我想进行交叉验证。我是否应该在火车 CSV 上执行交叉验证并再次将其分成两部分进行训练和测试?或者,我应该导入一个新的 CSV 文件 Test 并将两个 CSV 合并为一个吗?
我正在使用从 Kaggle 下载的数据集。数据集已经分为训练和测试两个 CSV。
我使用训练集构建了一个模型,因为我将训练 CSV 导入到 Jupyter Notebook 中。我预测使用 Train CSV 本身。我想进行交叉验证。我是否应该在火车 CSV 上执行交叉验证并再次将其分成两部分进行训练和测试?或者,我应该导入一个新的 CSV 文件 Test 并将两个 CSV 合并为一个吗?
“统计学习简介”的第 5 章涵盖了 CV 和 bootstrap。我强烈推荐阅读本章,因为抽样方法在实践中非常重要。
交叉验证 (CV)通常意味着您将一些训练数据集拆分为 k 个部分,以生成不同的训练/验证集。通过这样做,您可以看到模型对训练数据集的不同样本的学习(以及能够做出预测)的程度。
在训练和模型调整期间,您的模型不应该看到测试数据!这个想法是您保留一个真正的“外生”数据集(在训练期间从未使用过)来测试您的模型最终的表现如何。如果您在训练期间使用测试集,信息可能会从测试集泄漏到模型,并且您无法再证明模型的外生有效性(因为来自测试集的信息泄漏到模型)。
在下图中,您将对训练集进行四个不同的拆分,其中蓝色代表训练案例,橙色代表验证案例。您对四个蓝色部分中的每一个运行相同的回归/分类,并获得对四个橙色部分中的每一个的预测。
处理数据特征有不同的策略。为了平衡组等,您可以使用分层抽样策略。在此处查看sklearn 实现。
由于采样策略可能是相关的,因此建议让 sklearn 之类的工具进行 CV 拆分。如果相关,大多数工具/方法都带有一些 CV 选项。
Andrew Ng 写了一本很棒的书,叫做《机器学习向往》。你可以在这里免费下载https://www.deeplearning.ai/machine-learning-yearning/
现在在 Kaggle 的数据集中。您拥有的数据集是训练和测试。即使您想使用测试数据集,也不能。如果你打开它,你会看到那里只有功能。缺少目标列,因为这是您需要使用模型并预测值以将其上传到 Kaggle 的文件。
阅读链接书的第 5、6 和 7 章,您将获得很多关于如何处理训练数据的好建议。简而言之。
您应该将训练数据集分成 3 个部分。
- 训练集——你在它上面运行你的学习算法。
- 开发(开发)集——用于调整参数、选择特征以及就学习算法做出其他决策。有时也称为保持交叉验证集。
- 测试集——你用它来评估算法的性能,但不决定使用什么学习算法或参数。
引自第 5 章,第 15 页。
请记住,上述测试集与您从 Kaggle 获得的测试文件无关。
在完成之前,您不应该触摸测试数据。要进行交叉验证,您必须将训练数据集拆分为训练集和验证集,或者您可以进行 k 折交叉验证(或任何其他方法)。
以下是一些信息:https://en.wikipedia.org/wiki/Cross-validation_(statistics)
但是,切勿使用测试数据来训练或调整您的模型,因为如果这样做,您的模型将针对您的测试数据进行训练,然后您的结果将无效。