模型验证是机器学习的基础技术。正确使用时,它将帮助您评估机器学习模型将如何对新数据作出反应。这有助于两种方式:
当我们使用手头的数据集来处理问题时,找到正确的机器学习算法来创建我们的模型是非常重要的。每种模式都有自己的优缺点。例如,一些算法对小数据集有更高的容忍度,而另一些算法则擅长处理大量的高维数据。因此,使用相同数据集的两个不同模型可以预测不同的结果,具有不同的精度。
为数据找到最佳模型是一个交互过程,包括测试不同的算法以最小化模型误差。控制机器学习算法行为的参数被调用普遍存在. 取决于您为超参数选择的值,您可能会得到一个完全不同的模型。因此,通过调优超参数的值,您可以找到不同的,希望是更好的 模型。
如果没有模型验证,它很容易将模型调整到它在没有实现它的情况下开始过度装备的程度。您的培训算法应该调整参数以最小化损耗函数,但有时它会走得太远。发生这种情况时,模型变成了overfit也就是说,它过于复杂,不能很好地处理新数据。我将在第三个问题中更深入地讨论这个问题。
要测试您的模型对新数据的工作效果如何,您可以使用模型验证,方法是对数据集进行分区,并使用子集来训练算法,并使用其余数据来测试它。
因为模型验证不会使用所有的数据来建立模型,所以它是在训练期间防止过拟合的常用方法。
现在,第一个问题。
事实上,测试和培训数据集是不同的。当我之前介绍了模型验证时,我讨论了模型验证如何将数据分区分为这两个子集,因此让我潜入其中有点。
模型验证使用随机划分不同子集中的数据通过调整模型来缩短模型以正确响应新输入的风险。两个典型的数据子集是:
由于我们需要在两个数据集中反映模型的复杂性和多样性,所以需要对它们进行随机划分。这种方法也将降低模型过拟合的风险,并为我们提供一个更准确但更简单的模型来产生研究结果。
如果我们用一个非随机选择的数据集训练模型,那么该模型将对该数据的特定子集进行培训。问题是此非随机数据不会表示要将模型应用到的数据或新数据的其余部分。例如,我们正在分析一个城镇的能量消耗。If the dataset we use for training and testing is not random and only has data from the weekend energy consumption, which is generally lower than weekdays, when we apply the model to new data such as a new month, it won’t be accurate since it will only represent the weekends.
让我用一个调整到训练数据集的两个模型的例子来说明这一点。我要用一个基本的例子高精度84%
100%准确性
您可以看到复杂模型更好地适应培训数据,其性能为简单模型的84%。宣布复杂的模型令人诱人的胜利者。但是,如果我将测试数据集(培训期间未使用的新数据)应用于这些模型,让我们看看结果:
70%的准确率
60%的准确性
当我比较两种模型的性能时,我的简单模型的准确性从84%下降到70%;然而,这种变化比复杂模型(100%至60%)所见的40点下降得多。总之,简单的模型对该分析更好,更准确,并且还展示了具有测试数据集的重要性以评估模型。
最后,另一个建议。为了减少可变性,使用数据集的不同分区进行多轮模型验证,以使模型更好地适应您的分析。这种技术叫做K折叠交叉验证.可怜的、被误解的验证集。这是一个常见的问题。没有人(通常!)质疑训练和测试集的必要性,但是我们也不清楚为什么要划分验证集。简单的回答是,在调优超参数以查看调优是否有效时使用验证集——换句话说,在完整的模型上进行迭代。然而,有时这个术语验证设置错误地用于表示测试数据集。关于验证数据集为什么有用,这里有一个更完整的答案:
作为摘要,训练数据集列达我们可用的不同算法,验证数据集比较了不同算法的性能(具有不同的超参数)并决定要采取的算法。测试数据集提供了特定模型的准确性,灵敏度和性能。
这是一个很好的问题。在介绍本专栏中,我简要介绍了超参数控制机器学习算法的行为。我现在会更深入地进入这一点。
你可以把超参数想象成一辆自行车的部件:我们可以改变影响系统性能的东西。假设你买了一辆二手自行车。车架的尺寸是合适的,但如果你调整座椅高度,拧紧或松开刹车,给链条上油,或者根据你的地形安装合适的轮胎,自行车可能会更有效率。外部因素也会影响你的旅行,但是骑着优化的自行车从A点到B点会更容易。类似地,调优超参数将帮助您改进模型。
这是一个机器学习的例子。在一个人工神经网络(ANN), hyperparameters变量,确定网络的结构,如隐藏层的人工神经元的数量和人工神经元的数量在每一层,或者变量定义一个模型是如何训练,如学习速率,这是学习过程的速度。
Quand参数定义前学习过程开始。相反,ANN的参数是调节的每个人造神经元连接的系数或重量在训练过程。
HyperParameter是在开始培训或学习过程之前确定的模型的参数,并且在模型外部;换句话说,如果要更改一个,则需要手动执行此操作。自行车座椅不会自行调整,您将在脱落之前做到这一点;在机器学习模型中,它将使用验证数据集进行调整。相比之下,在培训过程中使用训练数据集确定其他参数。
训练和测试模型所需的时间取决于它的超参数,而超参数较少的模型更容易验证或适应,因此可以减少验证数据集的大小。
大多数机器学习问题都是这样非凸.这意味着,根据我们选择的值,我们可以获得完全不同的模型,并通过更改超级参数的值,我们可以找到不同和更好的模型。这就是为什么验证数据集很重要,如果要迭代不同的超参数,以查找分析的最佳模型。
如果你想了解更多关于超参数的知识,Adam Filion关于超参数优化的视频(上面)是一个很好的概述,在5分钟内。
在一个地方找到所有列。
探索机器学习的例子和教程。
请参阅与Matlab中的构建和分析模型相关的函数和语法。