从上图中可以看到大概是30 epoch时,相关系数到达了最大值,之后测试集的损失函数突然上升,但是训练集的损失函数之后一直在震荡下降。此处即出现了过拟合,特别是50之后,测试集的损失函数不断上升,但是训练集的损失函数还在下降,即说明此时测试和训练集的数据结构已经差距很大了,说明数据出现了过拟合。
接近150 epoch之前,训练集和测试集的损失函数都不再下降。如果是正常情况,则该实验就应该是150之前的位置达到模型的最佳性能,此时在相关系数处也能看到最大值。
过拟合和欠拟合的分析判别
训练集和验证集的损失函数:
绘制训练集和验证集的损失函数随训练轮数的变化曲线。
如果训练集的损失函数持续下降,而验证集的损失函数在某一时刻开始上升,这可能表明模型开始过拟合。
如果训练集和验证集的损失函数都在持续下降,且差距不大,这可能表明模型处于欠拟合状态。
准确率或其他评估指标:
观察训练集和验证集上的准确率或其他评估指标的变化。
如果训练集上的准确率很高,而验证集上的准确率较低,这可能是过拟合的迹象。
相反,如果训练集和验证集上的准确率都较低,这可能是欠拟合的表现。
模型复杂度:
比较模型的复杂度和数据量的大小。如果模型过于复杂,而数据量相对较小,容易导致过拟合。增加数据量或简化模型结构可能有助于解决问题。
可视化模型输出:通过可视化模型的输出,例如图像分类任务中的预测结果与真实标签的对比,可以直观地观察模型是否过拟合或欠拟合。如果模型对训练数据过度拟合,可能会对训练集中的噪声或异常情况过于敏感。
正则化方法:
尝试使用正则化技术,如 L1 和 L2 正则化、Dropout 等,来防止过拟合。如果加入正则化后模型性能有所改善,可能说明模型存在过拟合问题。
增加验证集:使用更多的验证数据来评估模型的性能。如果模型在不同的验证集上表现不一致,这可能暗示着过拟合或欠拟合的问题。
常用的避免过拟合的方法
- 数据增强:对原始数据进行随机变换、翻转、旋转等操作,增强数据的多样性。
- 正则化:
- L1和L2正则化:两者都是损失函数,基于均方误差MSE,
L1损失函数 = 均方误差(MSE)+ λ * |θ|
L2损失函数 = 均方误差(MSE)+ λ * θ^2
θ 是模型的参数,λ 是正则化参数,|θ| 表示参数的绝对值,θ^2 表示参数的平方。
通常情况下先尝试L2正则化,如果效果不理想,再尝试L1正则化。 - Dropout :在训练过程中随机丢弃部分特征值,丢弃的这部分被设置为0,可以减少模型对某些特征过度依赖。
- 增加训练数据,即增加样本数量
- 模型融合: 集合多个模型,取其平均或投票结果,可以提高模型的泛化能力
- 超参数调整: 合理选择模型的超参数,包括学习率、层数、节点数等。
可以使用Optuna包 实现自动化超参数搜索优化。 - 特征工程:选择有代表性和信息量丰富的特征,减少噪声和冗余信息
- 验证集和交叉验证:使用验证集来评估模型的性能,通过交叉验证来选择最佳模型和超参数