张芷铭的个人博客

一般的机器学习流程

在机器学习(Machine Learning, ML)中,Train、Eval、Test 是数据划分和模型训练的关键步骤,每个阶段的目的和作用不同,确保模型能够有效泛化到未见过的数据。下面是详细介绍:


1. Train(训练集)

目的:用于模型的训练,让模型学习数据中的模式和特征,优化其参数。

特点

• 数据占比通常为 60%-80%(视具体情况而定)。

• 训练数据用于更新模型权重。

• 训练过程中,模型通常会经历多轮迭代(epochs),利用优化算法(如 SGD、Adam)最小化损失函数(loss function)。

• 可能需要数据增强(Data Augmentation)、正则化(Regularization)等手段来提升泛化能力。

示例流程

  1. 前处理:清理数据、归一化/标准化、数据增强(图像/文本等)。

  2. 训练

• 选择模型(CNN、Transformer、XGBoost等)。

• 设定超参数(学习率、batch size 等)。

• 采用损失函数(交叉熵、MSE等)。

• 使用优化器(Adam、SGD等)。

• 进行梯度更新(反向传播)。

  1. 监控指标

• 训练损失(Training Loss)。

• 训练准确率(Training Accuracy)。

• 可能还包括正则项(如 L1/L2)。

注意点

• 过拟合(Overfitting):如果模型在训练集上表现很好,但在测试集上效果很差,说明过拟合。

• 解决方案:

• 数据增强(增加数据多样性)。

• 采用正则化(L1/L2, Dropout)。

• 早停(Early Stopping)。

• 采用更简单的模型。


2. Eval(验证集)

目的:在训练过程中用于调参,评估模型在未见过的数据上的表现,以防止过拟合。

特点

• 占比通常为 10%-20%。

• 不用于训练,不影响模型参数。

• 主要用于选择最优超参数,如:

• 学习率(Learning Rate)。

• 正则化强度(L2/L1)。

• 网络深度、隐藏单元数等。

• 早停(Early Stopping):如果在验证集上的损失不再降低,可以提前停止训练,避免过拟合。

示例流程

  1. 每个 epoch 训练完毕后,在验证集上计算:

• 验证损失(Validation Loss)。

• 评估指标(如准确率、AUC、F1-score等)。

  1. 超参数调优

• 交叉验证(Cross Validation):如 K 折交叉验证(K-Fold Cross Validation)。

• 网格搜索(Grid Search)、贝叶斯优化(Bayesian Optimization)、随机搜索(Random Search)。

• 选择最优模型。

注意点

• 如果验证集的损失开始上升,而训练集的损失持续下降,说明模型过拟合。

• 需要使用数据增强等方法来提高泛化能力。


3. Test(测试集)

目的:在训练完成后,使用测试集评估最终模型的性能,模拟模型在真实场景中的表现。

特点

• 占比通常为 10%-20%。

• 只在训练完成后使用 一次,不参与训练和超参数调整。

• 用于衡量模型的真实泛化能力。

• 测试结果是模型最终的性能指标。

示例流程

  1. 使用训练好的模型,在测试集上进行推理。

  2. 计算最终的评估指标,如:

• 分类任务:

准确率(Accuracy)

精确率、召回率、F1-score(Precision, Recall, F1-score)。

ROC-AUC(受试者工作特征曲线下面积)。

• 回归任务:

均方误差(MSE)

均方根误差(RMSE)

R²(决定系数)

注意点

• 不能用测试集来调参,否则相当于“作弊”。

• 真实场景中的数据分布可能会有所不同,需要考虑 数据漂移(Data Shift)


数据划分的推荐方法

不同的数据集划分方式适用于不同的应用场景:

方式训练集验证集测试集适用情况
固定划分70%15%15%小规模数据集,简单任务
[[K 折交叉验证(K-Fold Cross Validation)]]K-1 份1 份-小数据集,避免过拟合
[[留一交叉验证(LOOCV)]])N-1 个1 个-超小数据集(如医学领域)
时间序列划分过去数据最近数据未来数据时间序列预测(股票、天气等)

总结

阶段作用训练权重作用场景
Train训练模型,更新参数✅ 是训练阶段
Eval选择最佳超参数,防止过拟合❌ 否训练过程中的调参和验证
Test最终模型评估❌ 否真实场景的最终测试

关键点

• 训练集(Train):用于模型训练,调整参数。

• 验证集(Eval):用于调参和选择最佳模型,防止过拟合。

• 测试集(Test):用于评估最终模型的泛化能力,不能用于训练或调参。

如果数据量足够大,可以使用 K 折交叉验证 来提高模型稳定性,确保不同数据划分下的模型表现一致。

💬 评论