模型训练问题诊断
- 先检查训练数据的损失,看模型是否在训练集上学习良好
- 分析训练集上学习不佳的可能原因:模型偏差或优化问题(如果训练数据的损失很大的话)
模型偏差
模型偏差可能会影响模型训练。举个例子,假设模型过于简单,一个有未知参数的函数代θ1 得到一个函数 ,同理可得到另一个函数 ,把所有的函数集合起来得到一个函数的集合。但是该函数的集合太小了,没有包含任何一个函数,可以让损失变低的函数不在模型可以描述的范围内。
- 模型过于简单,无法表达复杂的函数关系
- 解决方法:增加模型的灵活性,如增加特征、使用更大的模型或深度学习
实际上我认为就是使用更多合理或者可能合理的自变量,这样一方面确实增大了模型复杂度,但是也让模型更有可能在多维空间里拟合收敛假设存在的那个曲线。
优化问题
- 可能卡在局部最小值
- 通过比较不同模型(如浅层vs深层)来判断是否存在优化问题
过拟合问题
- 原因:模型灵活性过大,在训练集表现良好但测试集表现差
- 解决方法: a) 增加训练数据(最有效) b) 数据增强 c) 限制模型灵活性(减少参数、使用较少特征等) d) 早停、正则化、dropout等技术
模型选择
- 避免直接使用测试集选择模型
- 使用验证集或交叉验证来选择模型
交叉验证
- k折交叉验证方法详解
- 有助于更可靠地评估模型性能
不匹配问题
不匹配跟过拟合其实不同,一般的过拟合可以用搜集更多的数据来克服,但是不匹配是指训练集跟测试集的分布不同,训练集再增加其实也没有帮助了。假设数据在分训练集跟测试集的时候,使用 2020年的数据作为训练集,使用2021年的数据作为测试集,不匹配的问颖可能就很严重。如果今天用 2020年当训练集,2021年当测试集,根本预测不准。因为 2020年的数据跟 2021年的数据背后的分布不同。
- 训练集和测试集分布不同导致的问题
- 需要对数据产生方式有深入理解才能解决