过拟合(Over-fitting) 和 欠拟合(Under-fitting)

初学机器学习和深度学习的时候,我们常常会遇到 "过拟合" 和 ''欠拟合" 这两个看似不明所以的数学概念,今天我就专门讲一讲它们具体是怎么一回事。

过拟合(Over-fitting) 和 欠拟合(Under-fitting)_第1张图片

拟合(fitting)

要理解过拟合和欠拟合,我们首先要明白什么是 "拟合"。通俗来讲,当我们想要了解平面中样本点所具有的统一规律时,或者说通过一条怎样的光滑曲线可以更贴切地描述黄色样本点时,拟合就是我们要使用的手段或方法。如上面中间图所示,我们如何将一条蓝色的线尽可能多的穿过黄色的样本点,以便尽可能的表示黄色点的共性(一般地要求时让所有的样本点 尽量等可能且均匀的 分布在曲线的两边),这就是拟合的过程。

需要特别注意的一点是,拟合虽然是取样本点进行的,但拟合的最终目的,其实是找到能描述所有数据点(不单单样本点本身)的曲线或公式。这是区分拟合好坏的关键(也是后面谈到的过拟合的问题所在所在!!!)

可见,中间图中的蓝色曲线就非常恰当的描述了黄色样本点的走势,我们就说它 "拟合的恰到好处" (Just right! )。可以假设蓝色曲线公式的二次的 :y= ax^2+b

而左图和右图中的蓝色曲线虽然也做了类似的尝试,但我们总觉得有点 "不太合宜":

左图的蓝色直线显得太过草率,感觉就像随便画了一笔,它只描绘出了直线周边的点,但却忽略了 "两端散落的点" 。这种只拟合了部分点的拟合方式,我们称之为 "欠拟合 (Under-fitting)"。假设蓝色曲线的公式为一次的:y=ax+b。

反之,右图中弯弯曲曲的蓝色曲线几乎穿过了所有的黄色样本点,相比于前两种,看起来它应该是"最完美" (同时也最复杂)的描绘到了所有的样本点,然而问题恰恰就在于这个完美上。一方面,我们这里用到的是样本点,既然是样本点,就表明它只能是代表所有的数据点,但不能涵盖数据的全部可能。可以想象的是,当再有新来的样本点加入到图中时,就很有可能不会落在这条"完美曲线"上了,也就是对所有数据点的通用性不强。另一方面,因着曲线的复杂性,它的表达公式也就相应的复杂,公式越复杂,构建模型和调优时的计算量就会越大。无论对计算机性能还是效率成本,都是很大的负担。这种拟合方式,我们称为,过度拟合,也就是 "过拟合(Over-fitting)"而因为过拟合,不能将样本点的特性去反映整个数据点的特性的现象,我们称为 "泛化能力差"。假设曲线公式为五次方(曲线拐点越多次方越高):y = ax^5+bx^4+cx^3+dx^2+ex+f。

过拟合和欠拟合的产生原因

过拟合和欠拟合的产生都是有原因的,这也跟选择的模型有关,有些模型容易过拟合,有些因为特殊的属性则不容易产生过拟合现象。但总有一些情况,是适用于所有模型的,无论是机器学习还是深度学习。

对于过拟合现象,主要有以下几个常见的原因:

  • 训练集(TriainingSet) 中的样本量太少,代表性差。比如,全部数据集是一堆挤成圆形的点,但是提供的训练集却是一条直线上的点,那么无论怎么对训练集进行拟合,都不会得到圆形的曲线或拟合结果。针对这种情况,只能增加训练集的样本量,提高样本的代表性(让样本的分布尽量跟原数据的分布一致)。
  • 训练模型太复杂,原数据集量级太低。(反之就是欠拟合比如,我们的数据量是固定的1000个,用一个简单的机器学习模型可以很好的拟合,但如果非要用数据量级上百万的深度学习模型来拟合,肯定会过拟合。这里体现出了根据数据选择合适模型的重要性。类比上图,就是右图曲线转中图,从5次曲线换到2次曲线 (对线性模型来说,模型复杂度降低,可以简单的看为公式的次数降低)。

对于欠拟合现象,一般会体现在训练刚开始,参数还没有调好的情况下,常见的原因也有几个:

  • 训练模型太简单,原数据集量级太高。比如,上千万级的训练数据集,用简单的机器学习模型训练。类似上图,拿一次线性曲线函数拟合需要二次曲线的数据。
  • 特征量太少。比如,只用 "身高" 去描述一个人外表的时候,显然太片面,这时候我们需要适当增加 "性别", "体重","三围",以及相关面貌特征。

防止过拟合和欠拟合的方法

减少过拟合:

  • 1. 增加训练集样本量,提高样本的代表性。
  • 2. 如果相比于数据量来说,模型过于复杂,就换用更简单的模型来训练。
  • 3. 深度学习,可以加入dropout方法,即每批次训练减少部分神经元的参与。
  • 4. 引入正则化项(Regularization),包括R1和R2,相当于降低部分样本点的权重,反映在图上就是让曲线少穿过一些样本点。

减少欠拟合:

  • 1. 数据量足够大的情况下,换用更复杂的模型来训练。
  • 2. 相应的增加特征值(考验的主要是对业务的理解)。
  • 3. 如果已经使用正则化,就相应的减少正则化参数,降低它的影响。

以上内容可能会有不正确或不恰当的地方,欢迎各位同学朋友前来指正,谢谢!

你可能感兴趣的:(机器学习)