原文地址:https://www.cnblogs.com/huangyc/p/9686107.html
1. 基本概念
- 偏差:偏差度量了学习算法的期望预测与真实结果的偏离程度, 即刻画了学习算法本身的拟合能力。
- 方差:方差度量了同样大小的训练集的变动所导致的学习性能的变化, 即刻画了数据扰动所造成的影响。
- 欠拟合:模型的经验误差大,模型太简单,在训练的过程中基本没学到有价值的内容,说明模型欠拟合。
- 过拟合:模型学习了太多的训练样本的“个性”(经验误差小),但是对于未知的样本泛化能力差(泛化误差大),说明过拟合。
- 经验误差:模型关于训练样本集的平均误差(也称经验风险)。
- 结构风险:结构风险在经验风险的基础上加上表示模型复杂度的正则化项。
- 泛化误差:模型在新样本集(测试集)上的平均误差。
- 泛化误差=偏差+方差+噪声
-
噪声:描述了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。
偏差和方差
如果模型是低偏差和低方差,那肯定是最好的一个选择。但是偏差和方差在一定程度上是矛盾的。如果偏差降低,那方差可能会相应的升高,如果方差降低,那偏差可能相应升高。所以我们是尽量的寻求偏差和方差的一个平衡点。
下图比较形象的表达偏差和方差的含义。
个人理解:偏差太大,说明模型欠拟合;方差太大,说明模型过拟合。
2. 欠拟合和过拟合
2.1 学习曲线
通过学习曲线来识别模型是否发生了欠拟合、过拟合
横轴为训练样本数量,纵轴为误差
2.2 复杂程曲线
横轴为模型复杂程度,纵轴为误差
上图中:模型在点A处,在训练集以及测试集上同时具有较高的误差,此时模型的偏差较大,模型欠拟合;模型在点C处,在训练集上具有较低的误差,在测试集上具有较高的误差,此时模型的方差较大,模型过拟合。模型复杂程度控制在点B处为最优。
3. 如何解决欠拟合和过拟合
3.1 解决欠拟合
- 增加特征项。
- 添加多项式特征项。
- 减小正则化系数。
- 增加模型复杂度。
3.2 解决过拟合
过拟合问题是机器学习和深度学习里面主要要解决的一个问题。解决过拟合的办法主要有一下列出的。
- 重新做特征工程。
- 增加训练样本数量。
- 降低模型复杂程度。
- 增大正则项系数。
- 采用dropout方法。
- early stoping。
- 减少迭代次数。
- 增大学习率。
- 添加噪声数据。
- 树结构中,可以对树进行剪枝。
以上只是举一些例子,不同的问题还是需要根据不同的情况分析。