描述
使用 Leo Breiman 随机森林算法(一种监督式机器学习方法)的改编版本创建模型并生成预测。可以针对分类变量(分类)和连续变量(回归)执行预测。解释变量可采用训练要素属性表中字段的形式。除了基于训练数据对模型性能进行验证之外,还可以对要素进行预测。
使用方法
该工具将创建数百棵树(称为决策树集成),从而创建可用于预测的模型。将使用原始(训练)数据的随机生成部分创建每棵决策树。每棵树可以生成自己的预测并对结果进行投票。森林模型将考虑所有决策树的投票,以预测或分类未知样本的结果。此功能非常重要,因为单棵树可能存在过度拟合模型的问题;但森林中的多棵树进行预测可解决与单棵树相关的过度拟合问题。
可以在两种操作模式下使用此工具。探索不同的解释变量和工具设置时,可以使用训练模式来评估不同模型的性能。找到合适的模型后,您即可使用训练并预测模式。
这是一个数据驱动工具,在大型数据集上性能最佳。为获得最佳结果,应针对至少数百个要素对该工具进行训练。该工具不适用于非常小的数据集。
输入训练要素可以是表、点、线或面要素。而且,此工具不能用于处理多部分数据。
在预测或解释字段中具有一个或多个空值或空字符串值的要素将从输出中排除。如有必要,您可以使用计算字段工具来修改值。
此工具可根据以下操作模式生成各种输出:
- 训练可生成以下两种输出:
- 输出已训练要素 - 包含创建的模型中使用的所有输入训练要素以及模型中使用的所有解释变量。还包含用于训练模型的所有要素的预测,这对于评估所创建模型的性能非常有用。
- 工具汇总消息 - 用于帮助您了解所创建模型的性能的消息。这些消息包括有关模型特征、变量重要性以及验证诊断的信息。
- 训练并预测可生成以下三种输出:
- 输出已训练要素 - 包含创建的模型中使用的所有输入训练要素以及模型中使用的所有解释变量。还包含用于训练模型的所有要素的预测,这对于评估所创建模型的性能非常有用。
- 输出预测要素 - 预测结果图层。将预测应用于图层以使用从训练图层生成的模型进行预测(使用输入预测要素选项)。
- 工具汇总消息 - 用于帮助您了解所创建模型的性能的消息。这些消息包括有关模型特征、变量重要性以及验证诊断的信息。
- 训练可生成以下两种输出:
可以使用创建变量重要性表格参数创建一个表格,用于显示变量重要性的图表以进行评估。消息窗口中还会报告前 20 个变量重要性值。
解释变量可以来自字段,应包含各种值。如果解释变量为分类变量,应选中分类复选框(将自动选中字符串类型的变量)。尽管较小的类别数量可改善模型性能,但分类解释变量限于 60 个唯一值。对于给定的数据大小,变量所包含的类别越多,则其影响模型的可能性越大,从而导致预测结果的有效性越低。
对解释变量进行匹配时,训练字段和预测字段必须具有相同类型的字段(例如,训练字段中的双精度字段必须与预测字段中的双精度字段相匹配)。
基于森林模型不会进行外推;只能对模型训练所使用的值进行分类或预测。使用在目标要素和变量范围内的训练要素和解释变量来训练模型。如果类别存在于训练要素中不存在的预测解释变量中,则该工具将失败。
树数参数的默认值为 100。增加森林模型中的树数将使模型预测更加精准,但是将增加模型计算的时间。
此地理处理工具由 ArcGIS GeoAnalytics Server 作为支持。分析将在 GeoAnalytics Server 上完成,且结果将存储在 ArcGIS Enterprise 的内容中。
当 GeoAnalytics Server 工具运行时,GeoAnalytics Server 上的分析已完成。要获得最佳性能,通过 ArcGIS Enterprise 门户上托管的要素图层或通过大数据文件共享,可以将数据用于 GeoAnalytics Server。在分析开始之前,非 GeoAnalytics Server 本地数据将被转移到您的 GeoAnalytics Server。这意味着运行工具需要更长时间,并且在某些情况下,从 ArcGIS Pro 到 GeoAnalytics Server 移动数据可能会失败。失败的阈值取决于网络速度,以及数据的大小和复杂性。因此,建议您始终共享数据或创建大数据文件共享。
语法
arcpy.geoanalytics.Forest(prediction_type, in_features, {output_trained_name}, {variable_predict}, {treat_variable_as_categorical}, {explanatory_variables}, {create_variable_importance_table}, {features_to_predict}, {explanatory_variable_matching}, {number_of_trees}, {minimum_leaf_size}, {maximum_tree_depth}, {sample_size}, {random_variables}, {percentage_for_validation}, {data_store})
参数 | 说明 | 数据类型 |
prediction_type | 指定工具的操作模式。可以运行此工具来训练模型,以仅评估性能、预测要素或创建预测表面。
| String |
in_features | 包含 variable_predict 参数以及解释训练变量字段的要素类。 | Record Set |
output_trained_name (可选) | 输出要素图层名称。 | String |
variable_predict (可选) | in_features 参数中的变量,其中包含要用于训练模型的值。该字段包含将用于在未知位置进行预测的变量的已知(训练)值。 | Field |
treat_variable_as_categorical (可选) |
| Boolean |
explanatory_variables [[Variable, Categorical],...] (可选) | 表示解释变量的字段列表,可帮助预测 variable_predict 的值或类别。对于任何表示类或类别(例如土地覆被或存在/不存在)的变量,请使用 treat_variable_as_categorical 参数。对于任何表示类或类别(例如土地覆被或存在/不存在)的变量,请指定变量为 true;如果变量为连续变量,请指定变量为 false。 | Value Table |
create_variable_importance_table (可选) | 指定输出表是否包含描述在模型中使用的每个解释变量的重要性的信息。
| Boolean |
features_to_predict (可选) | 表示将进行预测的位置的要素图层。此要素图层还必须包含作为字段提供的任何解释变量,这些字段对应于训练数据中使用的字段。 | Record Set |
explanatory_variable_matching [[Prediction, Training],...] (可选) | 根据右侧 in_features 以及左侧 features_to_predict 中其对应字段指定的 explanatory_variables 列表,例如 [["LandCover2000", "LandCover2010"], ["Income", "PerCapitaIncome"]]。 | Value Table |
number_of_trees (可选) | 要在森林模型中创建的树的数量。增大树数通常将产生更加精确的模型预测,但是将增加模型计算的时间。默认树数为 100。 | Long |
minimum_leaf_size (可选) | 保留叶子(即未进一步进行分割的树上的终端节点)所需的最小观测值数。回归的默认最小值为 5,分类的默认值为 1。对于非常大的数据,增大这些数值将减少工具的运行时间。 | Long |
maximum_tree_depth (可选) | 对树进行的最大分割数。如果使用较大的最大深度,则将创建更多分割,这可能会增大过度拟合模型的可能性。默认值由数据驱动,并且取决于所创建的树数以及所包含的变量数。 | Long |
sample_size (可选) | 用于每棵决策树的 in_features 的百分比。默认值为 100% 的数据。将根据指定数据的三分之二随机获取每棵树的样本。 可以使用可用训练数据的随机样本或子集(大约三分之二)来创建森林中的每棵决策树。针对每棵决策树使用较低百分比的输入数据可以提高适用于大型数据集的工具的速度。 | Long |
random_variables (可选) | 用于创建每棵决策树的解释变量数。 森林中的每个决策树都是使用指定解释变量的随机子集创建的。增大每棵决策树中使用的变量数将增大过度拟合模型的可能性,尤其是存在一个或多个主导变量时更是如此。常用方法是:如果 variable_predict 为数值,则使用解释变量总数的平方根;如果 variable_predict 为分类变量,则将解释变量的总数除以 3。 | Long |
percentage_for_validation (可选) | 要保留为验证测试数据集的 in_features 的百分比(介于 10% 和 50% 之间)。将在没有此随机数据子集的情况下对模型进行训练,并将这些要素的观测值与预测值进行比较。默认值为 10%。 | Long |
data_store (可选) | 指定将用于保存输出的 ArcGIS Data Store。默认为 SPATIOTEMPORAL_DATA_STORE。在时空大数据存储中存储的所有结果都将存储在 WGS84 中。在关系数据存储中存储的结果都将保持各自的坐标系。
| String |
派生输出
名称 | 说明 | 数据类型 |
output_trained | 包含用于训练的输入变量、观察的要预测的变量参数,以及可用于进一步评估模型性能的相应预测的输出。 | 记录集 |
variable_of_importance | 包含用于描述要在所创建模型中使用的每个解释变量的重要性的信息的表。 | 记录集 |
output_predicted | 将接收模型预测的图层。 | 记录集 |
代码示例
以下 Python 窗口脚本演示了如何使用 ForestBasedClassificationAndRegression 工具。
此脚本中描述了网络要素,并创建了 2500 个要素的样本图层。
#-------------------------------------------------------------------------------
# Name: Forest.py
# Description: Run Forest on sales data from 1980 and predict for sales in 1981
#
# Requirements: ArcGIS GeoAnalytics Server
# Import system modules
import arcpy
arcpy.env.workspace = "c:/data/commercial.gdb"
# Set local variables
trainingDataset = "https://analysis.org.com/server/rest/services/Hosted/sales/FeatureServer/0"
predictionDataset = "https://analysis.org.com/server/rest/services/Hosted/next_year/FeatureServer/0"
outputName = "training"
outputPredictedName = "predicted"
# Execute Forest
arcpy.geoanalytics.Forest("TRAIN_AND_PREDICT", inputDataset, outputName, "PERIMETER", None, ""STORE_CATEGORY true;AVG_INCOME false;POPULATION false", None, predictionDataset,
"STORE_CATEGORY STORE_CATEGORY;AVG_INCOME MEAN_INCOME; POPULATION POPULATION", 100, , , 120, , 10, "SPATIOTEMPORAL_DATA_STORE")
环境
- 输出坐标系
将用于分析的坐标系。除非由该参数进行指定,否则将基于输入坐标系完成分析。对于 GeoAnalytics 工具,最终结果将存储于 WGS84 中的时空数据存储之内。
许可信息
- Basic: 需要 ArcGIS GeoAnalytics Server
- Standard: 需要 ArcGIS GeoAnalytics Server
- Advanced: 需要 ArcGIS GeoAnalytics Server