机器学习模型在开发完成后很难百分百准确的进行预测,预测值和真实值之间存在的误差即为泛化误差,泛化误差=偏差(Bias平方)+方差(Variance)+数据噪声。如果一个机器学习模型偏差大方差小则模型可能存在欠拟合,如果偏差小方差大则模型可能存在过拟合。
一、偏差和方差
偏差,是指机器学习模型预测的期望值与真实值之间的差,方差是指机器学习模型预测的期望值与预测值之间的差平方和;偏差用于描述模型的拟合能力,方差用于描述模型的稳定性。
偏差和方差是解释机器学习算法泛化性能的一组重要指标,通常情况下,我们往往会期望机器学习模型有较低的偏差和方差,但是偏差和方差往往是此消彼长的关系,我们把这叫做偏差-方差窘境(bias-variance dilemma)。
如下图所示,最上面的实线表示模型泛化误差,下边实线表示偏差,虚线表示方差,在训练机器学习模型时,如果训练不足,模型偏差大,方差小,此时模型存在欠拟合的情况,随着训练的持续,模型对训练数据的拟合程度越来越高,偏差逐渐变小,而方差逐渐增加,泛化误差也逐渐减小,当泛化误差最小时我们可认为此时模型效果达到了最好,随着训练继续持续,偏差继续减小,方差继续上升,泛化误差继续走高,此时模型学习到了不适应于测试数据的特征时,就出现了过拟合。通常情况下,越是简单的模型,偏差越大方差越小;越是复杂的模型,偏差越小方差越大,上述两种情况都会导致泛化误差高,一个好的机器学习模型,偏差和方差不能太高也不能太低,两者比较折中的时候,模型的泛化误差最低,也就是图中泛化误差最低的那个点,效果才会最好。

在模型不断地训练和迭代过程中,模型的偏差和方差通过会出现以下四种情况:
1)低偏差,低方差:这是模型的最好结果,一个好的模型会不断去逼近低偏差和低方差这个结果;
2)低偏差,高方差:这是机器学习模型经常遇到的问题,即过拟合了。模型对训练数据学习的过于好过于细致了,导致其泛化能力差,若遇到测试集,准确度下降的厉害;
3)高偏差,低方差:这往往是机器学习模型训练的初始阶段,欠拟合;
4)高偏差,高方差:这是机器学习训练最糟糕的情况,准确度差,数据的离散程度也差。
二、欠拟合和过拟合
(1)欠拟合
欠拟合(Underfitting)通常指机器学习模型学习的太过简单,不够深入,无法有效学习数据中的关键特征和范式,最终的结果就是模型在训练数据和测试数据上的性能都较差,即存在偏差大方差小的特征。
为了防止欠拟合,可以在训练模型时增加样本量,增加模型复杂度,增加模型特征数,减小模型正则化强度等。
(2)过拟合
过拟合(Overfitting)通常指模型在训练数据上学习的很深入,很好,但在未见过的测试数据上表现较差的情况。过拟合发生的原因是模型过于复杂,能够记住训练数据的细节和噪声,而不是学习数据的通用模式。如果一个模型只能对一组特定的数据有效,换了数据就无效,我们就说这个模型存在过拟合。
为了防止过拟合,可使用更多的样本训练模型;在训练模型时添加正则化项(如L1正则化(Lasso)或L2正则化(Ridge)),来惩罚模型参数的大小,使模型更简单;模型训练时选择最重要的特征进行,降低模型的复杂度;使用交叉验证来估计模型的性能,选择最佳的模型参数;在训练过程中监控验证集的性能,当性能开始下降时停止训练等。
总的来说,欠拟合和过拟合是在实践中经常遇到的问题,正确地选择模型复杂度、正则化方法、特征工程技巧可以帮助我们在训练机器学习模型时有效地避免这些问题,使模型获得更好的泛化性能。