什么是过拟合?
过拟合(Overfitting):模型在训练数据上表现很好,但在新数据上表现很差。
就像一个学生把所有练习题的答案都背下来了,但考试遇到新题就不会做。模型记住了训练数据中的噪声和细节,而没有学到真正的规律。
过拟合的典型表现
- 训练准确率很高(如97%),测试准确率很低(如48%)
- 训练集和测试集的表现差距很大
过拟合的原因
- 模型太复杂(参数太多)
- 训练数据太少
- 训练时间太长
- 特征中包含噪声
解决过拟合的方法
| 方法 | 原理 |
|---|---|
| Dropout | 随机丢弃部分神经元,迫使网络学习更鲁棒的特征 |
| 正则化(L1/L2) | 在损失函数中加惩罚项,限制参数大小 |
| 增加训练数据 | 让模型见到更多样的数据 |
| 数据增强 | 对现有数据做变换(翻转、旋转等)扩充数据集 |
| Early Stopping | 在验证集表现开始变差时停止训练 |
| 减少模型复杂度 | 减少层数或神经元数量 |
什么是欠拟合?
欠拟合(Underfitting):模型在训练数据和测试数据上表现都不好。
就像用一条直线去拟合弯曲的数据——模型太简单,无法捕捉数据中的规律。
欠拟合的典型表现
- 训练准确率和测试准确率都很低
- 模型没有充分学习数据中的规律
欠拟合的原因
- 模型太简单(如用简单线性回归拟合非线性数据)
- 特征不足或不合适
- 训练时间太短
- 正则化过强
解决欠拟合的方法
- 使用更复杂的模型
- 增加有效特征
- 减弱正则化
- 增加训练时间
如何判断?
| 情况 | 训练集表现 | 测试集表现 | 诊断 |
|---|---|---|---|
| 都很好 | 高 | 高 | 正常 |
| 训练好测试差 | 高 | 低 | 过拟合 |
| 都很差 | 低 | 低 | 欠拟合 |
考试要点
- 训练97%、测试48% → 过拟合
- 训练和测试都差 → 欠拟合
- Dropout 能缓解过拟合
- 增加网络层数、神经元、训练轮次会加剧过拟合
- 简单线性回归拟合复杂数据容易欠拟合