Jason Brownlee 2017年3月17日
我们用于对新数据进行预测的机器学习模型称为最终模型。
在应用机器学习时,如何训练出一个最终模型这可能是大家的一个疑惑。
初学者通常会问以下问题:
这个帖子会消除大家的疑惑。
在这篇文章中,您将会了解如何确定您的机器学习模型,以便对新数据进行预测。
现在让我们开始吧。
Photoby Camera Eye Photography
什么是最终模型?
最终机器学习模型是用于对新数据进行预测的模型。
也就是说,给出新输入数据的例子,然后使用该模型预测输出的值。这可能是一个分类(分配标签)或回归(估实际值)模型。
例如,不管是判断猫还是狗的照片,还是明天的估计销售数量;机器学习项目的目标是获得最佳的最终模型,其中“最佳”由以下因素决定:
在整个项目中,收集数据,花费大量时间;要使用数据准备程序,要使用的算法以及如何对其进行配置。
最终的模型是这个过程的巅峰之作,最后你会发现实际上就是要做预测。
为什么要训练和测试数据集?
划分一个训练和测试数据集是快速评估对您问题的算法性能的一种方法。
训练数据集用于准备一个模型并进行训练的。
我们假设测试数据集是新的数据,其中输出值会在算法中被隐藏。我们从训练模型中收集来自测试数据集的输入数据的预测,并将其与测试集中保留的输出值进行比较。
比较测试数据集上的预测和保留的输出值,使我们能够在测试数据集上计算模型的性能。这是对未知数据做预测时,对算法在该问题上训练的技巧的估计。
当我们评估一个算法时,我们实际上是评估整个算法的所有步骤,包括训练数据如何准备(如按比例放缩),算法的选择(例如KNN)以及如何配置所选择的算法(例如k= 3)。
对预测值的计算的度量是对整个程序技能的估计。
我们对一个算法的评估会依据:
这个过程是一个飞跃,它要求:
测试集上整个程序的估计技能有很多。
事实上,使用训练/测试方法来估计未知数据的程序技能往往具有很大的方差(除非我们有很多数据要划分)。这意味着当它重复训练时,它通常会给出相差很大的结果。
结果是,我们可能不太了解程序实际上对未知数据执行的操作以及一个程序是如何与另一个程序进行比较的。
通常在时间允许的情况下,我们更愿意使用k-fold交叉验证。
为什么我们使用k-fold交叉验证?
交叉验证是另一种对未知数据进行估计的方法。就像随机划分训练集和测试集。
交叉验证法可以在数据集的多个子集上系统地创建和估计多个模型。
这反过来又提供了一系列衡量标准:
当您选择要使用的算法和数据准备程序时,这也有助于对程序进行更细微的比较。
此外,这些信息是非常宝贵的,因为您可以使用均值和差分来对实际中机器学习过程的预期表现给出置信区间。
训练集和测试集划分和k-flod交叉验证都是重抽样方法的示例。
机器学习的应用问题是尝试对未知数据进行建模。
在给定的预测建模问题上,理想模型是在对新数据进行预测时,执行得最好的模型。
我们没有新数据,所以我们必须用统计技巧。
训练集和测试集划分和k-flod交叉验证称为重抽样方法。重抽样方法是对数据集进行抽样和估计未知数量的统计过程。
在应用机器学习的情况下,我们有兴趣估计机器学习在未知数据上的学习过程的技能。更具体地说,预测是通过机器学习过程进行的。
一旦我们可以进行估计,我们则完成了重抽样方法。
他们已经达到目的,就不再需要了。
你现在就准备好确定你的模型了。
您可以通过在所有数据上应用所选的机器学习过程来确定模型。
通过最终的模型,您可以:
那么交叉验证模型和train-test数据集呢?
他们被丢弃了,他们不再被需要了。他们就是用来帮助您选择一个确定的程序来确定模型。
这部分列出了一些你可能会遇到的问题。
为什么不让模型在训练数据集上训练?为什么保持交叉验证模型的最佳模式?
如果你喜欢,你可以这样做。在技能估计的时候重复使用其中一个模型可以节省很多时间和精力。
如果需要几天、几个星期甚至几个月来训练一个模型,这是一个很大的工程。
对所有可用数据进行训练时,您的模型可能会比仅用于估计模型性能的子集数据更好。
这就是为什么我们更愿意在所有可用的数据上训练出最终的模型。
在不同的数据集上训练,模型的性能也会不同吗?
我认为这是关于确定最终模型的一个误区。
换一种说法:
您已经使用重抽样方法回答了这个问题。
如果程序设计得好,则使用train-test或k-flod交叉验证计算的性能测量值适当地描述了对所有可用历史数据进行训练的最终模型的效果有多好。
如果您使用k-fold交叉验证,您将会估算出模型在平均水平上如何“错误”(或相反地,如何“正确”),以及该错误或正确性的预期扩散程度。
这就是为什么您精心设计的测试工具在机器学习中是极其重要的。更强大的测试工具将使您更加依赖于估计的性能。
每次训练模型时,我都会获得不同的分数; 我应该选择分数最高的模型吗?
机器学习算法是随机的,并且这种在相同数据上的不同性能的表现是可以预期的。
重抽样方法,如重复训练/测试或重复k-flod交叉验证将有助于处理方法中有多少变动。
如果是一个真正要解决的问题,您可以创建多个最终模型,并从一个预测集合中获得平均值,以减少差异。
关于这方面我在这篇文章中会谈到更多:
在这篇文章中,你学会了如何训练出最终的机器学习模型。
您已经克服了确定您的模型的障碍,例如:
您是否还有其他我没提及的关于确定最终模型的问题?
在评论中提问,我会尽力帮助。
END.
来源:http://machinelearningmastery.com/train-final-machine-learning-model/
PPV课小组翻译,转载请联系授权。