🎨开发平台:jupyter lab
🎄运行环境:python3、TensorFlow2.x
1. 过拟合和欠拟合的原因
- 欠拟合:指模型在训练集、验证集和测试集上均表现不佳的情况;
- 过拟合:指模型在训练集上表现很好,到了验证和测试阶段就很差,即模型的泛化能力很差。
(1)欠拟合的常见原因:
- 模型复杂度过低;
- 特征量过少;
(2)过拟合的常见原因:
- 建模样本选取有误,如样本数量太少,选样方法错误,样本标签错误等,导致选取的样本数据不足以代表预定的分类规则;
- 样本噪音干扰过大,使得机器将部分噪音认为是特征从而扰乱了预设的分类规则;
- 假设的模型无法合理存在,或者说是假设成立的条件实际并不成立;
参数太多,模型复杂度过高;- 对于决策树模型,如果我们对于其生长没有合理的限制,其自由生长有可能使节点只包含单纯的事件数据(event)或非事件数据(no event),使其虽然可以完美匹配(拟合)训练数据,但是无法适应其他数据集;
- 对于神经网络模型:a)对样本数据可能存在分类决策面不唯一,随着学习的进行,,BP算法使权值可能收敛过于复杂的决策面;b)权值学习迭代次数足够多(Overtraining),拟合了训练数据中的噪声和训练样例中没有代表性的特征;
2. 过拟合和欠拟合的解决办法
(1)解决欠拟合(高偏差)的方法:
- 模型复杂化;
- 增加更多的特征,使输入数据具有更强的表达能力
- 调整参数和超参数
- 增加训练数据往往没有用
- 降低正则化约束
(2) 解决过拟合(高方差)的方法:
- 增加训练数据数
- 使用正则化约束
- 减少特征数
- 调整参数和超参数
- 降低模型的复杂度
- 使用Dropout
- 提前结束训练
3. 图示举例
3.1 线性函数拟合(正常情况)
3.2 线性函数拟合(过拟合情况)
3.2 线性函数拟合(欠拟合情况)
————————————————
版权声明:本文为CSDN博主「奔跑的小仙女」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43211132/article/details/106937846