使用 AutoML 进行训练 (GeoAI)

摘要

通过构建训练管道和自动执行大部分训练过程来训练深度学习模型。 这包括探索性数据分析、要素选择、要素工程、模型选择、超参数调整和模型训练。 其输出包括训练数据上最佳模型的性能指标,以及可用作使用 AutoML 预测工具在新数据集上进行预测的经过训练的深度学习模型包 (.dlpk) 的输入。

了解有关 AutoML 工作原理的详细信息

使用情况

  • 您必须在 ArcGIS AllSource 中为 Python 安装适当的深度学习框架。

    了解如何安装 ArcGIS 的深度学习框架

  • 该工具生成经训练模型所需的时间取决于以下因素:

    • 训练期间提供的数据量
    • AutoML 模式参数值

    默认情况下,所有模式的计时器设置为 240 分钟。 无论训练中使用的数据量有多少,AutoML 模式参数的基础选项都不会花费整个 240 分钟来找到最佳模型。 确定最佳模型后,拟合过程即可完成。 由于要素工程、要素选择和超参数调整等额外任务,高级选项将花费更多时间。 除了通过组合输入中的多个要素获得的新要素外,该工具还会创建名称从 zone3_id 到 zone7_id 的空间要素。 将从输入数据的位置信息中提取这些新要素,并将用于训练更好的模型。 要了解有关新空间要素的详细信息,请参阅 AutoML 的工作原理。 如果正在训练的数据量很大,则可能无法在 240 分钟内评估所有模型组合。 在这种情况下,在 240 分钟内确定的最佳模型将被视为最佳模型。 然后,您可以使用此模型或使用更高的总时间限制(分钟)参数值重新运行该工具。

  • 要使用栅格作为解释变量,需要 ArcGIS Spatial Analyst extension 许可。

  • 输出报表参数值是一个 HTML 格式的文件,可用于查看工作目录中的信息。

    输出报表的第一页包含每个评估模型的链接,并显示了它们在验证数据集上的性能以及训练它们所花费的时间。 根据评估指标,报表会显示所选的性能最佳模型。

    RMSE 是回归问题的默认评估指标,而 Logloss 是分类问题的默认指标。 输出报告中的可用指标包括:

    • 分类 - AUC、Logloss、F1、准确度、平均精度
    • 回归 - MSE、RMSE、MAE、R2、MAPE、Spearman 系数、Pearson 系数

    单击模型组合时,将显示有关该模型组合训练的详细信息,包括学习曲线、变量重要性曲线、使用的超参数等。

  • 该工具的示范用例包括根据天气因素训练年度太阳能发电模型、使用相关变量训练作物预测模型以及训练房屋价值预测模型。

  • 有关运行此工具的要求以及您可能遇到的问题的信息,请参阅深度学习常见问题

  • 要使用添加图像附件参数,请通过执行以下操作为图像附件准备输入训练要素参数值:

    • 确保要素图层包含一个包含每个记录的图像文件路径的字段。
    • 使用启用附件工具启用要素图层的附件。
    • 使用添加附件工具指定图像路径字段并将其作为图像附件添加到要素图层。

参数

标注说明数据类型
输入训练要素

将用于训练模型的输入要素类。

Feature Layer; Table View
输出模型

将另存为深度学习包(.dlpk 文件)的输出训练模型。

File
要预测的变量

来自输入训练要素参数的字段,其中包含将用于训练模型的值。 该字段包含将用于在未知位置进行预测的变量的已知(训练)值。

Field
将变量视为分类变量
(可选)

指定要预测的变量参数值是否将被视为分类变量。

  • 选中 - 要预测的变量参数值将被视为分类变量并执行分类。
  • 未选中 - 要预测的变量参数值将被视为连续并执行回归。 这是默认设置。

Boolean
解释训练变量
(可选)

表示解释变量的字段列表,可帮助预测要预测的变量参数值的值或类别。 对于任何表示类或类别(例如土地覆被、存在或不存在)的变量,请选中随附的复选框。

Value Table
解释训练距离要素
(可选)

将自动估计该要素与输入训练要素的距离并将其添加为其他解释变量。 将计算每个输入解释训练距离要素与最近的输入训练要素的距离。 支持点和面要素,如果输入解释训练距离要素为面要素或线要素,则距离属性将计算为要素对的最近线段之间的距离。

Feature Layer
解释训练栅格
(可选)

将从栅格中提取该栅格的值,并且其将被视为模型的解释变量。 每个图层构成一个解释变量。 对于输入训练要素中的每个要素,将在此确切位置处提取栅格像元的值。 提取连续栅格的栅格值时,将使用双线性栅格重采样。 从分类栅格中提取栅格值时,将使用最邻近分配法。 如果输入训练要素参数值具有面,并且您为此参数提供了值,则模型中将使用每个面的一个栅格值。 将为每个面指定连续栅格的平均值和分类栅格的众数。 对于任何描绘类或类别(例如土地覆被、植被或土壤类型)的栅格,确保选中分类复选框。

Value Table
总时间限制(分钟)
(可选)

AutoML 模型训练所需的总时间限制(以分钟为单位)。 默认值为 240(4 小时)。

Double
AutoML 模式
(可选)

指定 AutoML 的目标以及 AutoML 搜索的密集程度。

  • 基本“基本”用于解释不同变量和数据的重要性。 不执行要素工程、要素选择和超参数调整。 报告中将包含关于模型学习曲线、为基于树的模型生成的要素重要性图以及所有其他模型的 SHAP 图的完整描述和解释。 此模式需要的处理时间最少。 这是默认设置。
  • 中级“中级”用于训练将在实际用例中使用的模型。 此模式使用 5 倍交叉验证 (CV) 方法并将在报告中生成学习曲线和重要性图的输出,但 SHAP 图不可用。
  • 高级“高级”用于机器学习竞技(以获得最佳性能)。 此模式使用 10 倍交叉验证 (CV) 方法并将执行要素工程、要素选择和超参数调整。 将基于输入训练要素的位置将其分配给到多个不同大小的空间格网,并且相应的格网 ID 将作为附加分类解释变量传递给模型。 该报告仅包括学习曲线,模型可解释性功能不可用。
String
算法
(可选)

指定将在训练期间使用的算法。

默认情况下,将使用所有算法。

  • 线性线性回归监督算法将用于训练回归机器学习模型。 如果这是指定的唯一选项,请确保记录总数小于 10.000,列数小于 1,000。 其他模型可以容纳更大的数据集,建议您将此选项与其他算法配合使用,而不是作为唯一的算法。
  • 随机树将使用基于随机树决策树的监督机器学习算法。 它可以用于分类和回归。
  • XGBoost将使用 XGBoost(极端梯度提)监督机器学习算法。 它可以用于分类和回归。
  • Light GBM将使用基于决策树的 Light GBM 梯度提升集成算法。 它可以用于分类和回归。 Light GBM 针对分布式系统的高性能进行了优化。
  • 决策树将使用决策树监督机器学习算法,该算法使用对某些问题的 true 和 false 答案对数据进行分类或回归。 决策树易于理解并且具有可解释性。
  • 极端树将通过使用决策树的极端树(极度随机树)集成监督机器学习算法。 此算法类似于随机树,但速度更快。
  • CatBoost将使用 CatBoost 算法。 它使用决策树进行分类和回归。 此选项可使用分类和非分类解释变量的组合,无需预处理。
String
验证百分比
(可选)

将用于验证的输入数据的百分比。 默认值为 10。

Long
输出报表
(可选)

将生成为 .html 文件的输出报告。 如果提供的路径不为空,则将在提供路径下的新文件夹中创建报告。 该报告将包含各种模型的详细信息、评估期间使用的超参数的详细信息以及每个模型的性能。 超参数是控制训练过程的参数。 它们在训练期间不会更新,包括模型架构、学习率、轮数等。

File
输出重要性表格
(可选)

输出表包含有关模型中使用的每个解释变量(字段、距离要素和栅格)的重要性的信息。

Table
输出要素类
(可选)

包含训练要素图层上性能最佳模型的预测值的要素图层。 它可用于通过直观地将预测值与实际地表进行比较来验证模型性能。

Feature Class
添加影像附件
(可选)

指定是否将图像用作输入训练要素参数值的解释变量来训练多模式或混合数据模型。 训练多模式或混合数据表格模型涉及使用 AutoML 中的机器和深度学习主干,通过单个模型从多种类型的数据格式中学习。 输入数据可以由来自不同数据源集的解释变量的组合组成,例如文本描述、相应的图像以及任何其他分类变量和连续变量。

  • 选中 - 将下载图像附件并将其视为解释变量,并执行多模式数据训练。
  • 未选中 - 训练期间不会使用图像附件。 这是默认设置。

Boolean
敏感要素属性
(可选)

评估和改进分类和回归模型的表格数据的训练模型的公平性。 为此参数设置以下两个组件:

  • 敏感要素 - 种族、性别、社会经济地位或年龄等可能在机器学习或深度学习模型中引入偏差的属性。 通过选择种族、性别、社会经济地位或年龄等敏感要素,可以减轻与特定敏感要素相关的偏见,从而形成无偏见的模型。
  • 弱势群体 - 根据所提供的敏感要素值而受到歧视的群体。

Value Table
公平指标
(可选)

指定将用于衡量分类和回归问题的公平性的公平指标,这些指标用于网格搜索以选择最佳公平模型。

  • 人口奇偶比该指标用于分类模型。 将测量不同个体群体之间的选择率比率。 选择率是被模型分类为阳性的个体的比例。 该指标的理想值为 1,这表明不同组的选择率是相等的。 该指标的公平性在 0.8 到 1 之间,这意味着组之间的选择率比率不应超过 20%。
  • 人口奇偶差该指标用于分类模型。 它类似于人口统计奇偶比指标,但将测量不同个体群体之间选择率的差异,而不是比率。 选择率是被模型分类为阳性的个体的比例。 该指标的理想值为 0,这表明组之间的选择率没有差异。 该指标的公平性在 0 到 0.25 之间,这意味着组之间的选择率差异不应超过 25%。
  • 均等赔率比该指标用于分类模型。 将测量个体群体(例如不同种族、性别群体)之间的错误率比率。 该指标的理想值为 1,这表示不同组的错误率相等。 该指标的公平性在 0.8 到 1 之间,这意味着组之间的误差比率不应超过 20%。
  • 均等赔率差该指标用于分类模型。 它类似于均衡优势比指标,但将测量不同个体组之间的误差差异,而不是比率。 该指标的理想值为 0,这表示组之间的误差没有差异。 该指标的公平性在 0 到 0.25 之间,这意味着组之间的误差差异不应超过 25%。
  • 群组损失率该指标用于回归模型。 将测量一个子组与另一子组相比的平均损失或误差的比率。 它提供了群体之间损失差异的相对衡量标准。 值为 1 表示各组之间的损失没有差异,而大于或小于 1 的值表示相对差异。
String

arcpy.geoai.TrainUsingAutoML(in_features, out_model, variable_predict, {treat_variable_as_categorical}, {explanatory_variables}, {distance_features}, {explanatory_rasters}, {total_time_limit}, {autoML_mode}, {algorithms}, {validation_percent}, {out_report}, {out_importance}, {out_features}, {add_image_attachments}, {sensitive_feature}, {fairness_metric})
名称说明数据类型
in_features

将用于训练模型的输入要素类。

Feature Layer; Table View
out_model

将另存为深度学习包(.dlpk 文件)的输出训练模型。

File
variable_predict

来自 in_features 参数的字段,其中包含将用于训练模型的值。 该字段包含将用于在未知位置进行预测的变量的已知(训练)值。

Field
treat_variable_as_categorical
(可选)

指定 variable_predict 参数值是否将被视为分类变量。

  • CATEGORICALvariable_predict 参数值将被视为分类变量并执行分类。
  • CONTINUOUSvariable_predict 参数值将被视为连续并执行回归。 这是默认设置。
Boolean
explanatory_variables
[explanatory_variables,...]
(可选)

表示解释变量的字段列表,可帮助预测 variable_predict 参数值的值或类别。 为代表类或类别(例如土地覆盖、存在或不存在)的任何变量传递真实值 ("<name_of_variable> true")。

Value Table
distance_features
[distance_features,...]
(可选)

将自动估计该要素与输入训练要素的距离并将其添加为其他解释变量。 将计算每个输入解释训练距离要素与最近的输入训练要素的距离。 支持点和面要素,如果输入解释训练距离要素为面要素或线要素,则距离属性将计算为要素对的最近线段之间的距离。

Feature Layer
explanatory_rasters
[explanatory_rasters,...]
(可选)

将从栅格中提取该栅格的值,并且其将被视为模型的解释变量。 每个图层构成一个解释变量。 对于输入训练要素中的每个要素,将在此确切位置处提取栅格像元的值。 提取连续栅格的栅格值时,将使用双线性栅格重采样。 从分类栅格中提取栅格值时,将使用最邻近分配法。 如果 in_features 参数值包含面,并且您为此参数提供了一个值,则模型中将使用每个面的一个栅格值。 将为每个面指定连续栅格的平均值和分类栅格的众数。 使用 "<name_of_raster> true" 为描绘类或类别(例如土地覆被、植被或土壤类型)的任何栅格传递一个 true 值。

Value Table
total_time_limit
(可选)

AutoML 模型训练所需的总时间限制(以分钟为单位)。 默认值为 240(4 小时)。

Double
autoML_mode
(可选)

指定 AutoML 的目标以及 AutoML 搜索的密集程度。

  • BASIC“基本”用于解释不同变量和数据的重要性。 不执行要素工程、要素选择和超参数调整。 报告中将包含关于模型学习曲线、为基于树的模型生成的要素重要性图以及所有其他模型的 SHAP 图的完整描述和解释。 此模式需要的处理时间最少。 这是默认设置。
  • INTERMEDIATE“中级”用于训练将在实际用例中使用的模型。 此模式使用 5 倍交叉验证 (CV) 方法并将在报告中生成学习曲线和重要性图的输出,但 SHAP 图不可用。
  • ADVANCED“高级”用于机器学习竞技(以获得最佳性能)。 此模式使用 10 倍交叉验证 (CV) 方法并将执行要素工程、要素选择和超参数调整。 将基于输入训练要素的位置将其分配给到多个不同大小的空间格网,并且相应的格网 ID 将作为附加分类解释变量传递给模型。 该报告仅包括学习曲线,模型可解释性功能不可用。
String
algorithms
[algorithms,...]
(可选)

指定将在训练期间使用的算法。

  • LINEAR线性回归监督算法将用于训练回归机器学习模型。 如果这是指定的唯一选项,请确保记录总数小于 10.000,列数小于 1,000。 其他模型可以容纳更大的数据集,建议您将此选项与其他算法配合使用,而不是作为唯一的算法。
  • RANDOM TREES将使用基于随机树决策树的监督机器学习算法。 它可以用于分类和回归。
  • XGBOOST将使用 XGBoost(极端梯度提)监督机器学习算法。 它可以用于分类和回归。
  • LIGHT GBM将使用基于决策树的 Light GBM 梯度提升集成算法。 它可以用于分类和回归。 Light GBM 针对分布式系统的高性能进行了优化。
  • DECISION TREE将使用决策树监督机器学习算法,该算法使用对某些问题的 true 和 false 答案对数据进行分类或回归。 决策树易于理解并且具有可解释性。
  • EXTRA TREE将通过使用决策树的极端树(极度随机树)集成监督机器学习算法。 此算法类似于随机树,但速度更快。
  • CATBOOST将使用 CatBoost 算法。 它使用决策树进行分类和回归。 此选项可使用分类和非分类解释变量的组合,无需预处理。

默认情况下,将使用所有算法。

String
validation_percent
(可选)

将用于验证的输入数据的百分比。 默认值为 10。

Long
out_report
(可选)

将生成为 .html 文件的输出报告。 如果提供的路径不为空,则将在提供路径下的新文件夹中创建报告。 该报告将包含各种模型的详细信息、评估期间使用的超参数的详细信息以及每个模型的性能。 超参数是控制训练过程的参数。 它们在训练期间不会更新,包括模型架构、学习率、轮数等。

File
out_importance
(可选)

输出表包含有关模型中使用的每个解释变量(字段、距离要素和栅格)的重要性的信息。

Table
out_features
(可选)

包含训练要素图层上性能最佳模型的预测值的要素图层。 它可用于通过直观地将预测值与实际地表进行比较来验证模型性能。

Feature Class
add_image_attachments
(可选)

指定是否将图像用作 in_features 参数值的解释变量来训练多模式或混合数据模型。 训练多模式或混合数据表格模型涉及使用 AutoML 中的机器和深度学习主干,通过单个模型从多种类型的数据格式中学习。 输入数据可以由来自不同数据源集的解释变量的组合组成,例如文本描述、相应的图像以及任何其他分类变量和连续变量。

  • TRUE将下载图像附件并将其视为解释变量,并执行多模式数据训练。
  • FALSE训练期间不会使用图像附件。 这是默认设置。
Boolean
sensitive_feature
[sensitive_feature,...]
(可选)

评估和改进分类和回归模型的表格数据的训练模型的公平性。 为此参数设置以下两个组件:

  • 敏感要素 - 种族、性别、社会经济地位或年龄等可能在机器学习或深度学习模型中引入偏差的属性。 通过选择种族、性别、社会经济地位或年龄等敏感要素,可以减轻与特定敏感要素相关的偏见,从而形成无偏见的模型。
  • 弱势群体 - 根据所提供的敏感要素值而受到歧视的群体。

Value Table
fairness_metric
(可选)

指定将用于衡量分类和回归问题的公平性的公平指标,这些指标用于网格搜索以选择最佳公平模型。

  • DEMOGRAPHIC_PARITY_RATIO该指标用于分类模型。 将测量不同个体群体之间的选择率比率。 选择率是被模型分类为阳性的个体的比例。 该指标的理想值为 1,这表明不同组的选择率是相等的。 该指标的公平性在 0.8 到 1 之间,这意味着组之间的选择率比率不应超过 20%。
  • DEMOGRAPHIC_PARITY_DIFFERENCE该指标用于分类模型。 它类似于人口统计奇偶比指标,但将测量不同个体群体之间选择率的差异,而不是比率。 选择率是被模型分类为阳性的个体的比例。 该指标的理想值为 0,这表明组之间的选择率没有差异。 该指标的公平性在 0 到 0.25 之间,这意味着组之间的选择率差异不应超过 25%。
  • EQUALISED_ODDS_RATIO该指标用于分类模型。 将测量个体群体(例如不同种族、性别群体)之间的错误率比率。 该指标的理想值为 1,这表示不同组的错误率相等。 该指标的公平性在 0.8 到 1 之间,这意味着组之间的误差比率不应超过 20%。
  • EQUALISED_ODDS_DIFFERENCE该指标用于分类模型。 它类似于均衡优势比指标,但将测量不同个体组之间的误差差异,而不是比率。 该指标的理想值为 0,这表示组之间的误差没有差异。 该指标的公平性在 0 到 0.25 之间,这意味着组之间的误差差异不应超过 25%。
  • GROUP_LOSS_RATIO该指标用于回归模型。 将测量一个子组与另一子组相比的平均损失或误差的比率。 它提供了群体之间损失差异的相对衡量标准。 值为 1 表示各组之间的损失没有差异,而大于或小于 1 的值表示相对差异。
String

代码示例

TrainUsingAutoML 示例(Python 窗口)

本示例介绍了如何使用 TrainUsingAutoML 函数。

# Name: TrainUsingAutoML.py
# Description: Train a machine learning model on feature or tabular data with
# automatic hyperparameter selection.
  
# Import system modules
import arcpy
import os

# Set local variables

datapath  = "path_to_data" 
out_path = "path_to_trained_model"

in_feature = os.path.join(datapath, "train_data.gdb", "name_of_data")
out_model = os.path.join(out_path, "model.dlpk")

# Run Train Using AutoML Model
arcpy.geoai.TrainUsingAutoML(in_feature, out_model, "price", None, 
                             "bathrooms #;bedrooms #;square_fee #", None, None, 
                             240, "BASIC")