用机器学习进行模型训练

214 阅读7分钟

欢迎来到我们的《数据科学入门》第六部分。 在本指南中,我们将带你一步一步地完成模型训练过程。由于我们已经完成了困难的部分,实际拟合(也就是训练)我们的模型将是相当直接的。

我们将讨论一些关键技术,这些技术已经成为该领域广泛接受的最佳实践。同样,这篇入门读物旨在对数据科学和机器学习进行温和的介绍,所以我们还不会涉及到细枝末节。我们有很多其他的教程可以做这个。

如何训练ML模型

最后,是时候建立我们的模型了!看起来我们花了很长时间才到这里,但是专业的数据科学家实际上把大部分时间都花在了这一步骤上。

  1. 探索数据。
  2. 清洗数据。
  3. 设计新的功能。

同样,这是因为更好的数据胜过更高级的算法

在本指南中,你将学习如何设置整个建模过程,以最大限度地提高性能,同时防止过度拟合。我们将交换算法,并自动为每个算法找到最佳参数。

分割数据集

让我们从一个关键但有时被忽视的步骤开始。花费你的数据。把你的数据看成是一种有限的资源

  • 你可以用其中的一部分来训练你的模型(即把它输入到算法中)。
  • 你可以用其中的一部分来评估(测试)你的模型。
  • 但是,你不能在这两个方面重复使用相同的数据。

如果你在用来训练你的模型的同一数据上评估你的模型,你的模型可能是非常过拟合的,而你甚至不知道!一个模型应该根据它预测新的、未见过的数据的能力来判断。

因此,你应该有独立的数据集的训练和测试子集。

Train Test Split

训练集用于拟合和调整你的模型,测试集则作为 "未见过的 "数据,用于评估你的模型。

做其他事情之前 ,你应该总是分割你的数据。这是对你的模型性能进行可靠估计的最好方法。分割数据后,在你准备好选择最终模型之前,不要碰你的测试集

比较测试与训练的表现,可以避免过度拟合......如果模型在训练数据上表现很好,但在测试数据上表现很差,那么它就是过度拟合。

什么是超参数?

到目前为止,我们一直在随意地谈论 "调整 "模型,但现在是时候更正式地处理这个话题了。当我们谈论调整模型的时候,我们具体指的是调整超参数

在机器学习算法中,有两种类型的参数。关键的区别是,模型参数可以直接从训练数据中学习,而超参数不能。

Tuning Some Hyperparameters

"别管我。只是随机地按下按钮仔细地调整参数。"

模型参数是定义单个模型的学习属性。它们可以直接 从训练数据中学习

  • 例如:回归系数
  • 如:决策树的分裂位置

超参数表达了算法的 "高层次 "结构设置。它们是在拟合模型之前决定的,因为它们不能从数据中学习。

  • 例如,正则化回归中使用的惩罚力度。
  • 例如,随机森林中包含的树的数量。

什么是交叉验证?

接下来,是时候介绍一个能帮助我们调整模型的概念了:交叉验证。交叉验证是一种 仅使用你的训练数据来获得 模型性能的可靠估计的方法。

有几种交叉验证的方法。最常见的是10倍交叉验证,将你的训练数据分成10个相等的部分(又称折叠),本质上是创建10个微型的训练/测试分块。

Cross-Validation

以下是10倍交叉验证法的步骤。

  1. 将你的数据分成10个相等的部分,或称 "褶皱"。
  2. 在9个折子上训练你的模型(例如,前9个折子)。
  3. 在剩下的一个 "保留的 "折子上评估它。
  4. 执行步骤(2)和(3)10次,每次拿出一个不同的折子。
  5. 对所有10个保留的折子的性能进行平均。

10个保留折叠的平均性能是你的最终性能估计,也称为交叉验证得分。因为你创建了10个小型的训练/测试分割,这个分数通常是相当可靠的。

拟合和调整模型

现在我们已经将数据集分成了训练集和测试集,并且了解了超参数和交叉验证,我们已经准备好拟合和调整我们的模型。基本上,我们需要做的就是对我们想尝试的每一组超参数值执行上面详述的整个交叉验证循环。

高层的伪代码看起来像这样。

For each algorithm (i.e. regularized regression, random forest, etc.):
  For each set of hyperparameter values to try:
    Perform cross-validation using the training set.
    Calculate cross-validated score.

在这个过程结束时,你将有一个针对每组超参数值的交叉验证分数......针对每个算法。

比如说。

Cross-Validated Scores

然后,我们将在每个算法中挑选出最佳的超参数集。

For each algorithm:
  Keep the set of hyperparameter values with best cross-validated score.
  Re-train the algorithm on the entire training set (without cross-validation).

这有点像饥饿游戏......每个算法都将自己的 "代表"(即在最佳超参数值集上训练的模型)送入最终选择。

选择获胜的模型

到现在,你会有一个每个算法的 "最佳 "模型,它已经通过交叉验证进行了调整。最重要的是,到目前为止,你只使用了训练数据。现在是时候评估每个模型,并挑选出最好的一个,饥饿游戏风格。

ML Hunger Games

"我自愿作为贡品!"

因为你已经把你的测试集保存为一个真正的未见过的数据集,你现在可以用它来获得对每个模型性能的可靠估计。

你可以选择各种性能指标。我们不会在这里花费太多时间,但一般来说。

  • 对于回归任务,我们推荐平均平方误差 MSE)平均绝对误差(MAE)
  • 对于分类任务,我们推荐ROC曲线下的面积(AUROC)(数值越高越好)

这个过程是非常直接的。

  1. 对于你的每个模型,对你的测试集进行预测。
  2. 使用这些预测和来自测试集的 "地面真相 "目标变量计算性能指标。

最后,使用这些问题来帮助你挑选获胜的模型。

  • 哪个模型在测试集上有最好的性能?(性能)
  • 它在各种性能指标上表现良好吗?(稳健性)
  • 它是否也有来自训练集的(其中一个)最佳交叉验证分数?(一致性)
  • 它是否解决了最初的商业问题?(获胜条件)

至此,机器学习工作流程中的模型训练步骤就结束了。为了获得更多的实践机会,我们建议查看下面的一些额外资源,或者加入我们的 机器学习加速器课程。

关于模型训练的更多信息

在这里阅读我们的数据科学介绍的其余部分。

The postModel Training with Machine Learningappeared first onEliteDataScience.