1、定义
在机器学习中,过拟合和欠拟合都会使训练好的机器学习模型在真实的数据中出现错误。我们将错误分为偏差和方差两类。
偏差(bias):描述模型输出结果的期望与样本真实结果的差距,即衡量了模型的预测值与实际值之间的偏离关系。
方差(variance):描述模型对于给定值的输出稳定性,即训练数据在不同迭代阶段的训练模型中,预测值的变化波动情况。从数学角度看,可理解为每个预测值与预测均值差的平方和再求平均数。通常在模型训练中,初始阶段模型复杂度不高,为低方差;随着训练量加大,模型逐步拟合训练数据,复杂度开始变高,此时方差会逐渐变高。
综合来看,如果将模型拟合的过程比作打靶,那么偏差就描述了我们对的射击总体是否偏离了我们的目标,而方差则描述了射击准不准。
在左下角的“打靶图”中,假设我们的目标是中心的红点,所有的预测值都偏离了目标位置,这就是偏差;在右上角的“打靶图”中,预测值围绕这红色中心周围,没有大的偏差,但是整体太分散了,不集中,这就是方差。
四个图的意义依次如下:
(1)低偏差,低方差:这是训练的理想模型,此时蓝色点集基本落在靶心范围内,且数据离散程度小,基本在靶心范围内;
(2)低偏差,高方差:这是 深度学习面临的最大问题,过拟合。也就是模型太贴合训练数据了,导致其泛化能力差,若遇到测试集,则准确度下降的厉害;
(3)高偏差,低方差:这往往是训练的初始阶段;
(4)高偏差,高方差:这是训练最糟糕的情况,准确度差,数据的离散程度也差。
2、产生原因
模型的误差=偏差+方差+不可避免的误差(噪音)。一般来说,随着模型复杂度的增加,方差会逐渐增大,偏差会逐渐减小。例如,在给定的学习任务下,在训练不足时,学习器的拟合能力较弱,训练数据的扰动不足以使学习器产生明显变化,此时偏差起着重要的作用,随着学习器拟合能力的加强,偏差越来越小,但是任何一点数据抖动都可以被学习,方差逐渐占据主导,若训练数据自身的非全局特性被学习到了,那么就发生了过拟合。模型的复杂度与方差偏差的变动情况如下图所示:
3、模型正则化
在机器学习领域,最常见的是解决高方差问题,处理高方差的手段一般有:降低模型复杂度;减少数据维度(降噪);增加样本数;使用验证集。最后一个,最最常用的是模型正则化。模型正则化,是对学习算法的修改,限制参数的大小,减少泛化误差而不是训练误差。
(1)L1正则化
所谓L1正则化,就是在目标函数中加了L1范数这一项,使用L1正则化的模型叫做LASSO回归。其操作方法是在损失函数中加入参数绝对值的模型正则化。
L1正则化可以使参数稀疏化,即得到的参数是一个稀疏矩阵,模型的很多参数都是0。这相当于对模型进行了一次特征选择,只留下一些比较重要的特征,提高模型的泛化能力,降低了 过拟合的可能。
(2)L2正则化
除了如L1正则化外,如果用平方和来做正则项,即L2正则项,使用L2正则化的模型叫做岭回归。
L1正则化就是在损失函数后边所加正则项为L1范数,加上L1范数容易得到稀疏解(0比较多),一般来说L1正则化较常使用。L2正则化就是损失后边所加正则项为L2范数,加上L2正则相比于L1正则来说,得到的解比较平滑(不是稀疏),但是同样能够保证解中接近于0(但不是等于0,所以相对平滑)的维度比较多,降低模型的复杂度。