机器学习中防止过拟合的方法

机器学习中防止过拟合的方法

  • 什么是过拟合
  • 过拟合发生的原因
  • 偏差-方差权衡(bias-variance tradeoff)
  • 防止过拟合的方法
    • 神经网络
    • 支持向量机
    • 随机森林

https://www.zhihu.com/question/59201590/answer/1250993433
http://www.cnblogs.com/TenosDoIt/p/3712590.html

什么是过拟合

过拟合(overfitting)是指过于紧密或精确地匹配特定数据集,以致于无法良好地拟合其他数据或预测未来的观察结果的现象。通俗的来讲,就是训练的模型在训练集上的精确度很高,但是在测试集上的精确度却很差的现象。模型泛化能力弱。

过拟合发生的原因

过拟合发生的原因:往往是相对于有限数据而言,使用了参数过多或者结构过于复杂的统计模型。而它的本质,则是训练算法从训练集的统计噪声中不自觉地获取了信息并表达在模型结构的参数中。过拟合往往可以用偏差-方差权衡(bias-variance tradeoff)来解释。当过拟合发生时,模型的偏差小而方差大,导致模型在测试集上的误差变大。

偏差-方差权衡(bias-variance tradeoff)

简单的以下面曲线拟合例子来讲:
机器学习中防止过拟合的方法_第1张图片
直线拟合后,相比原来的点偏差最大,最后一个图完全拟合了数据点,偏差最小;但是拿第一个直线模型去预测未知数据,可能会相比最后一个模型更准确,因为最后一个模型过拟合了,即第一个模型的方差比最后一个模型小。一般而言高偏差意味着欠拟合,高方差意味着过拟合。他们之间有如下的关系:
机器学习中防止过拟合的方法_第2张图片
机器学习中防止过拟合的方法_第3张图片

防止过拟合的方法

常见的机器学习算法,都有不少防止过拟合的方法。常见的是正则项,比如L1和L2正则项。除此之外,根据机器学习算法的不同,过拟合方法也不同,我们在此列举一二。

神经网络

神经网络是深度学习中常用的模型结构。当神经网络模型的结构复杂度增加,过拟合也随之发生。常用的防止过拟合的方法有:

  1. 降低神经网络的复杂性,比如减少模型的层数和减少隐藏神经元的个数等等。
  2. 早停法(early stopping)。早停法是深度学习中防止过拟合的有效方法,它的原理是在每一个(或N个)训练周期结束后,用一个验证集获取测试结果,如果在验证集上发现测试误差上升,则停止训练。最后用停止训练后的权重作为最后的参数。
  3. 丢弃法(dropout)。丢弃法是Hinton提出的一种抑制过拟合的方法,它的原理是在训练过程中,随机丢弃神经网络中的一部分神经元,使得只有部分网络结构得到更新。
  4. 数据增强(data augmentation)。训练深度学习需要大量的训练集,有限的训练集往往会导致模型过拟合。如果采集大量的训练集比较困难,则可以使用数据增强技术,以获取更多的训练集。如果训练集是图片,往往可以使用翻转、裁切、缩放变形、增加噪声等方法。

支持向量机

• 支持向量机(SVM)是传统的监督式学习算法,往往使用核技巧有效地进行非线性分类。支持向量机中常见的防止过拟合方法有:

  1. 使用简单的核函数(kernel function)。相对于训练集而言,如果使用过于核函数,往往会导致过拟合。
  2. 减小软间隔支持向量机中的参数C。当参数C过大时,表示比较注重间隔,要求数据完全分离,可以参见下面SVM数学模型中的参数C:
    机器学习中防止过拟合的方法_第4张图片

随机森林

随机森林(Random Forest)是包含多个决策树的分类器,其输出的类别由各个决策树输出类别的众数决定。随机森林往往不容易发生过拟合,因为它是通过不同决策树的集合来降低模型的方差,但随机森林依旧有可能导致过拟合。常见的防止过拟合方法有:

  1. 减少每个数的复杂度,比如控制每个数的深度。决策树的深度越深,过拟合越容易发生。
  2. 减少构建决策树时使用的特征的数量。随机森林在构建每一个决策树时,往往是随机选取一部分特征来进行训练,减少特征的数量可以增加随机性。

你可能感兴趣的:(python,tensorflow,opencv)