一、训练数据损失大的原因
原因 | 解决方法 |
模型偏差:模型过于简单(灵活性过小) | 1、重新设计一个灵活性更大的模型 2、增加更多的特征 3、用深度学习 |
优化问题:模型在训练集上的损失较大,并且已知模型结构足够复杂应该能够捕捉数据的真实分布,那么可能是优化算法未能找到损失函数的全局最小值。 | 1、修改优化方式,使得能够从模型中找到这个最优的函数 2、调整学习率和其他超参数 |
二、判断是模型偏差还是优化问题的方法
1、通过比较不同的模型来判断模型现在到底够不够大。
2、使用交叉验证和训练验证集分离
3、分析学习曲线和误差分解
三、过拟合
表现 | 解决方法 |
在训练数据上面,损失很小。可是在测试数据上面,它的损失会变得很大, | 1、增加训练集 2、给模型增加限制 |
限制制造方法
- 减少参数
- 减少特征
- 别的方法,比如早停(early stopping)、正则化(regularization)和丢弃法(dropoutmethod)。
四、交叉验证
交叉验证就是按一定比例把训练数据分为测试集和训练集,通过验证损失,选择损失最小的那个比例。
K折交叉验证
- 切分训练集:将训练数据集切分为k个互不相交的大小相同的子集
- 训练模型:用其中k-1个子集
- 验证模型:用余下的子集
- 将这一过程对可能的k中选择重复进行(这一过程使用的是同一组超参数)
- 计算交叉验证误差:计算k次的预测误差并对其求平均值。
五、不匹配
不匹配是由于训练集和测试集分布不同产生的,即使增加数据也不能解决这个问题。我们需要对训练集数据和测试集数据的有一些自己的理解,才能判断是否遇到不匹配问题。