机器学习:过拟合和欠拟合

        在机器学习中有两个重要的概念——过拟合和欠拟合。它们是模型泛化性能低下的具体表现。过拟合和欠拟合的发生都会导致我们的机器学习模型在做推理时无法达到让人满意的准确率。本文就将具体讲述何为过拟合和欠拟合以及预防的途径。

1.错误率、精度和误差

        机器学习模型需要在一定的样本中寻找规律,这样的过程称为训练。训练完毕的模型可以对其没有遇到过的样本做出一定的推理。推理的好与坏可以用错误率来表示。若现有m个样本,模型在对其中a个样本做推理时出错,此时,错误率为:

E=\frac{a}{m}

相应地,我们还有精度的概念。精度的表达式是:

A=(1-\frac{a}{m})\times 100%

        对于一个模型,我们希望它的精度越高越好。更一般地,我们引入误差的概念。误差是指模型的实际预测输出与样本的真实输出之间的差距。模型对于训练集的误差称为训练误差或经验误差。但我们关注的是模型对所有样本组成的集合做推理的精度。在训练模型时所用的训练集是所有样本的子集。模型在训练集之外的样本中的表现好坏称为模型的泛化能力。模型的泛化能力越强,泛化误差越小,模型的表现就越好。然而,对于训练集之外的样本,我们从未见过,学习器也没见过。我们能做的就是努力训练模型,使得其做到经验误差最小化。得到一个经验误差很小的学习器并不是一件难事,甚至做到经验误差为0都是有可能的,然而这样的模型的泛化误差却不一定也小,实际上,几乎没有经验误差的学习器在训练集之外的样本上的表现往往很差。

2.过拟合和欠拟合

        产生这样的原因有一种较为直观的解释方式。经验误差很小,泛化误差较大,就好比一个学生对于课本上的例题掌握得很不错,但是缺乏举一反三的能力,在考试中或者解决实际问题的过程中表现很差,过于“教条主义”,“学得太死”。对应到学习器上,这样的原因在于学习器对训练集样本中的特征进行处理时,将一些本不重要的特征误认为非常重要,或者是在训练集样本中总结出了一些训练集样本普遍具备而训练集之外的样本具有得不多的“共同之处”,将这些共同点作为了从特殊到一般的推理的判据。尽管这些特征在我们看来并不直观,并不重要,但机器认为它很重要,因为它帮助机器成功实现了在训练集样本上的好表现。这就是过拟合

        与过拟合对应,欠拟合意味着学习器没有总结出足够的特征,将一些实现决策的必要条件当成了充要条件。

        这里有一个较为直观的过拟合例子:

机器学习:过拟合和欠拟合_第1张图片

机器学习:过拟合和欠拟合_第2张图片

        这是一个简单的分类demo,我们的目标是在坐标图中进行一定次数的分割,使得坐标上的颜色点位于划分的对应颜色区域内。关于参数的调整,我们可以认为这里的num_neurons值代表在图像上最多“割几刀”。上图是当神经元数量为5时的实验结果,可以看出,如图所示的黑色笔迹标注出的绿点并没有被正确分类。将图中已经存在的点作为训练集,这个学习器的经验误差并不为零。但当我们像下面这样设置参数时,实验结果变成了这样:

机器学习:过拟合和欠拟合_第3张图片

机器学习:过拟合和欠拟合_第4张图片         可以看到,刚才关注的离群点被单独分出了一个区域。但如果现在在图中新加一些点,新增的红色点出现在已有红点的附近,新增的绿点出现在已有绿点的附近。那么我们可以推断,在那个离群的绿点附近新增的红点会比新增的绿点多得多,前面的划分方式的误差会更小(因为有更多的红点落在了红色范围内,绿点占少数)。如果我们这时候来看区域划分的精度,不难得出结论:在这个例子中,神经元数量在一定范围内时,神经元数少的模型的泛化能力更强。神经元数量过多的模型出现了过拟合现象,泛化能力反而变弱。

        在《机器学习》一书中也给出了关于过拟合和欠拟合的形象化例子。

机器学习:过拟合和欠拟合_第5张图片

        这样我们对过拟合和欠拟合的感受就更直观了。 

3.预防措施

如何避免欠拟合

        增加新特征,可以考虑加入进特征组合、高次特征,来增大假设空间;

        添加多项式特征,这个在机器学习算法里面用的很普遍,例如将线性模型通过添加二次项或者三次项使模型泛化能力更强;

        减少正则化参数,正则化的目的是用来防止过拟合的,但是模型出现了欠拟合,则需要减少正则化参数;

        使用非线性模型,比如核SVM 、决策树、深度学习等模型;

        调整模型的容量(capacity),通俗地,模型的容量是指其拟合各种函数的能力;

        容量低的模型可能很难拟合训练集;使用集成学习方法,如Bagging ,将多个弱学习器Bagging。

如何避免过拟合

        在神经网络模型中,可使用权值衰减的方法,即每次迭代过程中以某个小因子降低每个权值。

        选取合适的停止训练标准,使对机器的训练在合适的程度;

        保留验证数据集,对训练成果进行验证;

        获取额外数据进行交叉验证;

        正则化,即在进行目标函数或代价函数优化时,在目标函数或代价函数后面加上一个正则项,一般有L1正则与L2正则等。

你可能感兴趣的:(机器学习,人工智能,神经网络,深度学习)