机器学习之欠拟合和过拟合(一)

1.欠拟合(underfitting)与过拟合(overfitting)

在机器学习中,咱们的主要思想是经过对数据集的学习来生成咱们的假设模型。在对数据集进行拟合的过程当中,咱们可能会遇到欠拟合和过拟合的问题。以身高预测的例子为例,这里给出7-18岁男生的身高标准(数据来源:7 岁~18 岁儿童青少年身高发育等级评价),如图1:html

7-18岁男生的身高标准

将中位数随年龄的变化绘制成散点图,如图2:算法

图2

由图2中的散点可知,先开始身高随年龄几乎成一条直线关系,后来增加率逐渐降低。若是咱们采用线性函数取拟合,这显然是不合理的(线性函数的增加率不会发生变化)。若是咱们用一个多项式函数去拟合,虽然这个多项式可能会很复杂,可是咱们总可能找到一个多项式函数使得该函数完美通过图中的散点,如图3:机器学习

图3

如今,咱们来看一下线性拟合(图3红线):年龄大于18岁之后,按照散点图的趋势,身高应该逐渐趋于稳定,可是线性拟合的结果是身高随年龄增加依旧保持很高的增加率。显然这并非一种很好的拟合方式,对于这种状况,咱们称之为欠拟合,即高误差(high bias)。函数

接下来,咱们来看一下“完美的多项式拟合”(图3蓝线):蓝线的损失函数为0,在回归问题中,咱们求解参数矩阵的方法就是尽量地让损失函数的值最小化。这是否意味着当损失函数为0时,这时咱们的学习模型最好呢?并非这样子的。在”完美的多项式拟合“当中,咱们的假设函数一般状况下会很是复杂,通常会涉及到高次多项式,函数图像会很是扭曲。以五次多项式为例,即使咱们的自变量之间的误差数量级为10,但对应输出结果的误差会达到\(10^5\)数量级。图3的例子可能还不明显,图4很好的说明了“完美拟合”的扭曲状况。对于这种为了最小化损失函数,而将假设函数“过分扭曲”的状况,咱们称之为过拟合,即高方差(high variance)。图4学习

2.误差(bias)和方差(variance)
2.1误差和偏差的概念

误差(bias),是不一样数据集在特定模型上预测值的指望与实际值之间的差值。若是平均预测值与实际值相差甚远,则误差较高。高误差致使算法没法正确表示输入和输出变量之间的相关关系。当模型具备较高的误差时,则表示该模型过于简单,没法捕获数据的复杂性,所以没法拟合数据。测试

方差(variance),指的是不一样数据集在特定模型上的预测值的方差。当模型在训练后的数据集上表现良好但在未训练的数据集(例如测试数据集或验证数据集)上表现不佳时,就会发生方差。 方差反映了预测值与实际值之间的分散程度。高方差会致使过分拟合,这代表该算法对训练数据中存在的随机噪声也进行了建模。当模型具备较高的方差时,该模型将变得很是复杂,并将“完美拟合”训练集的数据点。 当高方差模型遇到还没有学习的其余数据点时,就没法作出正确的预测。大数据

图5

图5显示了误差和偏差,其中蓝色点表示咱们的预测值,红色点表示咱们的真实值。能够看到,误差越高,预测值离真实值越远;方差越高,预测值越分散。spa

2.2.用数学公式表示误差和偏差

咱们用\(Y\)表示咱们要预测的值(样本真实值),\(X\)表示咱们的自变量。考虑到样本数据实际上是采样,\(Y\)并非真实值,假设真实模型是\(f\),则有这样的关系:\(Y=f(X)+\epsilon\),其中\(\epsilon\)表示噪音,服从均值为0的正态分布,即\(\epsilon\sim N(\mu,\sigma_\epsilon)\)。用\(\hat f\)来表示咱们的模型(即拟合函数),则咱们的预测值为\(\hat f(X)\),则在点\(x\)处的平方偏差的指望为:htm

\[\begin{align}Err(x)& =E\left[(Y -\hat f(x))^2\right] = E\left[(\epsilon + f(x) -\hat f(x))^2\right]\\&=E[f(x)^2] + E[\hat f(x)^2] + E(\epsilon^2) -2E[f(x)]E[\hat f(x)]-2E(\epsilon)E[f(x)]-2E(\epsilon)E[\hat f(x)]\\& = f(x)^2+(E[\hat f(x)])^2 + Var[\hat f(x)] -2f(x)E[\hat f(x)] + Var[\epsilon] + E(\epsilon) \\& = \left(E[\hat{f}(x)]-f(x)\right)^2 + E\left[\left(\hat{f}(x)-E[\hat{f}(x)]\right)^2\right] +\sigma_e^2\\&= \mathrm{Bias}^2 + \mathrm{Variance} + \mathrm{Irreducible\ Error} \end{align}\]blog

注意:\(f(x),\hat f(x), \epsilon\)三者独立,且\(f(x)\)不是变量,是固定值。因此\(E[f(x)] = f(x),E[f(x)^2] = f(x)^2\)

偏差的指望值 = 预测值相对真实值的误差的平方 + 模型预测值的方差 + 噪音的方差

上式中的第三项,为不可减小的偏差,是真实模型和样本值的关系中的噪声项,任何模型都没法从根本上减小噪声项。 给定真实模型和无穷大数据进行校准,理论上能够将误差项和方差项都减小到0。可是,在模型和有限数据不完善的现实状况下,须要在最小化误差和最小化方差之间进行权衡 。

关于误差和方差的更多内容能够参见:

误差Bias和方差Variance--机器学习中的模型选择(中文)

Understanding the Bias-Variance Tradeoff(英文)

3.解决方法

模型的效果一般是:方差小,误差小 > 方差小,误差大 > 方差大,误差小 > 方差大,误差大。因此,咱们尽可能减小模型的误差和方差。若是出现了欠拟合和过拟合的状况,咱们应该怎么解决呢?

对于欠拟合而言,咱们有以下解决方案:

  1. 增长新的特征,能够考虑加入进特征组合、高次特征,来增大假设空间
  2. 采用非线性模型,好比核SVM 、决策树、DNN等模型
  3. Boosting,Boosting 每每会有较小的 Bias,好比 Gradient Boosting 等
  4. 若是已正则化,尝试减小正则化程度\(\lambda\)

对于过拟合而言,咱们有以下解决方案:

  1. 交叉检验,经过交叉检验获得较优的模型参数
  2. 特征选择,减小特征数或使用较少的特征组合,对于按区间离散化的特征,增大划分的区间
  3. 正则化,经常使用的有 L一、L2 正则
  4. 若是已正则化,尝试增大正则化程度\(\lambda\)
  5. 增长训练数据能够有限的避免过拟合
  6. Bagging,将多个弱学习器Bagging 一下效果会好不少,好比随机森林等

参考连接:

误差Bias和方差Variance——机器学习中的模型选择

Understanding the Bias-Variance Tradeoff

机器学习防止欠拟合、过拟合方法

相关文章
相关标签/搜索