第一节:模型评估与模型参数选择
1.简单介绍:
-
·若对于给定的输入x,若某个模型的输出y^=f(x)偏离真实目标值y,那么就说明模型存在误差;
-
y^偏离y的程度可以用关于y^和y某个函数L(y.0)来表示,作为误差的度量标准:这样的函数L(y,称为损失函数
- 在某种损失函数度量下,训练集上的平均误差被称为训练误差,测试集上的误差称为泛化误差。
- 由于我们训练得到一个模型最终的目的是为了在未知的数据上得到尽可能准确的结果,因此泛化误差是衡量一个模型泛化能力的重要标准。
2.数据集
- 数据集包括:训练集、验证集、测试集
- 误差:预测输出与真实输出y之间的差异;
- 经验误差、训练误差:在训练集上的误差;
- 泛化误差:在新样本上的误差。
- 泛化误差越小越好,经验误差不一定越小越好,可能导致过拟合
训练集、验证集、测试集三种数据集之间的关系:
- 训练集相当于上课学知识
- 验证集相当于课后的的练习题,用来纠正和强化学到的知识
- 测试集相当于期末考试,用来最终评估学习效果
3.验证集
- ·当我们的模型训练好之后,我们并不知道他的表现如何。这个时候就可以使用验证集
(Validation Dataset)来看看模型在新数据(验证集和测试集是不同的数据)上的表现如何。
同时通过调整超参数,让模型处于最好的状态。
验证集的作用:
- 评估模型效果,为了调整超参数而服务
- 调整超参数,使得模型在验证集上的效果最好
说明:
- 验证集不像训练集和测试集,它是非必需的。如果不需要调整超参数,就可以不使用验证集,直接用测试集来评估效果。
- 验证集评估出来的效果并非模型的最终效果,主要是用来调整超参数的,模型最终效果以测试集的评估结果为准。
4.测试集
- 当我们调好超参数后,就要开始「最终考试」了。我们通过测试集(Test Dataset)来做最终的评估,来看学习效果(模型效果)好不好
- 通过测试集的评估,我们会得到一些最终的评估指标,例如:准确率、精确率、召回率、F1等。
5.划分数据集
- 对于小规模样本集(几万量级),常用的划分比例: 训练集:验证集:测试集=6:2:2 训练集:测试集==8:2、7:3
- 对于大规模样本集(百万级以上),只要验证集和测试集的数量足够即可。 例如有 100w 条数据,那么留 1w 验证集,1w 测试集即可。 1000w 的数据,同样留 1w 验证集和 1w 测试集。
- 超参数越少,或者超参数很容易调整,那么可以减少验证集的比例,更多的分配给训练集
6.过拟合
- 过拟合:将训练样本自身的一些特点当作所有样本潜在的泛化特点。
- 表现:在训练集上表现很好,在测试集上表现不好。
- 过拟合的原因: 训练数据太少(比如只有几百组) 模型的复杂度太高(比如隐藏层层数设置的过多,神经元的数量设置的过大) 数据不纯
- 为了选择效果最佳的模型,防止过拟合的问题,通常可以采取的方法有:
- -移除特征,降低模型的复杂度:减少神经元的个数,减少隐藏层的层数
- 训练集增加更多的数据
- 重新清洗数据
- 数据增强
- 正则化
- 早停
7.欠拟合
- 欠拟合:还没训练好。
- 欠拟合的原因: 1. 数据未做归一化处理 2. 神经网络拟合能力不足 3. 数据的特征项不够
- 解决方法: 1. 寻找最优的权重初始化方案 2. 增加网络层数、epoch 3. 使用适当的激活函数、优化器和学习率 4. 减少正则化参数 5. 增加特征