写点什么

实用机器学习笔记十八:过、欠拟合

作者:打工人!
  • 2021 年 12 月 19 日
  • 本文字数:1872 字

    阅读完需:约 6 分钟

实用机器学习笔记十八:过、欠拟合

前言:

本文是个人在 B 站自学李沐老师的实用机器学习课程【斯坦福 2021 秋季中文同步】的学习笔记,感觉沐神讲解的非常棒 yyds。

训练和泛化误差:


  • 训练误差:模型在训练集上的误差

  • 泛化误差:模型在新数据上的预测与真实值之间的误差

  • 实例说明:从过去的考试中预测未来的一场考试

  • 过去的考试考的很好,就比如在备战高考中做了很多往届真题并且做得很好(训练误差)并不能保证在未来的考试中可以得高分(泛化误差

  • 学生 A 通过熟背答案,在做往届真题时,每次都能拿满分。因此在真正高考的考试中遇到了新的题,得分就会很少。

  • 学生 B 在做往届真题时,理解并记住了问题的做题步骤等。因此在真正高考的考试中遇到了新的题,也能随机应变,做的很好。

过拟合和欠拟合:


  • 训练误差很低,泛化误差也很低,代表模型训练的很好,正是想要的结果。


  • 训练误差很高,泛化误差却很低,说明在训练集上学的不好,但是却能在新的样本上预测性能很好,这是出 bug 了吧?举个例子说明一下:训练集是小学三年级的知识,但是真正的场景中都是考小学一年级的知识,就会导致这种情况出现。工业场景中可能会出现,比如:工业场景中,数据集大量用到了数据增强,或者训练集中噪音很多,导致训练误差很大;但是在模型上线后,新的样本噪音就很少,所以泛化误差就会很小。但是我们应该避免这种情况出现。


  • 训练误差很低,但是泛化误差很大,说明模型过拟合了。也就是说在训练集上可以学的很好,但是一遇到新的数据,就无能为力了。说明模型没有学习到精髓的本质,过度地学习训练集的特有特征,并没有学习到数据分布的普遍特征。


  • 训练误差很高,同时泛化误差也很高,说明出现了欠拟合。也就是说在训练集上都没有学习到精髓本质的特征,自然也无法在新数据样本上做出很好的预测了。


过拟合与欠拟合

数据和模型复杂度:


什么情况下会导致模型的欠拟合和过拟合呢?什么是机器学习,实际上就是让模型去拟合数据分布,因此模型的复杂度和数据的复杂度应该相匹配,才能训练出训练误差小,泛化误差又小的模型。


数据和模型复杂度


那么什么是模型复杂度和数据复杂度呢?


模型复杂度:

  • 拟合各种各样函数的能力。从数学上来看,有些数据可能是复杂函数生成的,有些虽然不是函数生成的,但是本质上也可以用复杂的函数去拟合。模型能拟合的函数越复杂,模型就越复杂。

  • 低复杂度的模型很难去拟合训练数据

  • 高复杂度的模型能够很容易去拟合训练数据,甚至可以记住所有的数据特征


  • 在不同类型的算法之间很难去比较模型的复杂度、

  • 比如:决策树和多层感知机之间由于是不同类型的模型,因此无法比较它们之间的模型复杂度


  • 在同一种算法类型中,两个因素决定了模型复杂度

  • 参数的数量。模型的可学习的参数越多,拟合能力也就越强。拿 MLP 来说,神经网络的层数以及每一层的神经元个数都决定了参数的数量

  • 每一个参数值的取值范围。取值范围越大,模型也越复杂

模型复杂度的影响:


这个图是怎么来的呢?是固定住一个量,也就是固定住数据,然后让同一类型的模型(比如都是神经网络),但是不同复杂度的模型都在同一个数据集上训练,测试。两条曲线上的每一个点就代表了不同复杂度模型的训练和泛化误差。


绿色曲线显示:随着模型复杂度的提高,训练误差在不断减小。

蓝色曲线显示:随着模型复杂度的提高,泛化误差先减小够升高。也就是说模型复杂度升高到一定程度后,会出现过拟合。


在泛化误差最小值时对应的模型是最优模型,但是从图中依然可以看到,轻微的过拟合依然存在。


模型复杂度的影响

数据复杂度:


  • 影响数据复杂度的因素:

  • 样本数量。样本数量越多,数据当然越复杂一点

  • 每一个样本包含的元素的数量。比如:一张 50*50 像素的图片要比一张 20*20 像素的复杂一点

  • 时间/空间结构。图片有空间上的特征,句子有时间上的特征。这些肯定要比普通的向量复杂一点

  • 多样性。比如:一个图片分类数据集中,有多少类型,每一张图片上除了类型主题之外,是否有其他物体存在等。

  • 很难区别数据集之间的复杂性。一般从直观上来感觉。


数据复杂度的影响:


从图中可以看出:随着数据的容量增加(数据复杂度提高)泛化误差在下降,但是最后不管如何增加数据样本,简单的模型无法再提高性能了。从两条曲线的起点看,当数据量非常少的时候,简单的模型泛化能力比较好,而复杂的数据模型出现过拟合,泛化能力较弱。


在工业落地时,起初数据量比较小,可以使用简单的模型上线,随着用户的不断反馈,新的数据不断加进来,就应该考虑使用更加复杂的模型进行训练了。


数据复杂度和模型复杂度的影响

模型选择:


  • 根据数据选择复杂度相匹配的模型

  • 目的就是最小化泛化误差

  • 同时考虑商业指标

  • 刚开始选择一种类型的模型,然后选择超参数

  • 比如决策树:树的深度

  • 神经网络:网络架构,网络层数,每一层的宽度,正则化等


发布于: 1 小时前阅读数: 6
用户头像

打工人!

关注

打工人! 2019.11.10 加入

InfoQ年度最佳内容获得者。 InfoQ签约作者 本人打工人一枚,自动化和控制专业入坑人一枚。目前在研究深度强化学习(DRL)技术。准备入坑互联网小白一枚。喜欢了解科技前沿技术,喜欢拍照。

评论

发布
暂无评论
实用机器学习笔记十八:过、欠拟合