1. 数据集划分
在标准的机器学习流程中,数据集通常被划分为以下几个主要部分:
1). 训练集 (Training Set)
- 作用:用于训练模型,即通过学习数据中的特征和模式来优化模型的内部参数。
- 用途:模型接触的绝大部分数据都在这里,是模型“学习”的基础。
2). 验证集 (Validation Set)
- 作用:用于在训练过程中调优模型超参数(Hyperparameters),例如神经网络的层数、学习率、树模型的深度等。
- 用途:验证集的结果指导我们选择最佳的模型配置。它既不直接参与模型的参数优化(训练),也不是最终评估的依据。
3). 测试集 (Testing Set / Holdout Set)
- 作用:用于对最终确定超参数的模型进行无偏见的最终评估。
- 用途:测试集的数据必须是模型在训练和验证过程中完全没有接触过的“新”数据。评估结果代表了模型在实际应用中的预期性能。
2. 常见的数据集划分方法
主要有两种策略来划分数据集:
1). 留出法(Hold-out Method / 简单划分)
这是最基础的划分方法,将数据集一次性划分为训练集和测试集(有时也包括验证集)。
- 划分比例:常见的比例有 80% 训练 / 20% 测试,或者 70% 训练 / 15% 验证 / 15% 测试。
- 优点:简单、快速、计算成本低。
- 缺点:划分结果具有随机性,可能导致样本偏差,评估结果不稳定。如果数据集较小,会进一步减少训练数据量。
2). 交叉验证(Cross-Validation, CV)
为了克服留出法的随机性和数据利用率低的问题,交叉验证被广泛使用,其中最常用的是 K 折交叉验证(K-Fold CV)。
- 方法:
- 将数据集随机平均分成 K 个大小相似的子样本(折,Fold)。
- 进行 K 次独立的模型训练和评估。每一次,都使用其中 K-1 个子集作为训练集,剩下的那 1 个子集作为验证集(或测试集)。
- 最终,将 K 次评估结果取平均值,得到一个更稳定、更可靠的模型性能估计。
- 优点:数据利用率高,评估结果更稳定、可靠。
- 缺点:计算成本高,需要训练 K 次模型。
在机器学习领域,验证(Validation)和测试(Testing)是模型开发过程中两个不同且关键的阶段,使用的数据集也不同。
- 验证(Validation):用于调优模型,在训练过程中选择最佳超参数和模型架构。
- 测试(Testing):用于评估最终模型的泛化能力,确保其在未见过的新数据上的表现符合预期。
在机器学习和深度学习中,**验证(Validation)**的核心目标是评估模型的泛化能力,并据此调整模型的超参数或进行模型选择。主要的验证方法可以分为以下几大类:
1. 标准单次划分验证
这是最基本、最常用的方法,将数据集一次性划分为训练集、验证集和测试集。
- 数据集划分比例:常见的比例有 70% 训练集,15% 验证集,15% 测试集;或者在深度学习中(数据量很大时),使用 98% 训练集,1% 验证集,1% 测试集。
- 优点:实现简单,计算成本低。
- 缺点:验证结果依赖于具体的随机划分方式,如果数据划分不具有代表性,验证结果可能存在偏差。
2. 交叉验证 (Cross-Validation, CV)
交叉验证是一种更鲁棒的验证方法,尤其适用于中小型数据集的机器学习模型调优。它通过多次不同的划分来全面评估模型性能。
a. K折交叉验证 (K-Fold Cross-Validation)
这是最流行的交叉验证形式。
- 方法:将训练数据集分成 K 个大小相等的“折”(Fold)。每次训练时,使用 K-1 折作为训练数据,剩下的一折作为验证数据。重复 K 次,每次使用不同的折作为验证集。
- 结果:最终的模型性能取 K 次验证结果的平均值。
- 优点:更全面地评估模型性能,减少了划分方式带来的偏差,更好地利用了有限的数据。
- 缺点:计算成本高,需要训练 K 个模型,在深度学习中很少直接用于调优(耗时太长)。
b. 留一法交叉验证 (Leave-One-Out Cross-Validation, LOOCV)
- 方法:K折交叉验证的特例,K等于样本总数 N。每次只留一个样本做验证,其余 N-1 个样本做训练。
- 优点:提供了最无偏的性能估计。
- 缺点:计算成本极高,通常只用于非常小的数据集。
c. 分层K折交叉验证 (Stratified K-Fold CV)
- 方法:确保在每次划分中,训练集和验证集中的类别比例与原始数据集的比例保持一致。
- 用途:强烈推荐用于处理样本不平衡问题的数据集。
3. 时间序列交叉验证 (Time Series Cross-Validation)
- 方法:对于时间序列数据,不能随机打乱顺序。必须按照时间顺序进行划分,确保模型只能使用过去的数据预测未来的数据(例如,使用 2023 年的数据预测 2024 年 Q1 的数据)。
- 用途:金融、天气预报等时间依赖性强的数据集。
4. 深度学习中的验证方法
在深度学习中,由于模型训练时间长、数据量大,通常使用标准单次划分验证结合早停法:
- 标准划分 + 早停法 (Early Stopping):在训练过程中,周期性地(例如每个 Epoch 结束时)在验证集上评估模型损失或准确率。如果模型在验证集上的性能连续几个周期没有改善甚至开始下降,就提前停止训练。这既能有效防止过拟合,又能节省大量计算时间。
总结与推荐
- 传统机器学习(小数据集):优先使用K折交叉验证进行模型选择和超参数调优。
- 深度学习(大数据集):使用标准单次划分验证集,并结合早停法。