过拟合和欠拟合
从模型在不同集合上的表现来看
首先来明确一下过拟合和欠拟合的概念。
- 过拟合(下图中最右侧的图像)
过拟合指的是训练数据拟合程度过高的情况,也就是说模型在训练集上表现的很好,但是在测试集和新的数据集上表现的较差。
- 欠拟合(下图中最左侧的图像)
了解了什么是过拟合,欠拟合也显而易见,当模型在训练集和测试集表现的都不好的时候我们就称这种现象为欠拟合。
从方差和偏差的角度来看
- 偏差(bias)
算法在训练集上的错误率我们可以称之为偏差。
- 方差(variance)
算法在测试集上的表现低于在训练集上的程度我们可以称之为方差。
了解了偏差和方差在算法上的意义我们就可以说如果一个模型有低偏差,高方差便是过拟合,有高偏差,低方差便是欠拟合。
降低过拟合和欠拟合风险的方法
降低过拟合
- 增加数据量。更多的数据可以让模型学习到更多的有效特征,减小噪声的影响,从另一方面上讲,增加数据的数量也起到了减小方差的作用。
- 降低模型的复杂度。
- 神经网络:减少网络的层数,减少每一层网络的神经元个数。
- 树模型:剪枝,降低树的深度。
3. 正则化
- L1:绝对值之和,让一部分特征缩小到0,常用于特征选择。
- L2:平方之和,让特征的系数都进行缩小,使求解稳定快速。
4. 继承学习方法,多模型进行融合。
- Boosting:该类模型中,后一个模型的输入会受到前一个模型的输出的影响。
- Bagging:该模型中,模型之间相互独立,没有过大的影响。
降低欠拟合
- 增加新的特征。
- 增加模型的复杂度。简单的模型学习能力较差,通过增加模型的复杂度可以使模型有更强的拟合能力。
- 减少正则化的系数。正则化是用来防止过拟合的,当模型欠拟合时我们需要有针对的减少他们的系数。