一、模型评估(Model Evaluation)
在训练神经网络或机器学习模型时,我们的目标不仅是让模型在训练数据上表现好,更重要的是在未见过的数据上也有良好的表现。这就涉及到模型的评估与验证。
1. 训练集与测试集的划分
通常,我们会将全部数据集划分为两部分:
| 数据集类型 | 用途 | 
|---|---|
| 训练集(Training Set) | 用于模型学习参数(如权重、偏置) | 
| 测试集(Test Set) | 用于检验模型在新数据上的表现 | 
划分比例常见为:
- 
80% 训练集 + 20% 测试集
 - 
70% 训练集 + 30% 测试集
 
目的:通过将数据分开,可以有效检测模型是否过拟合(Overfitting)或 欠拟合(Underfitting)。
2. 分类问题的训练与测试流程
以二分类问题(Binary Classification)为例,整体流程如下:
(1)准备数据集
将数据随机划分为训练集与测试集。
(2)训练模型
在训练集上进行学习,最小化损失函数(例如交叉熵损失 Cross Entropy Loss)。
(3)评估模型
在测试集上计算准确率(Accuracy)、精确率(Precision)、召回率(Recall)或 F1-score。
(4)分析表现
- 
如果训练集准确率高、测试集准确率低 → 过拟合
 - 
如果两者都低 → 欠拟合
 
(5)图示理解:
数据集 → 划分 → [训练集] + [测试集]
↓
模型训练
↓
测试集评估性能
二、模型选择与训练(Model Selection & Training)
1. 模型的选择
在机器学习或深度学习中,我们常会有多种模型可供选择,例如:
- 
逻辑回归(Logistic Regression)
 - 
支持向量机(SVM)
 - 
神经网络(Neural Network)
 - 
决策树、随机森林(Decision Tree / Random Forest)
 
每种模型的表现取决于任务类型、数据规模与特征复杂度。因此我们需要一个系统的方法来选择最优模型。
2. 三种常见数据集划分方式
在真实训练流程中,我们一般将数据分为三部分:
| 数据集 | 作用 | 
|---|---|
| 训练集(Training Set) | 用于拟合模型参数 | 
| 验证集(Validation Set) | 用于调整模型结构或超参数(Hyperparameters) | 
| 测试集(Test Set) | 用于最终模型性能评估 | 
举例:模型选择的完整流程
假设我们在调节神经网络的结构(隐藏层数量、学习率等):
- 用训练集训练多个不同结构的模型;
 - 在验证集上评估每个模型的性能;
 - 选择在验证集上表现最好的模型;
 - 用训练集 + 验证集重新训练该模型;
 - 最后在测试集上评估其最终性能。
 
3. 为什么使用验证集而不是测试集来调参?
不应该使用测试集来选择模型。测试集只能在"模型定型后"用于最终评估。
原因:
如果我们在模型选择阶段多次查看测试集性能,就相当于"间接让模型学习了测试集的特征",会导致信息泄漏(Data Leakage),使得测试结果不再客观反映泛化能力。
4. 交叉验证(Cross Validation)
当数据量较小时,可以使用 K 折交叉验证(K-Fold Cross Validation) 进行更稳定的评估。
原理:
- 将数据集分成 K 份;
 - 每次取其中 1 份做验证集,剩下 K-1 份做训练集;
 - 轮流进行 K 次训练与评估,最后取平均性能。
 
优点:
- 
最大化利用数据;
 - 
减少由于随机划分带来的偏差;
 - 
评估更稳定可靠。
 
常用的 K 值:K = 5 或 10。
5. 最终模型由哪个集合确定?
最终模型应基于"验证集"选择,在"训练集 + 验证集"上重新训练后,用"测试集"评估。
| 集合 | 用于 | 
|---|---|
| 训练集 | 拟合参数 | 
| 验证集 | 选择最优模型 | 
| 测试集 | 最终性能评估 | 
总结
| 概念 | 作用 | 
|---|---|
| 训练集 (Training Set) | 用于学习模型参数 | 
| 验证集 (Validation Set) | 用于调节模型结构或超参数 | 
| 测试集 (Test Set) | 用于最终评估模型性能 | 
| 交叉验证 (Cross Validation) | 提高小样本评估稳定性 | 
| 避免过拟合 | 不在测试集上反复调参 |