原文:https://machinelearningmastery.com/machine-learning-modeling-pipelines/
应用机器学习通常专注于寻找在给定数据集上表现良好或最好的单一模型。
模型的有效使用将需要输入数据的适当准备和模型的超参数调整。
准备数据、调整模型和转换预测所需的线性步骤序列统称为建模管道。像 Sklearn Python 库这样的现代机器学习库允许正确(没有数据泄漏)和一致地(在评估和预测期间)定义和使用这一系列步骤。
然而,使用建模管道可能会让初学者感到困惑,因为这需要改变应用机器学习过程的视角。
在本教程中,您将发现应用机器学习的建模管道。
完成本教程后,您将知道:
- 应用机器学习关注的不仅仅是找到一个表现良好的模型;它还需要找到适当的数据准备步骤和预测后处理步骤的顺序。
- 总的来说,解决预测建模问题所需的操作可以被视为称为建模管道的原子单元。
- 从建模管道的角度来探讨应用机器学习需要从评估特定模型配置到转换和算法序列的思维转变。
我们开始吧。
机器学习建模管道简介 图片由黄杰提供,版权所有。
本教程分为三个部分;它们是:
- 找到一个熟练的模型是不够的
- 什么是建模管道?
- 建模管道的含义
应用机器学习是发现对给定预测建模数据集表现最佳的模型的过程。
其实不止这些。
除了发现哪个模型在数据集上表现最好之外,您还必须发现:
- 数据转换最好地将问题的未知底层结构暴露给学习算法。
- 模型超参数,产生所选模型的良好或最佳配置。
还可能有额外的考虑,例如转换模型所做预测的技术,如阈值移动或预测概率的模型校准。
因此,通常认为应用机器学习是一个跨数据转换、模型和模型配置的大型组合搜索问题。
这在实践中可能非常具有挑战性,因为它要求一个或多个数据准备方案、模型、模型配置和任何预测转换方案的顺序必须在给定的测试工具上一致且正确地评估。
虽然有些棘手,但通过简单的训练测试分割就可以处理,但是当使用 k 倍交叉验证甚至重复 k 倍交叉验证时,就变得相当难以处理了。
解决方案是使用建模管道来保持一切正常。
管道是数据准备选项、建模操作和预测转换操作的线性序列。
它允许指定、评估步骤序列,并将其用作原子单位。
- 流水线:数据准备和建模步骤的线性序列,可以被视为一个原子单元。
为了阐明这个想法,让我们看两个简单的例子:
第一个示例使用输入变量的数据标准化,并符合逻辑回归模型:
- [输入]、[标准化]、[逻辑回归]、[预测]
第二个示例标准化输入变量,应用 RFE 特征选择,并拟合支持向量机。
- [输入],[标准化],[RFE],[SVM],[预测]
你可以想象其他建模管道的例子。
作为一个原子单元,可以使用首选的重采样方案来评估流水线,例如训练测试分割或 k 倍交叉验证。
这很重要,主要有两个原因:
- 避免数据泄露。
- 一致性和再现性。
建模管道避免了最常见类型的数据泄漏,在这种情况下,数据准备技术(如缩放输入值)应用于整个数据集。这是数据泄漏,因为它与训练数据集共享测试数据集的知识(例如有助于平均或最大已知值的观测值),这反过来可能导致过于乐观的模型表现。
相反,数据转换必须仅在训练数据集上准备,然后应用于训练数据集、测试数据集、验证数据集以及在与模型一起使用之前需要转换的任何其他数据集。
建模管道确保执行的数据准备操作序列是可再现的。
如果没有建模管道,数据准备步骤可以手动执行两次:一次用于评估模型,一次用于进行预测。在这两种情况下,对序列的任何更改都必须保持一致,否则差异将影响模型的能力和技能。
管道确保操作顺序只定义一次,并在用于模型评估或进行预测时保持一致。
Python Sklearn 机器学习库通过 Pipeline 类提供机器学习建模管道。
您可以在本教程中了解有关如何使用此管道应用编程接口的更多信息:
建模管道是机器学习实践者的重要工具。
然而,在使用它们时,必须考虑一些重要的影响。
初学者在使用管道时的主要困惑在于理解管道学到了什么或者管道发现了什么具体的配置。
例如,管道可以使用自动配置自身的数据转换,例如用于特征选择的 RFECV 技术。
- 当评估使用自动配置的数据转换的管道时,它选择什么配置?或者当安装这条管道作为进行预测的最终模型时,它选择了什么配置?
答案是,没关系。
另一个例子是使用超参数调整作为管道的最后一步。
网格搜索将对管线中任何先前变换步骤提供的数据执行,然后将使用该数据搜索模型的最佳超参数组合,然后用数据上的那些超参数拟合模型。
- 当评估网格搜索模型超参数的管道时,它选择什么配置?或者当安装这条管道作为进行预测的最终模型时,它选择了什么配置?
答案又是,没关系。
答案适用于在管道末端使用阈值移动或概率校准步骤的情况。
原因与我们不关心所选模型的具体内部结构或系数的原因相同。
例如,在评估逻辑回归模型时,我们不需要为了选择模型而检查每一轮 k 倍交叉验证中选择的系数。相反,我们专注于它不寻常的预测技巧
同样,当使用逻辑回归模型作为对新数据进行预测的最终模型时,在进行预测之前,我们不需要检查在整个数据集上拟合模型时选择的系数。
我们可以检查和发现模型用作分析练习的系数,但这不会影响模型的选择和使用。
当考虑建模管道时,同样的答案也适用。
我们不关心管道中的数据转换会自动选择哪些功能。当使用网格搜索作为建模管道的最后一步时,我们也不关心为模型选择了哪些超参数。
在所有三种情况下:单一模型、具有自动特征选择的管道和具有网格搜索的管道,我们正在评估作为原子单元的“模型或“建模管道”。
管道允许我们作为机器学习实践者提升一个抽象层次,不太关心算法的具体结果,而更关心一系列过程的能力。
因此,我们可以专注于评估算法在数据集上的能力,而不是算法的产品,即模型。一旦我们有了对管道的估计,我们就可以应用它,并相信我们将获得类似的平均表现。
这是思维的转变,可能需要一些时间来适应。
也是现代 AutoML(自动机器学习)技术背后的哲学,将应用机器学习视为一个大的组合搜索问题。
如果您想更深入地了解这个主题,本节将提供更多资源。
在本教程中,您发现了应用机器学习的建模管道。
具体来说,您了解到:
- 应用机器学习关注的不仅仅是找到一个表现良好的模型;它还需要找到适当的数据准备步骤和预测后处理步骤的顺序。
- 总的来说,解决预测建模问题所需的操作可以被视为称为建模管道的原子单元。
- 从建模管道的角度来探讨应用机器学习需要从评估特定模型配置到转换和算法序列的思维转变。
你有什么问题吗? 在下面的评论中提问,我会尽力回答。