文章

机器学习问答:模型验证

劳拉马丁内斯Molera


这个问答系列文章将看一个主题,解释的一些背景,回答几个问题,我们听到从MATLAB®和仿真软件®世界杯预选赛小组名单社区。

本专栏都是模型验证,以及一些相关的话题过度拟合和hyperparameter调优。我将总结主题,为什么它是重要的,然后看看四个问题:

  1. 为什么我的模型的精度恶化?
  2. 什么是一个训练数据集和测试数据集的区别?
  3. 验证数据集用于什么?
  4. 我该怎样才能提高我的模型没有过度拟合吗?

模型验证是一个机器学习的基本技术。在正确使用的情况下,它将帮助你评估你的机器学习模型是如何应对新数据。这是有用的在两个方面:

  • 它可以帮助你找出哪些你想使用算法和参数。
  • 它可以防止过度拟合训练中。

当我们方法的数据集的问题,是非常重要的,我们找到合适的机器学习算法来创建我们的模型。每个模型都有自己的优点和缺点。例如,一些算法有更高的对小数据集,而其他的excel和大量的高维数据。出于这个原因,两个不同的模型使用相同的数据集可以预测不同的结果,不同程度的准确性。

找到最好的为您的数据模型是一个互动的过程,涉及测试不同的算法来最小化模型错误。控制机器的参数学习算法的行为被称为hyperparameters。 hyperparameters取决于您选择的值,你可以得到一个完全不同的模型。通过调优hyperparameters的值,你可以找到不同,希望更好,  模型

没有模型验证,很容易优化您的模型,它开始你没有意识到过度拟合。你的训练算法应该调整参数以减少损失函数,但有时它走得太远。当这种情况发生时,该模型overfit——也就是说,它过于复杂,不能用新数据表现良好。我会解决这个问题在第三个问题更深入。

测试你的模型是如何处理新的数据,您可以使用模型验证通过分区数据集和使用一个子集训练算法和剩下的数据来测试它。

因为模型验证不使用所有的数据来构建一个模型,它是一种常用的方法,防止过度拟合训练中。

现在,第一个问题。

如果你想看更多细节功能和语法相关的模型验证和hyperparameter与MATLAB优化,明白了模型构建和评估

第一季度

我的模型和训练数据的关系很好,但是当我给它新的数据结果并不是那么好。我怎么解决这个问题?

这听起来像是你过度拟合模型,这意味着你的模型是完全一致的训练集,但不知道如何应对新的输入或数据。模型响应“太好”你用来训练模型的数据集。

起初,overfitted模型可能看起来非常有前途的由于错误的训练集是非常低。然而,误差测试设置较高,模型变得不那么准确。

最常见的原因为模型过度拟合训练数据不足,所以解决这个问题最好的方法是收集更多的数据和训练模型更好。但你不仅需要更多的数据,您还需要确保这些数据足够代表性模型的复杂性和多样性,所以模型将知道如何应对。

模型验证过度拟合

第二季

我知道数据需要被分成组,但我认为测试和训练数据集的目的是相同的。有什么区别呢?

事实上,测试和训练数据集是不同的。当我介绍模型验证之前,我说过这两个子集模型验证分区数据,让我更加的深入。

模型验证使用随机划分数据不同的子集减少风险的过度拟合模型通过调优模型正确地应对新的输入。两个典型的子集的数据是:

  • 训练集——这个数据是用于培训和适应模型并确定参数。它通常是60 - 70%的数据,需要反映模型的复杂性和多样性。
  • 测试组——这个数据是用来评估模型的性能。这通常是约30 - 40%的数据,而且也需要反映模型的复杂性和多样性。

因为我们需要反映模型的复杂性和多样性在两种数据集,他们需要随机分配。这种方法也将减少风险的过度拟合模型,并给我们一个更准确,但简单的模型来研究产生的结果。

如果我们训练模型与随机选择的一个数据集,该模型将训练数据的特定子集。问题是这个随机数据不能代表其他数据或新数据,我们要应用模型。例如,假设我们分析一个小镇的能源消耗。如果我们使用的数据集进行训练和测试不是随机的,只有周末能源消耗的数据,通常低于工作日,当我们将模型应用于新的数据,如月,它不会是准确的,因为它只代表了周末。

让我用一个示例来说明两个模型的适应训练数据集。我将使用一个基本的例子中发现的机器学习斜坡弯道。在这里,我有一个简单的模型和复杂模型:

简单的模型

84%的准确率

简单的准确性

复杂的模型

100%的准确率

复杂的模型精度

您可以看到复杂的模型适应更好的训练数据和性能100%比84%的简单模型。这将是容易宣布获胜者的复杂模型。然而,让我们看看如果我应用测试结果数据集(培训期间不使用新数据),这些模型:

简单的模型

70%的准确率

简单的精度模型

复杂的模型

60%的准确率

复杂的模型精度

当我比较两种模型的性能,简单的模型的精度从84%下降到70%;然而,变化是更重要的比中40下降被复杂的模型(100%对60%)。总之,这个简单的模型是更好、更准确的分析,它也演示了如何重要的是要有一个测试数据集评估模型。

最后,另一个建议。减少可变性,多轮验证模型的不同分区数据集模型更好的适应你的分析。这种技术被称为k-fold交叉验证了解其他交叉验证的技术

我用的例子是机器学习中发现斜坡弯道。这里有一个片段,培训(2:31):

视频长度是2:31

第三季

我想我只是需要一个训练数据集和测试;有一个验证数据集是必要的吗?我真的需要再次分裂我的数据吗?

穷,误解验证集。这是一个常见的问题。没有一个人(通常是)问题需要训练集和测试集,但并不清楚为什么我们必须分区一套验证。简短的答案是,验证集时使用的调优hyperparameters是否调优是在换句话说,在你完成迭代模型。然而,有时这个词验证设置误用于意味着测试数据集。这里有一个更完整的回答为什么验证数据集是有用的:

  • 验证设置——这个数据集是用来评估模型的性能调优hyperparameters时的模型。这个数据是用于更频繁的评价和用于更新hyperparameters,所以验证间接影响模型。它不是严格的必要调整hyperparameters模型,但它通常推荐。
  • 测试组——这个数据集被用来提供一个公正的最终模型的评估与训练集。这组模型只使用一次完全是训练有素的,不影响模型;只是计算性能。

作为一个总结,一个训练数据集列车不同的算法,并验证数据集比较不同算法的性能(不同hyperparameters),决定哪一个。测试数据集给出了精度、灵敏度和特定模型的性能。

过度拟合图

第四季度

我想要提高我的模型,但我害怕过度拟合。我能做什么?

这是一个很好的问题。在本专栏介绍,我简要地提到hyperparameters控制机器学习算法的行为。我将更深入地进入这个了。

你能想到的hyperparameters像自行车的组件:我们可以改变的东西会影响系统的性能。想象一下你买一辆二手自行车。框架是正确的大小,但自行车可能会更有效的一旦你调整座椅高度,收紧或放松刹车,油链,或者安装了正确的轮胎的地形。外部因素也会影响你的旅行,但要从A到B会更容易优化的自行车。同样,调优hyperparameters将帮助您改善模型。

现在,这是一个机器学习的例子。在一个人工神经网络(ANN), hyperparameters变量,确定网络的结构,如隐藏层的人工神经元的数量和人工神经元的数量在每一层,或者变量定义一个模型是如何训练,如学习速率,这是学习过程的速度。

Hyperparameters定义之前学习过程就开始了。相比之下,安是系数的参数或人工神经元的连接权值,调整训练过程。

神经网络图

典型的神经网络体系结构。

视频长度是43

hyperparameter是一个参数的模型,确定开始前培训或学习过程和外部的模型;换句话说,如果你想改变一个,您需要手动做。自行车座位不会调整自己,你会想做之前引爆;在机器学习模型与验证数据集将被调整。相比之下,其他参数确定在训练过程中训练数据集。

训练和测试所需的时间取决于其hyperparameters模型,和模型,很少有hyperparameters容易验证或适应,所以你可以减少验证数据集的大小。

大多数机器学习问题非凸。这意味着hyperparameters取决于我们选择的值,我们可以得到一个完全不同的模型,通过改变hyperparameters的值,我们可以找到不同的和更好的模型。这就是为什么验证数据集是非常重要的,如果你想重复使用不同的hyperparameters找到最好的分析模型。

如果你想了解更多关于hyperparameters,亚当Filion hyperparameter优化的视频(上图)是一个很好的概述在5分钟。

非凸表面

非凸表面的例子。

Baidu
map