欠拟合和过拟合出现缘由及解决方案

机器学习的基本问题是利用模型对数据进行拟合,学习的目的并不是是对有限训练集进行正确预测,而是对不曾在训练集合出现的样本可以正确预测。模型对训练集数据的偏差称为经验偏差,对测试集数据的偏差称为泛化偏差。模型对训练集之外样本的预测能力就称为模型的泛化能力,追求这种泛化能力始终是机器学习的目标算法

过拟合(overfitting)欠拟合(underfitting)是致使模型泛化能力不高的两种常见缘由,都是模型学习能力与数据复杂度之间失配的结果。“欠拟合”经常在模型学习能力较弱,而数据复杂度较高的状况出现,此时模型因为学习能力不足,没法学习到数据集中的“通常规律”,于是致使泛化能力弱。与之相反,“过拟合”经常在模型学习能力过强的状况中出现,此时的模型学习能力太强,以致于将训练集单个样本自身的特色都能捕捉到,并将其认为是“通常规律”,一样这种状况也会致使模型泛化能力降低。过拟合与欠拟合的区别在于,欠拟合在训练集和测试集上的性能都较差,而过拟合每每能较好地学习训练集数据的性质,而在测试集上的性能较差。在神经网络训练的过程当中,欠拟合主要表现为输出结果的高误差,而过拟合主要表现为输出结果的高方差数据库

图示
网络

欠拟合

欠拟合出现缘由机器学习

  1. 模型复杂度太低
  2. 特征量过少

欠拟合的状况比较容易克服,常看法决方法有函数

  1. 增长新特征,能够考虑加入进特征组合、高次特征,来增大假设空间
  2. 添加多项式特征,这个在机器学习算法里面用的很广泛,例如将线性模型经过添加二次项或者三次项使模型泛化能力更强
  3. 减小正则化参数,正则化的目的是用来防止过拟合的,可是模型出现了欠拟合,则须要减小正则化参数
  4. 使用非线性模型,好比核SVM 、决策树、深度学习等模型
  5. 调整模型的容量(capacity),通俗地,模型的容量是指其拟合各类函数的能力
  6. 容量低的模型可能很难拟合训练集;使用集成学习方法,如Bagging ,将多个弱学习器Bagging

过拟合

过拟合出现缘由性能

  1. 建模样本选取有误,如样本数量太少,选样方法错误,样本标签错误等,致使选取的样本数据不足以表明预约的分类规则
  2. 样本噪音干扰过大,使得机器将部分噪音认为是特征从而扰乱了预设的分类规则
  3. 假设的模型没法合理存在,或者说是假设成立的条件实际并不成立
  4. 参数太多,模型复杂度太高
  5. 对于决策树模型,若是咱们对于其生长没有合理的限制,其自由生长有可能使节点只包含单纯的事件数据(event)或非事件数据(no event),使其虽然能够完美匹配(拟合)训练数据,可是没法适应其余数据集
  6. 对于神经网络模型:a)对样本数据可能存在分类决策面不惟一,随着学习的进行,,BP算法使权值可能收敛过于复杂的决策面;b)权值学习迭代次数足够多(Overtraining),拟合了训练数据中的噪声和训练样例中没有表明性的特征

过拟合的解决方案学习

  1. 正则化(Regularization)(L1和L2)
  2. 数据扩增,即增长训练数据样本
  3. Dropout
  4. Early stopping

正则化测试

在模型训练的过程当中,须要下降 loss 以达到提升 accuracy 的目的。此时,使用正则化之类的方法直接将权值的大小加入到 loss 里,在训练的时候限制权值变大。训练过程须要下降总体的 loss,这时候,一方面能下降实际输出与样本之间的偏差,也能下降权值大小spa

正则化方法包括 \(L0\) 正则、 \(L1\) 正则和 \(L2\) 正则,而正则通常是在目标函数以后加上对于的范数。可是在机器学习中通常使用 \(L2\) 正则:
\[ C = C_0 + \frac{\lambda}{2n} . \sum_i w_i^2 \].net

\(L2\) 范数是指向量各元素的平方和而后求平方根。可使得 \(W\) 的每一个元素都很小,都接近于0,但不会让它等于0,而是接近于0。 \(L2\) 正则项起到使得参数 \(W\) 变小加重的效果,关于它为何能防止过拟合简答的理解为:更小的参数值 \(W\) 意味着模型的复杂度更低,对训练数据的拟合刚恰好,不会过度拟合训练数据,从而使得不会过拟合,以提升模型的泛化能力

数据扩增

这是解决过拟合最有效的方法,只要给足够多的数据,让模型「看见」尽量多的「例外状况」,它就会不断修正本身,从而获得更好的结果

如何获取更多数据,能够有如下几个方法

  1. 从数据源头获取更多数据
  2. 根据当前数据集估计数据分布参数,使用该分布产生更多数据:这个通常不用,由于估计分布参数的过程也会代入抽样偏差
  3. 数据加强(Data Augmentation):经过必定规则扩充数据。如在物体分类问题里,物体在图像中的位置、姿态、尺度,总体图片明暗度等都不会影响分类结果。咱们就能够经过图像平移、翻转、缩放、切割等手段将数据库成倍扩充

Dropout

在训练时,每次随机(如50%几率)忽略隐层的某些节点;这样,咱们至关于随机从 \(2^n\)(n个神经元的网络) 个模型中采样选择模型

Early stopping

Early stopping即是一种迭代次数截断的方法来防止过拟合的方法,即在模型对训练数据集迭代收敛以前中止迭代来防止过拟合

具体作法是,在每个Epoch结束时计算validation data的accuracy,当accuracy再也不提升时,就中止训练。固然咱们并不会在accuracy一下降的时候就中止训练,由于可能通过这个Epoch后,accuracy下降了,可是随后的Epoch又让accuracy又上去了,因此不能根据一两次的连续下降就判断再也不提升。通常的作法是,在训练的过程当中,记录到目前为止最好的validation accuracy,当连续10次Epoch(或者更屡次)没达到最佳accuracy时,则能够认为accuracy再也不提升了。此时即可以中止迭代了(Early Stopping)。这种策略也称为“No-improvement-in-n”,n即Epoch的次数,能够根据实际状况取,如十、20、30……

参考文献
百度百科--欠拟合
百度百科--过拟合
深度学习中过拟合与防止过拟合的方法

相关文章
相关标签/搜索