训练机器学习 (ML) 模型是一个向机器学习算法提供可以学习的训练数据的过程。机器学习模型可以通过多种方式进行训练,通过快速处理大量数据、识别模式、发现异常或测试相关性,这些对于人类在独立的情况下很难做到。
什么是模型训练?
模型训练是数据科学开发生命周期的核心,数据科学团队致力于将最佳权重和偏差拟合到算法中,以最小化预测范围内的损失函数。损失函数定义了如何优化 ML 算法。数据科学团队可能会根据项目目标、使用的数据类型和算法类型使用不同类型的损失函数。
当使用监督学习技术时,模型训练会创建数据特征和目标标签之间关系的数学表示。在无监督学习中,它在数据特征本身之间创建数学表示。
模型训练的重要性
模型训练是机器学习的主要步骤,产生一个可以验证、测试和部署的工作模型。模型在训练期间的性能最终将决定其最终投入最终用户应用程序时的工作效果。
训练数据的质量和算法的选择都是模型训练阶段的核心。在大多数情况下,训练数据被分为两组进行训练,然后进行验证和测试。
算法的选择主要由最终用例决定。然而,始终需要考虑其他因素,例如算法模型复杂性、性能、可解释性、计算机资源要求和速度。平衡这些不同的要求可能会使选择算法成为一个复杂而复杂的过程。
如何训练机器学习模型
训练模型需要一个系统的、可重复的过程,以最大限度地利用可用的训练数据和数据科学团队的时间。在开始训练阶段之前,您需要首先确定问题陈述、访问数据集并清理要呈现给模型的数据。
除此之外,您还需要确定将使用哪些算法以及它们将使用哪些参数(超参数)运行。完成所有这些后,您可以将数据集拆分为训练集和测试集,然后准备模型算法进行训练。
分割数据集
您的初始训练数据是有限的资源,需要仔细分配。其中一些可用于训练您的模型,其中一些可用于测试您的模型 - 但您不能在每个步骤中使用相同的数据。除非给模型提供了一个它以前没有遇到过的新数据集,否则你无法正确测试模型。将训练数据拆分为两个或多个集合可以让您使用单一数据源训练并验证模型。这使您可以查看模型是否过度拟合,这意味着它在训练数据上表现良好,但在测试数据上表现不佳。
分割训练数据的常见方法是使用交叉验证。例如,在 10 倍交叉验证中,数据被分为十组,允许您训练和测试数据十次。去做这个:
- 将数据分成十个相等的部分或折叠。
- 将其中一个折叠指定为保留折叠。
- 在其他九个折叠上训练模型。
- 在固定折叠上测试模型。
重复此过程十次,每次选择不同的折叠作为保留折叠。十次保留折叠的平均性能是您的性能估计,称为交叉验证分数。
选择要测试的算法
在机器学习中,有数千种算法可供选择,并且没有确定的方法可以确定哪种算法最适合任何特定模型。在大多数情况下,您可能会尝试数十种(如果不是数百种)算法,以便找到能够产生准确工作模型的算法。选择候选算法通常取决于:
- 训练数据的大小。
- 所需输出的准确性和可解释性。
- 所需训练时间的速度,与准确性成反比。
- 训练数据的线性。
- 数据集中的特征数量。
调整超参数
超参数是数据科学团队在模型组装和训练之前设置的高级属性。虽然许多属性可以从训练数据中学习,但它们无法学习自己的超参数。
例如,如果您使用回归算法,模型可以通过分析数据本身确定回归系数。然而,它不能决定用于规范过多变量的惩罚强度。另一个例子,使用随机森林技术的模型可以确定决策树将在哪里分裂,但需要预先调整要使用的树的数量。
拟合和调整模型
现在数据已准备就绪,模型的超参数也已确定,是时候开始训练模型了。该过程本质上是使用您决定探索的每组超参数值循环不同的算法。去做这个:
- 拆分数据。
- 选择一种算法。
- 调整超参数值。
- 训练模型。
- 选择另一种算法并重复步骤 3 和 4..
接下来,选择要尝试相同算法的另一组超参数值,再次交叉验证并计算新分数。尝试完每个超参数值后,您可以对其他算法重复这些相同的步骤。
将这些试验视为田径预赛。每个算法都展示了它可以使用不同的超参数值做什么。现在您可以从每个算法中选择最佳版本并将其发送到最终比赛。
选择最佳型号
现在是时候测试每种算法的最佳版本,以确定哪种算法可以为您提供最佳的整体模型。
- 对您的测试数据进行预测。
- 在模型训练期间确定目标变量的基本事实。
- 根据您的预测和真实目标变量确定性能指标。
- 使用测试数据运行每个决赛模型。
测试完成后,您可以比较它们的性能以确定哪些模型更好。总冠军应该在训练和测试中表现良好(如果不是最好的话)。它还应该在其他性能指标(例如速度和经验损失)上表现良好,并且最终它应该充分解决或回答问题陈述中提出的问题。
模型训练的系统方法
对于任何计划大规模构建成功的机器学习模型的组织来说,使用系统且可重复的模型训练过程至关重要。其核心是将所有资源、工具、库和文档放在一个企业平台中,这将促进而不是阻碍协作。