前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为什么不提倡在训练集上检验模型?

为什么不提倡在训练集上检验模型?

作者头像
用户1085347
发布2018-02-05 15:41:45
1.8K0
发布2018-02-05 15:41:45

在你开始接触机器学习时,通常你会从读取一个数据集并尝试使用不同的模型开始。你可能会疑惑,为什么不用数据集中的所有数据来训练及评估模型呢?

这看上去是合理的。通常我们会有如下的猜测:应该用尽可能多的数据来训练模型;再同一个数据集上评估模型生成报告能评价模型的好坏。

不幸的是,以上的假设是错误的。

在这篇文章中,你会发现证明上述猜测的困难,同时能明白为什么在未知数据上测试模型是很重要的。

在同一数据集上训练和测试模型

假设我们有一个数据集,以 Iris数据集 为例,最适合这个数据集的分类模型是什么?

鸢尾花
鸢尾花

照片由dottieg2007提供,保留版权

最好的模型就是数据集本身。我们从数据集中任意选取一个数据实例,利用这个实例的数据可以在数据集中找到对应的条目,显然每次返回的该实例的类型一定是正确的。

这就是我们在同一数据集上训练和测试模型时所要解决的问题。

我们要求模型对已知数据进行预测,而这些已知数据正是用来构建模型的。显然,解决这个问题的最好的模型正是以上述方式构建查找模型。

描述性模型

在某些情况下,我们确实会用相同的数据集对其进行训练和评估。

我们可能想简化从数据中得到的可预测变量的解释难度。例如,我们可能需要一套简单的规则或决策树模型来更好地描述你的观察结果。

在这种情况下,我们就在构建一个描述性模型。

这些模型可能是很有用的,并且可以帮助我们在项目或业务中更好地了解属性与预测值之间的关联。我们还可以用专业知识来给结果添加意义。

描述性模型的重要局限性在于它只能描述训练数据。你无从知晓模型的预测能力如何。

对目标函数建模

下面考虑一个将数据实例分类为红色或绿色的分类问题。

对目标函数建模
对目标函数建模

照片由seantoyer提供,保留版权

我们假设存在解决这个问题的完美的模型或一个完美的函数,可以将任何数据实例正确地划分为红色或绿色。在一个具体问题中,领域专家对解决这个的最优函数很可能具有很明确的定义。我们想要考虑这一点,并尝试以这个角度作为切入点,最终得到这个结果。

我们想训练一个预测模型,并且希望它的预测能力可以尽可能的接近前面说的最优函数。

我们使用从领域中收集的样本数据来构建我们的最优函数的近似。注意,这不是所有可能的数据,它是所有可能数据的一个样本或子集。如果我们掌握了所有的数据,就没有必要做出预测,因为答案只需查询即可。

我们用来构建近似模型的数据隐含着我们得到最优最优函数所需的信息。利用我们预先收集的数据,我们希望尽可能充分地利用这些信息来建模并构造算法。当然,数据中也包含与获得最优函数无关的信息,比如选择数据导致的误差、扰乱或隐藏信息的随机噪声等。我们需要选择能够克服这些障碍的模型来近似这个最有函数。

框架有助于帮助我们更深入的理解描述性模型和预测性模型之间的区别。

描述性模型与预测性模型

描述性模型只对观测数据进行建模,这意味着我们可以在同一个数据集上对模型进行训练和评估。

预测性模型则是为了解决更复杂的问题:从样本数据中得到最优函数的近似解。我们所期望得到的模型有以下几个特点:所建模型不会对样本数据中的噪声建模,同时模型应该有好的泛华能力,也就是在未观测数据上的效果依然不错。显然,我们只能够估计模型在训练数据以外的数据集上的泛化能力。

最好的描述性数据能够在观测数据集上非常准确,而最好的预测性模型则希望能够在为观测数据集上有着良好的表现。

过度拟合

在训练集上评估预测性模型的不足之处在于你无从得知该模型在未观测数据集上的表现如何。

根据模型在训练集上的准确度来判断模型的好坏往往会选出在未观测数据集上表现不佳的模型。其原因是模型的泛化能力不足。该模型的过度学习训练集上的数据特征,这叫做过度拟合,而过拟合往往是非常隐秘难以察觉的。

例如,我们可能会选择模型准确度不再上升作为停止训练的条件。在这种情况下,会存在一个分水岭,在此之后会呈现出模型在训练集上的准确性持续提高,但在未观测数据上的准确性下降。

你可能会想:“ 那我一边在训练集上测试,一般注意测试集上的效果 ”。这是一个好主意,但由于此时测试数据集已经得到并对训练集有影响,它不再是未观测的数据,

解决过拟合

我们必须在未观测的数据上测试模型来克服过拟合。

解决过拟合
解决过拟合

照片由 Adrian Fallace Design & Photography 提供,保留版权。

我们可以试着用\frac{1}{3}的数据当测试集,\frac{2}{3}的数据当训练集,如果能使用交叉验证就也很好,多次运行交叉验证会得到更好的结果。你可能会愿意多花点时间来得到对未观测数据集上的准确度的更准确的估计。

您可以通过降低模型的复杂度来提高模型的准确性。

以决策树为例,您可以在训练之后进行剪枝(删除分支)。这将减少特定训练数据集中的特化程度,并增加对未观测数据的泛化能力。再比如,在回归任务中,可以使用正则化来限制训练过程中的复杂度(系数的维数)。

总结

在这篇文章中,我们阐述了构建预测性模型就是找到决目标问题的最优函数的近似。

在这一观点下,我们知道仅仅在训练集上评估模型是不够的,在未观测数据集上检验模型的泛化能力才是最好的方法。

上述观点帮组我们理解为什么评估预测性模型的好坏时我们采用划分训练集测试机、交叉验证和多重交叉验证是至关重要。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在同一数据集上训练和测试模型
  • 描述性模型
  • 对目标函数建模
  • 描述性模型与预测性模型
  • 过度拟合
  • 解决过拟合
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档