AutoML 的工作原理

提供了与机器学习 (ML) 工程相关的常规过程或工作流。 典型 ML 工作流从识别业务问题和格式化问题语句或提问问题开始。 接下来的一系列步骤包括:数据准备(或预处理)、要素工程、选择合适的算法和模型训练、超参数调整和模型评估。 这是一个迭代过程,通常只有经过多次迭代和试验才能实现最佳模型。

AutoML 算法

要识别最适合数据的模型,需要在整个 ML 过程中花费大量时间、精力和专业知识。 使用 AutoML 进行训练工具可以使整个工作流自动化,并使用适合数据的最佳超参数集确定最佳算法。 此实施的构建基础为名为 mljar-supervised 的开源实施。 以下部分更详细地描述了 ML 过程中的每个步骤。

使用 AutoML 工作流进行训练

使用 AutoML 进行训练工具可自动执行以下操作:

  1. 数据预处理 - 成功的 ML 工程需要采集高质量的输入数据来解决特定问题。 这些数据可能来自不同的数据源,可能需要合并在一起。 采集和合成数据后,需要对其进行清理和去噪,以确保 ML 算法可以使用该数据进行有效训练并从中学习。 此步骤通常既耗时又乏味,并且可能需要特定领域的丰富知识和经验。 数据清理可能涉及识别和处理缺失值、检测异常值、校正错误标记数据等,所有这些过程都可能需要 ML 专业人员大量的时间和精力。 以下提供了这些预处理步骤:

    • 移除异常值 - 异常值是与其余数据点不同的数据点。 导致这些异常值的原因包括数据输入错误、数据测量错误或合理相异性。 不管是哪种原因,都需要从数据中移除异常值,因为它们可能在训练阶段混淆模型。 解决异常值的常用方法是手动校正条目或从数据集中删除条目。
    • 填充缺失值 - 数据集中的某些列可能存在缺失值。 如果训练数据中缺少条目,则无法训练机器学习模型。 为确保数据集中不存在缺失条目,请通过数据填充过程,使用有效数据填充缺失条目。 填充这些缺失条目的策略包括添加最常见的值或添加新值以突出显示数据缺失。 对于数值数据,策略还包括使用缺失数据列中所有条目的平均值或中位数。 目前,这可以通过运行填充缺失值工具来确定。 填充缺失值工具不仅提供了使用列中的全局统计数据进行填充的功能,还提供了使用空间策略(例如局部相邻要素、时空相邻要素)或时间策略(例如时间序列值)进行填充的功能。
    • 数据缩放和归一化 - 在训练 OLS(残差)等线性模型机器学习模型时,核心假设之一是被训练的数据为正态分布的;也就是说,它遵循钟形曲线。
      正态分布的数据

      在使用线性模型之前,需确保数据集中的每一列都是正态分布的。 如果某一列不是正态分布,则通常会对数据应用变换以将其变换为正态分布。

      确保数据集中的所有列都具有相同的比例,这样模型就不会关注值落在较大比例中的列。 这是通过在数据集上应用缩放技术来完成的。

      虽然上述内容可能适用于线性模型,但其他算法,如逻辑回归,特别是基于树的模型(如决策树、极端树、随机森林、XGBoost、LightGBM)不假设任何正态性,对比例差异更稳健,或者为偏态分布等。

    • 将类别数据转换为数值 - 大多数机器学习模型都要求用于训练的数据采用数值形式。 它们不能与其他数据类型配合使用。 将 StateCountryCityLand cover categoryConstruction typeDominant political party 等非数值列转换为数值。 用于将类别数据转换为数值的技术包括标注编码和一热编码。

  2. 要素工程和要素选择 - 模型训练过程中使用的列称为要素。 在模型学习过程中这些要素的实用性各不相同。 在某些要素可能没有用的情况下,当从数据集中移除要素时,模型将得到改进。

    递归要素消除和随机要素技术等方法有助于确定数据集中要素的实用性,而在此类方法中,通常会移除无用的要素。

    在某些情况下,将多个要素组合成一个要素可以改进模型。 此过程称为要素工程。

    除了通过组合输入中的多个要素获得的新要素外,该工具还会在使用高级选项时创建名称从 zone3_idzone7_id 的空间要素。 这些新要素是通过将输入训练要素的位置分配给多个(最多五个)不同大小的空间格网并使用格网 ID 作为名为 zone3_idzone7_id 的分类自变量来生成的。 这为模型提供了相关的空间信息,并帮助模型从可用数据中了解更多信息。

  3. 模型训练和模型选择 - 在模型训练步骤中,ML 专业人员根据问题和数据的特征选择合适的机器学习算法。 然后他们开始训练模型以适应数据的迭代过程,这通常包括试验几种不同的 ML 算法。 这些算法中的每一个都可能有许多不同的超参数,这些超参数是由 ML 专业人员手动指定的值,它们可以控制模型学习的方式。 然后调整这些超参数,以提高算法的性能并获得更好的结果。 这是一个迭代过程,ML 专业人员需要具备专业知识并花费一些时间。 不同的算法或统计模型包括线性回归和逻辑回归,其他机器学习模型包括决策树、随机森林以及较新的增强模型,如 LightGBM 和 XGBoost。 尽管 LightGBM 和 XGBoost 在几乎所有数据集上都优于大多数其他模型,但很难预测哪些模型会在给定数据集上运行良好,因此您必须尝试所有模型以比较它们的性能,然后再决定最适合数据的模型。 这意味着模型拟合数据的 MSE、RMSE、MAE、MAPE 值较低,对于回归问题,R2、Spearman、Pearson 得分较高,Logloss 最低;对于分类问题,AUC、F1 得分较高。

    在大多数情况下,将多个模型组合为一个模型并从该组合模型中获取输出优于单个模型的结果。 这一步称为模型集成。

  4. 超参数调整 - 尽管前面的大部分步骤都是迭代的,但训练机器学习模型时最困难的步骤通常是超参数调整。

    超参数可以被视为每个模型附带的杠杆。 用于训练随机森林模型的超参数与用于训练 LightGBM 模型的超参数不同。 了解这些超参数将帮助您理解模型。

  5. 模型选择 - ML 工作流的最后一步是模型评估,可以在其中验证经过训练和调整的 ML 算法能否很好地概化到未拟合的数据。 这种看不见的数据通常被称为验证集或测试集,并与用于训练模型的其余数据分开。 最后一步旨在确保 ML 算法对新数据生成合理预测准确性。

通过查看整个 ML 工作流可以清楚地看到,每一步都会发生不同程度的人工输入、决策和选择。

  • 是否收集了适当的数据来解决问题,这些数据是否足够?
  • 在数据环境中,哪些表示异常值?
  • 如果发现缺失值,可以使用什么进行替换?
  • ML 模型中应包含哪些要素?
  • 应该使用哪种 ML 算法?
  • 模型可接受哪种性能水平?
  • 给定模型的最佳超参数组合是什么?

仅最后一个决策就可能涉及数百甚至数千个可以迭代的超参数组合。 再加上多种不同要素工程方案以及多种不同 ML 算法的训练和调整,这会导致整个过程变得难以管理且效率低下。 此外,ML 工作流中的几个步骤需要专家对数据科学技术、统计学和机器学习算法的技术理解。 因此,设计和执行 ML 工程可能非常耗时、需要执行大量工作、成本高昂,并且通常高度依赖训练有素的 ML 专业人员和数据科学家。

在过去的十年中,机器学习在其应用范围和新研究的数量方面飞速增长。 这种增长背后的最大驱动力包括 ML 算法和方法本身的成熟性、算法学习海量数据的生成和传播、运行算法的大量低成本计算以及在企业中关于 ML 算法可以解决复杂数据结构和问题的意识的提高。

许多组织希望使用 ML 来利用他们的数据并从中获得可操作的新见解,但潜在 ML 应用程序的数量与解决这些问题的训练有素的经验丰富的 ML 专家的数量之间存在不平衡。 因此,通过创建工具使 ML 在整个组织中广泛访问并且可以由非 ML 专业人士的领域专家即时使用,来实现跨组织民主化 ML 的需求越来越大。

最近,自动化机器学习 (AutoML) 已成为各经验和技能级别的组织对 ML 的巨大需求的一种解决方式。 AutoML 旨在创建一个单一系统,以尽可能多地自动化(换言之,消除人工输入)ML 工作流,包括数据准备、要素工程、模型选择、超参数调整和模型评估。 这样做可以降低非专业人士进入 ML 的门槛,这对非专业人士来说是有益的,而且通过消除 ML 工作流中一些最乏味和最耗时的步骤,也有利于训练有素的 ML 专业人员。

适用于非 ML 专业人士的 AutoML(GIS 分析师、业务分析师或数据分析师等领域专家) - 使用 AutoML 的关键优势在于它避免了 ML 工作流中需要大量技术知识和理解的步骤。 作为领域专家的分析师可以定义他们的业务问题并采集相应数据,然后计算机就可以完成其余操作。 他们不需要对用于数据清理和要素工程的数据科学技术有深入的了解,不需要了解 ML 算法的作用,也不需要花时间探索不同的算法和超参数配置。 相反,这些分析师可以专注于将他们的领域专业知识应用于特定业务问题或领域应用程序,而不是 ML 工作流本身。 此外,他们可以减少对组织内训练有素的数据科学家和 ML 工程师的依赖,因为他们可以自行构建和利用高级模型,通常不需要任何编码经验。

适用于 ML 专家(数据科学家或 ML 工程师)的 AutoML - AutoML 也可以为 ML 专家带来巨大优势,但原因可能并不明显。 一方面,ML 专家不必花费太多时间来支持他们组织中的领域专家,因此可以专注于更高级的 ML 工作。 对于 ML 专家的 ML 工程,AutoML 可以显著节省时间并提高生产力。 ML 工作流中的大部分耗时步骤(例如数据清理、要素工程、模型选择和超参数调整)都可以自动化。 通过将许多重复性、探索性步骤自动化所节省的时间可以转移到更高级的技术任务或需要更多人工输入的任务(例如与领域专家合作、理解业务问题或解释 ML 结果)。

除了节省时间之外,AutoML 还可以帮助提高 ML 专业人员的生产力,因为它避免了 ML 工作流中涉及的一些主观选择和试验。 例如,执行新工程的 ML 专业人员可能经过有关指导他们构建新要素、确定适合特定问题的 ML 算法以及最佳超参数的训练,或具有相关专业知识。 但是,他们可能会忽略构建某些新要素,或者在执行 ML 工作流时无法尝试所有可能的超参数组合。 此外,ML 专业人员可能会在要素或算法的选择过程存在偏见,他们可能基于以前的工作或在其他 ML 应用程序中的成功案例,而偏好某种特定算法。 实际上,不能存在在所有数据集上表现中均表现最佳的 ML 算法,某些 ML 算法对超参数的选择比其他算法更敏感,并且许多业务问题对用于解决这些问题的 ML 算法具有不同程度的复杂性和可解释性要求。 AutoML 可以通过将许多不同的 ML 算法应用于同一数据集,然后确定哪一个表现最佳,从而帮助减少这种人为偏见。

对于 ML 专业人员,AutoML 也可以作为 ML 工程的初始起点或基准。 可以使用它来自动开发数据集的基线模型,这可以为他们提供一组对特定问题的初步见解。 基于该基线模型,他们可以决定向输入数据集中添加特定要素或从中移除特定要素,或者专注于研究特定 ML 算法并微调其超参数。 从这个意义上说,训练有素的 ML 专业人员可以利用 AutoML 缩小初始选择范围,从而专注于提高 ML 系统的整体性能。 这是实践中的常用工作流,ML 专家将使用 AutoML 开发数据驱动的基准,然后通过结合他们的专业知识来完善结果,并以此为基础构建。

最后,通过 AutoML 在组织内实现 ML 民主化可以让领域专家将注意力集中在业务问题上并获得可操作的结果,它允许更多的分析师构建更好的模型,并且可以减少组织对 ML 专家的需求数量。 它还可以帮助提高训练有素的 ML 专业人员和数据科学家的生产力,使他们能够将专业知识集中在最需要的其他任务上。

总之,使用 AutoML 进行训练工具需要采用以下步骤来确定最佳模型:

  1. 尝试简单算法,例如决策树(最大深度为 4 的简单树)和线性模型。 这有助于快速检查数据和预期结果。
  2. 在 AutoML 启动(上述步骤 1)中选择的模型已使用默认参数进行了训练,在此步骤中,将仅使用默认超参数通过一组更复杂的算法运行数据。 为每种算法和所有可用算法尝试一个模型拟合。 可用算法包括线性、随机森林、XGBoost、LightGBM、决策树和极端树。
  3. 在每个单独算法的超参数空间上执行随机搜索以找到最佳超参数集。
  4. 使用黄金要素构建新要素。 确定哪些新要素具有预测能力,并将它们添加到原始数据集中。 在此步骤中将使用上一步中确定的最佳超参数集。
  5. 此为要素选择步骤。 使用步骤 4 中确定的最优超参数集为每种算法训练一个性能最佳的模型,然后确定重要性最低的要素并将其移除。
  6. 至此将获得经训练的最佳模型结果。
  7. 将模型堆叠起来,并组合最佳模型(包括堆叠)结果。

模型集成 - 集成是模型集合,通过加权平均或投票组合其预测。

模型集成

用于组合的最常见策略包括 bagging(以随机森林为经典示例)和 boosting(XGBoost 是 boosting 的一个示例),它结合了属于相同算法的模型的输出。 最近的技术,例如 Caruana 等人在模型库中集成选择中提到的技术,可以组合不同的模型。 按照以下步骤创建集成:

  1. 从空集成开始。
  2. 将库中最大化集成性能的模型添加到验证集上的误差指标中。
  3. 重复上一步进行固定次数的迭代或直到所有模型均已使用。
  4. 从嵌套集中返回在验证集上具有最高性能的集成。

模型堆叠 - 模型堆叠还涉及组合多个模型的结果并从中派生结果。

模型堆叠

虽然集成方法通过为输出赋予不同的权重来组合各种模型的结果,但堆叠可以使用每个基本模型的输出作为要素并将其添加到更高级别的模型,即元模型。 将更高级别元模型的输出用作最终输出。

集成堆叠 - 要提高性能,可以创建模型堆叠并将它们的输出组合成一个集成堆叠。

解释输出报表

使用 AutoML 进行训练工具可以生成 HTML 报表作为输出。

报表主页显示排行榜。 工具输出窗口中也提供了相同的信息。

排行榜

排行榜显示了评估的模型及其指标值。 在这种回归问题的情况下,具有最小 RMSE 值的模型被认为是最佳模型(在本示例中,为集成模型)。 但是,对于分类问题,它会有所不同(例如 logloss)。

AutoML 性能箱型图将不同模型的评估指标与 y 轴上的评估指标 (RMSE) 和 x 轴上的模型进行比较,如下所示。 箱型图显示最好的模型是具有最低 RMSE 的集成模型。

所有模型的 AutoML 性能

此 AutoML 性能图表显示了最佳性能模型(在本例中为集成模型)的评估指标在不同的迭代中的变化情况。 迭代图表可帮助您了解模型在模型的不同运行中的一致性。

最佳模型的 AutoML 性能
模型的 Spearman 相关性

接下来,为所有评估的模型生成 Spearman 相关性,更密切相关的模型以较深的蓝色阴影显示。 例如,LightGBM 和 XGBoost 的输出是最密切相关的(此情况在预期中,因为两者都是 boosting 算法)。 与 ExtraTrees 输出相比,LightGBM 输出与 RandomForest 输出更为相似。

在排行榜中,单击 Name 列中任何模型的链接,您将进入一个页面,该页面显示了完成超参数调整后为模型训练最终确定的超参数。 在本示例中,决策树是使用值为 3 的 max_depth 训练的。

模型超参数

除了用于评估的指标外,同一页面还显示了其他指标。 以下示例中介绍了一个回归任务,您可以看到 MAE、MSE、R2 和 MAPE 指标以及用于模型评估的 RMSE 指标。

度量指标

您还可以查看实际输出和预测输出的散点图(此处为包含 5000 个数据点的样本)。

实际与预测散点图:model1

实际与预测散点图:model2

您可以使用此图表来确定模型的性能。 上图显示了从报表中获得的两个模型的散点图比较。 第二个模型比第一个模型表现更好,其中预测值和实际值差异更大。

最后,为使模型更易于解释,将在报告中包含最终模型中每个变量的重要性(类似于 sklearn 中的要素重要性)。 与 sklearn 不同,也可以为 sklearn 的非树模型生成该图。 Shapley Additive Explanations (SHAP) 也提供了对非基于树的模型的模型解释功能。

SHAP 是一种博弈论方法,可用于解释任何机器学习模型的输出。 它使用博弈论中的经典 Shapley 值及其相关扩展模块将最优配额分配与局部解释连接起来。 有关 SHAP 及其实施的详细信息,请参见此处。 SHAP 输出仅适用于基本选项。

在下图中,您可以可视化住房数据集中每个变量对训练模型的全局影响。 这表明在预测房价时,sqft_living 要素对模型的影响最大,也是最重要的要素,其次是 bathroomsbedrooms 的数量。

SHAP 要素重要性图表

使用基本选项,您还可以选择查看自动探索性数据分析报告(EDA 报告),该报告可以打印出目标变量的汇总统计数据和模型训练中使用的预测变量。 以下是名为 altclip.tif 的变量的示例 EDA 报告:

样本变量的汇总统计量

变量分布

参考资料

Caruana, Rich et al. "Ensemble Selection from Libraries of Models." Proceedings of the 21st International Conference on Machine Learning. Banff, Canada (2004). http://www.cs.cornell.edu/~alexn/papers/shotgun.icml04.revised.rev2.pdf.