机器学习-过拟合与欠拟合(overfitting and underfitting)

通过一个例子来引入过拟合与欠拟合的概念(Stanford)

Who will Repay their Loans?

- A leader hires you to investigate who will repay their loans

  • You are given complete files on 100 applicants

  • 5 defaulted within 3 years
    - A Surprising Finding?

  • All 5 people who defaulted wore blue shirts during interviews

  • Your model leverages this strong signal as well

解释一下
斯坦福大学给出了一个例子:谁能够偿还贷款?
一共有100个申请人,其中五个人三年内不能还清
但巧合的是,这五个人在申请贷款的时候全部穿着蓝色衬衫
因此,机器学习的模型捕捉到了这个明显的特征。

因此,以后只要穿着蓝色衬衫的来贷款,统统拒绝!!

这显然不合理,穿个蓝色衣服招谁惹谁了hhh~~
其实这就是过拟合,机器不应当捕捉这个特征。

概念1. Training and Generalization Errors

  1. Training Errors:model error on the training data----训练错误
  2. Generalization error:model error on new data—泛化错误(就是测试样本的出错)

有个很生动形象的例子解释这二者的关系:一个平时学习很好的同学考试不一定考的很好(训练错误很低,但泛化错误很高),反之则训练错误高,但泛化错误第,但这不太可能hhh。

在这里插入图片描述
如上图所示(按行分析):

  • 训练错误低,泛化错误也低-----说明模型很好
  • 训练错误高,泛化错误低----很奇怪,是不是有bug?
  • 训练错误低,泛化错误高----过拟合
  • 训练错误高,泛化错误高----欠拟合

概念2. Data Complexity

  • Multiple factors matters
  • time/space structure
  • diversity
  • E.g a char vs a pixel(Hard to compare among very different data)

Model Complexity

  • The ability to fit variety of functions
  • Low complexity models struggles to fit training set
  • High complexity models can memorize the training set

通俗来讲,对于数据的复杂性有很多定义,总的来说就是结构复杂,或者样式复杂,比如数据包括:文件数据,文本数据,图片数据,视频数据等。
而且数据之间比较是很困难的,尤其是在两个毫无关系的数据之间比较,比如图片和文本,一个是由像素(pixel)构成,另一个由字符(character)构成。
对于模型复杂度来说,
低复杂度的模型很难去拟合训练集,高复杂度的模型可以更完美的拟合训练集。

在这里插入图片描述
如上图所示(按行分析):

  1. 若数据复杂度较低,同时模型也不复杂,能够适应这样的数据,那么机器学习的效果就比较好。
  2. 若数据复杂度高,但模型简单,那么模型肯定无法适应这种数据,因此会发生欠拟合。
  3. 若数据复杂度低,但模型十分复杂,那么则有可能发生过拟合。
  4. 若数据复杂度高,同时模型的复杂度也能适应数据的高复杂度,那么机器学习的效果就比较好。

在这里插入图片描述
模型复杂度对于过拟合和欠拟合的影响,上图可以很形象的解释。
横轴表示模型复杂度,纵轴表示训练错误与泛化错误。
从图中不难看出:

  1. 在模型复杂度很低的情况下,训练错误和泛化错误都很高,同时处于欠拟合状态,这很好理解,原因就是模型太过于简单。
  2. 随着模型复杂度不断升高,模型逐渐趋于完善,那么训练错误会不断降低,但泛化错误不一定,就像本文开篇的例子,模型将贷款用户的衣服颜色作为特征尽心学习,那么结果会适得其反。
  3. 因此会有一个拐点,在这个拐点上的模型是最佳的,但注意:及时在最优条件下,过拟合现象也不能消除,因为模型还是会出现错误。

在这里插入图片描述
Model Complexity vs Data complexity

当选取一个较为简单的模型(Simple mode—blue line),那么随着数据复杂度提升,泛化错误会逐渐降低,但是收到模型的限制,及时数据越来越具体,复杂度越来越高,那么错误也不会再降低。

因此,就需要引入更为复杂的模型(complex model—green line)
从此图分析也可以得出一些比较有意思的结论:

  1. 在数据复杂度较低的情况下,复杂的模型,泛化错误不一定低。
  2. 但随着数据复杂度不断提高,越复杂的模型一定能够越适应复杂的数据。
  3. 在数据复杂度达到某个量级,复杂的模型就可以超过简单的模型。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>