43-为什么要训练数据集与测试数据集

为什么要训练数据集与测试数据集?

  在上一篇博客主要学习了过拟合和欠拟合的概念。在后面的学习中慢慢就会发现机器学习中主要处理的是过拟合问题。

  现在我们仔细观察一下在上一篇博客最后得到的过拟合的曲线。

在这里插入图片描述
  我们说它之所以过拟合,是因为虽然我们学习到的这个曲线使得我们整个样本使用这个曲线进行预测的误差变小了,但是如果有一个新的样本的话,比如下图紫色的点对应的 x x x 坐标大概是 2.5 左右,那么根据我们的这个曲线预测的结果大概是 0.5 左右,显然可以发现这个预测的结果和之前蓝色的样本点相差太大。我们直观的就会觉得这个预测值很有可能是错误的。换句话说,在过拟合这种场景下,虽然这条曲线将原来的样本点拟合的非常好,总体的误差非常的小。但是一旦来了新的样本点,那么它就不能进行很好的预测了。

在这里插入图片描述
  在以上情况下,我们就称我们得到的这个模型的泛化能力是非常弱的。在这里所谓的泛化能力,就是所谓的由此及彼的能力。也就是说我们根据我们已知的这些训练数据得到的这条曲线,可是这条曲线在面对新的数据的时候它的能力却非常的弱,也就是泛化能力非常的差。

  到这里,就可以想象了。我们要训练这个模型目的不是最大程度的拟合这些点,而是为了可以获得一个可以预测的模型,当有了新的样本,新的数据的时候,我们的模型可以很好的给出解答。正因为如此,我们去衡量我们的这个模型对于训练的数据的拟合程度有多好是没有意义的。我们真正需要的是能够衡量我们得到的这个模型的泛化能力有多好

  那在这种情况下,我们应该怎么做呢?

  其实答案非常简单,这个做法我们之前也一直在使用,就是将原始的数据集分成训练数据集和测试数据集。而我们获得这个模型只使用训练数据集,而测试数据对于我们的模型来说就是全新的数据。

在这里插入图片描述
  如果我们训练数据获得的模型面对测试数据也能获得很好的结果的话。我们就说这个模型的泛化能力是很强的。因为它能通过训练数据得到的模型很好的给出测试数据这些新的数据相应的结果。但是如果这个模型面对测试数据,它的效果很差的话,那么这个模型的泛化能力就很弱。

  下面,我们就实际的来看一下对于我们的多项式回归来说,当我们的 d e g r e e degree degree 取不同的值的时候,我们通过训练数据获得的模型对于这个测试数据相应的预测的误差是怎样变化的?


具体实现

下面接着上一篇博客的 J u p y t e r N o t e b o o k Jupyter Notebook JupyterNotebook 接着写:

在这里插入图片描述
在这里插入图片描述

  我们在 N o t e b o o k Notebook Notebook 进行的实验是在实验模型的复杂度。对于多项式回归来说,相当于我们的 d e g r e e degree degree 越大,我们的模型就会越复杂。这种情况下通常我们的机器学习算法来说,是有这样的一个图的。

在这里插入图片描述
  对于测试数据集来说,模型越复杂,模型的准确率就越高。但是对于测试数据集来说,模型复杂度达到一定程度时,模型的准确率就又开始降低了。其实就是从欠拟合到合适再到过拟合的这个过程。其实我们真正要找的就是泛化能力最好的地方。换句话说,也就是对于我们的测试数据集来说模型的准确率最高的地方。

在这里插入图片描述


  具体代码见 42 过拟合和欠拟合.ipynb

  • 10
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值