请查看我的机器学习过程草图

数据挖掘 机器学习 数据清理 预处理 数据插补
2021-10-10 06:12:12

很难找到端到端机器学习过程的概要。作为一个完全的初学者,缺乏信息是令人沮丧的,所以我决定尝试通过查看很多教程来拼凑我自己的过程,这些教程都以略有不同的方式进行。

我希望有一个标准的流程,一旦我适应了它,我可以选择偏离。我想听听你们行业支柱的一些意见。对于初学者来说,这是一个很好的例程吗?

  1. 获取数据
  2. 清洁数据
  3. 将数据拆分为训练和测试数据 ~(80/20)
  4. 另外,对于训练集和测试集:
    1. 规范化数据(连续特征):
      • 标准化(除以标准偏差)
      • 中心(减去平均值)
    2. 估算缺失值
    3. 特征工程
    4. 编码分类变量:
      • 整数编码
      • 一种热编码
      • 目标编码
      • 证据的重量
  5. 如果分类问题,将标签与测试集分开。放在一边。
  6. 选择几个模型。
  7. 对于每个模型,使用 k 折交叉验证:
    1. 在“训练集”上训练基础模型。
    2. 在“验证集”上调整和测试超参数
    3. 保存最佳分数和参数
  8. 比较每个模型在从未接触过的测试数据上的最终分数

  9. 选择得分最高的模型。

编辑:感谢您的大量回复。很多时候,我的问题只得到一个答案或根本没有答案。我很感激花时间帮助初学者。

我已经编辑了上面的步骤以反映下面的精彩答案。我希望这可以帮助其他地方的另一个初学者。

4个回答

这个过程会导致数据泄露分裂需要更早发生。在拆分之前对数据进行规范化意味着您的训练数据包含有关您的测试数据的信息。我会在您的流程图中将拆分放在 3. 处。

我认为您错过的一个常见步骤是估算缺失值我会把它放在特征工程之前。

总的来说,我认为这是一个很好的粗略大纲,适合初学者遵循。它过于简单化并且遗漏了很多内容,但我想你知道这一点,你必须从某个地方开始。

是的,这些是基本步骤。然后在每一步都有更多。如果你想更深入一点,可以阅读机器学习工程的 Andriy Burkov 的这本书

在您的过程中有几点注意事项:

在获取我将放置的数据之前,定义要解决的问题或类似的东西,但也许这个部分是被授予的。

特征工程是 ML 中最重要的事情之一,所以可能花更多的时间在那里会有所帮助。

归一化数据主要有助于线性模型,决策树模型几乎没有影响。

Integer/Label Encoding 不是特别好,有 Target Encoding 和 Weight of Evidence encoding 更好的东西,看看。

12 后“选择得分最高的模型”。也许添加“创建模型集合”并尝试进一步提高准确性。

对于初学者来说,这是一个很好的例程吗?

是的,非常好。

您可以添加:

  • K-fold 交叉验证(“将训练拆分为训练和测试数据”)
  • “选择几个型号”之前的功能选择。