基于森林的增强分类与回归 (空间统计)

摘要

将使用两种监督机器学习方法之一创建模型并生成预测:一种是由 Leo Breiman 和 Adele Cutler 开发的随机森林算法的改编版,另一种是由 Tianqi Chen 和 Carlos Guestrin 开发的极限梯度提升 (XGBoost) 算法。 可以针对类别变量(分类)和连续变量(回归)执行预测。 解释变量可以采取用于计算邻域分析值的训练要素、栅格数据集和距离要素的属性表中字段的形式,以用作附加变量。 除了基于训练数据对模型性能进行验证之外,还可以对要素或预测栅格进行预测。

了解有关基于森林的增强分类与回归工作原理的详细信息

插图

基于森林的分类与回归工具图示

使用情况

  • 此工具支持两种模型类型:基于森林的模型和梯度提升模型。 两种模型类型均使用数百棵树(称为决策树集成),从而创建可用于预测的模型。

    • 基于森林 - 通过应用装袋技术创建模型,其中将使用原始(训练)数据的随机生成部分并行创建每棵决策树。 每棵树可以生成自己的预测并对结果进行投票。 基于森林的模型将考虑所有决策树的投票,以预测或分类未知样本的结果。 此功能非常重要,因为单棵树可能存在过度拟合模型的问题;但森林中的多棵树进行预测可解决与单棵树相关的过度拟合问题。 该模型需要的参数较少,并且更加直观。
    • 梯度提升 - 通过应用提升技术创建模型,其中将使用原始(训练)数据顺序创建每棵决策树。 后续每棵树都会校正前面的树的误差,因此该模型结合了多个弱学习器,以成为一个强预测模型。 梯度提升模型包含正则化和早期停止功能技术,可防止过度拟合。 该模型提供了对超参数的更好控制,并且更加复杂。
  • 此工具可用于三种操作模式中:训练、预测至要素和预测至栅格。 在探索不同的解释变量和工具设置时,可以使用预测类型参数中的仅训练选项来评估不同模型的性能。 找到合适的模型后,可以使用预测至要素预测至栅格选项。

  • 这是一个数据驱动工具,在大型数据集上性能最佳。 为获得最佳结果,应针对至少数百个要素对该工具进行训练。 该工具不适用于非常小的数据集。

  • 输入训练要素参数值可以是点或面。 而且,此工具不能用于处理多点数据。

  • 要使用栅格作为解释变量或预测至输出预测表面值,需要 ArcGIS Spatial Analyst extension 许可。

  • 此工具将生成以下可选输出:

    • 输出训练要素 - 包含所有输入训练要素值以及模型中使用的所有解释变量的要素类。 解释变量将包含使用的所有输入字段、计算的距离,以及提取或计算的栅格值。 要素类还将包含输入训练要素值中每个要素的预测。 包含用于训练和验证模型的要素。 如果要预测的变量不是类别变量,则要素类将包含每个预测的残差和标准残差。 如果要预测的变量是类别变量,则要素类将包含一个 Correctly Classified 字段,该字段用于指定模型是否正确地对每个预测进行了分类。 可以使用 ResidualStandard Residual 字段或者 Correctly Classified 字段以帮助评估所创建模型的性能。
    • 输出训练模型文件 - 包含训练模型结果的可重复使用文件。 该文件可用于使用空间统计模型文件进行预测工具中以预测新要素。
    • 输出预测要素 - 包含每个要素的模型预测值的要素类。 仅当预测类型参数值为预测至要素时,此选项才可用。
    • 输出预测表面 - 包含预测结果的输出栅格。 仅当预测类型参数值为预测至栅格时,此输出才可用。
    • 输出变量重要性表格 - 一个表格,用于描述每个解释变量(字段、距离要素和栅格)的重要性。
    • 输出参数调整表格 - 一个表格,其中包含每次优化尝试的参数设置和目标值。 仅当选中优化参数参数时,此输出才可用。
    • 输出分类性能表(混淆矩阵) - 一个表格,其中汇总了模型在验证数据上的性能。 矩阵的列代表模型预测的类别,行代表实际类别。 可以使用该表来评估模型在验证数据上的性能。 仅当选中视为类别变量参数时,此输出才可用。
  • 此工具将创建消息以帮助您了解所创建模型的性能。 可将鼠标悬停在进度条上、单击弹出按钮或展开地理处理窗格中的消息部分来访问消息。 您还可以通过地理处理历史记录访问之前运行此工具的消息。 这些消息包含如下内容:

    • 有关模型特征的信息
    • 模型袋外误差
    • 训练诊断
    • 验证诊断
    • 解释变量诊断
    • 变量重要性 - 如果提供了输出变量重要性表格参数值,则地理处理消息将报告重要性最高的 20 个变量。 如果验证运行次数参数值大于 1,则将存在多组变量重要性值。 每次运行都将具有一组变量重要性值,因此地理处理消息将报告与运行相关联的一组变量重要性值,其 R 平方或精度最接近 R 平方或精度中位数。

  • 此工具将向内容窗格添加以下可选图表:

    • 预测性能 - 堆叠条形图,帮助评估模型与数据的拟合程度。 x 轴上的类别由模型针对输入训练要素值进行预测。 包含用于训练和验证模型的要素。 颜色表示输入训练要素的真实类别。 仅当要预测的变量为类别变量、选中将变量视为类别变量复选框并提供输出训练要素参数时,才会生成此图表。
    • 混淆矩阵 - 矩阵热点图。 x 轴表示输入训练要素值中要素的预测类别,y 轴表示其实际类别。 对角像元用于可视化模型正确预测类别的次数。 对角像元中的计数越高,指示该模型的性能良好。 仅当要预测的变量是分类变量且选中将变量视为分类参数时,才会生成此图表。
    • 变量重要性的摘要变量重要性的分布 - 一个条形图,其中显示了每个解释变量对模型的重要性。 如果验证运行次数值大于 1,则图表将为箱形图,其中显示了每个解释变量的重要性值的分布。 如果提供输出变量重要性表格参数值,则将生成此图表。
    • 验证性能 - 堆叠条形图,帮助评估模型在验证数据上的执行性能。 验证数据中要素的实际类别位于 x 轴上。 颜色表示验证数据中要素的预测类别。 仅当要预测的变量为类别变量、选中将变量视为类别变量复选框并提供输出分类性能表(混淆矩阵)参数时,才会生成此图表。
    • 验证 R2验证精度 - 显示 R2 或精度值分布的直方图。 R2 或精度值的分布是由于创建模型时引入的随机性造成的。 该图表有助于评估不同模型运行期间模型性能的稳定性。 仅当提供了输出验证表参数值并且验证的运行次数值大于 1 时,才会生成此图表。
  • 解释变量可以来自字段、可通过距离要素进行计算得出或者从栅格中提取得出。 可以使用这些解释变量类型的任意组合,但至少要使用一种类型。 使用的解释变量(来自字段、距离要素或栅格)应该包含各种值。 如果解释变量为类别变量,请选中类别复选框。 对于字符串类型的变量,将自动选中类别复选框。 尽管较小的类别数量可改善模型性能,但类别解释变量限于 60 个唯一值。 对于给定的数据大小,变量所包含的类别越多,则其影响模型的可能性越大,从而导致预测结果的有效性越低。

  • 距离要素用于自动创建解释变量,这些解释变量表示给定要素与输入训练要素值的距离。 将计算从输入训练要素值的每个要素到最近的解释训练距离要素值的距离。 如果输入解释训练距离要素值为面要素或线要素,则距离属性将计算为要素对的最近线段之间的距离。 但是,面要素和线要素的距离计算方式不同。 有关详细信息,请参阅邻域分析工具计算距离的方法

  • 如果输入训练要素值为点要素并且使用解释训练栅格参数,则工具将向下钻取以提取每个点位置处的解释变量。 对于多波段栅格,仅使用第一个波段。

  • 尽管内容窗格中可以具有多个同名图层,但该工具不接受同名的解释距离图层和解释栅格图层。 要避免此问题,请确保每个图层都具有唯一名称,或者移除下拉列表中重复的图层名称。

  • 如果输入训练要素值为面,要预测的变量参数值为类别变量,并且仅在使用解释训练栅格值,则可使用将面转换为栅格分辨率以供训练。 如果选中此参数,则将在每个栅格像元(其质心落在面范围内)的质心处将面划分为点。 然后,提取每个点位置处的栅格值并将其用于训练模型。 对于数值变量,将使用双线性采样方法;对于类别变量,将使用最邻近方法。 经过转换的面要素的默认像元大小将为输入栅格的最大像元大小。 但是,可使用像元大小环境设置更改此值。 如果未选中此参数,则将在模型中针对每个面使用一个栅格值。 将为每个面指定连续栅格的平均值和分类栅格的众数。

    面转换为栅格分辨率(左)或分配平均值(右)。

  • 用于每个指定的解释变量的数据必须存在差异。 如果您收到错误,指示某个指定的字段或栅格中没有差异,则可以尝试再次运行此工具,将该变量标记为类别变量。 如果 95% 的要素对于特定变量具有相同的值,则可将此变量标记为没有差异。

  • 如果类别中的变化不平衡,则可以使用补偿稀疏类别参数。 例如,如果某些类别在数据集中出现数百次,而少数类别出现的次数明显较少,则选中此参数将确保每棵树中存在用于创建平衡模型的各个类别。 仅当模型类型参数值为基于森林时,此参数才受支持。

  • 对解释变量进行匹配时,PredictionTraining 字段的类型必须相同(Training 中的双精度字段必须与 Prediction 中的双精度字段相匹配)。

  • 基于森林的模型和增强模型不会进行外推,只能对模型训练所使用的值进行分类或预测。 基于高于或低于原始训练数据集范围的解释变量预测值时,模型将预测值位于原始数据集中最高值或最低值的附近。 尝试使用超出用于训练模型的解释变量范围的解释变量进行预测时,该工具可能性能不佳。

  • 如果类别存在于训练要素中不存在的预测解释变量中,则该工具将失败。 同样,如果验证数据中存在训练要素中不存在的类别,则该工具将失败。

  • 要将镶嵌数据集用作解释变量,请首先运行创建镶嵌图层工具,然后将图层的完整路径复制到工具中,或使用创建镶嵌图层工具和创建栅格图层工具来调整镶嵌数据集的处理模板。

  • 树数参数的默认值为 100。 在基于森林的模型中,增加模型中的树数将使模型预测更加精准,但是将增加模型计算的时间。

  • 如果模型类型参数值为基于森林并且选中计算不确定性参数,则工具将计算要预测的变量值的每个预测值周围的 90% 预测区间。 当预测类型参数值为仅训练预测至要素时,将向输出已训练要素值或输出预测要素值添加两个字段。 这些字段以 _P05_P95 结尾,表示预测区间的上界和下界。 对于任何新观测点,在给定相同的解释变量的情况下,您可以以 90% 的置信度预测新观测值将落在区间内。 当预测类型参数值为预测至栅格时,将向内容窗格添加两个表示预测区间上限和下限的附加栅格。

  • 出于性能原因,当预测类型参数值为预测至栅格时,解释训练距离要素参数不可用。 要将到要素的距离作为解释变量,请使用距离累积工具计算距离栅格,并将距离栅格包括在解释训练栅格参数中。

  • 此工具支持并行处理预测,默认情况下使用 50% 的可用处理器。 处理器数目可以通过使用并行处理因子环境增加或减少。

  • 要了解有关此工具工作原理的详细信息并理解输出消息和图表,请参阅基于森林分类与回归工作原理

    参考:

    • Breiman, Leo. Out-Of-Bag Estimation. 1996.
    • Breiman, L. (1996). Bagging predictors. Machine learning, 24(2), 123-140.
    • Breiman, Leo. "Random Forests". Machine Learning. 45 (1): 5-32. doi:10.1023/A:1010933404324. 2001.
    • Breiman, L., J.H. Friedman, R.A. Olshen, C.J. Stone. Classification and regression trees. New York: Routledge. Chapter 4. 2017.
    • Chen, T., and Guestrin, C. (2016). "XGBoost: A Scalable Tree Boosting System." In Proceedings of the 22nd ACM SIGKDD Conference on Knowledge Discovery and Data Mining. 785-794.
    • Dietterich, T. G. (2000, June). Ensemble methods in machine learning. International workshop on multiple classifier systems (pp. 1-15) Springer, Berlin, Heidelberg.
    • Gini, C. (1912). Variabilità e mutabilità. Reprinted in Memorie di metodologica statistica (Ed. Pizetti E, Salvemini, T). Rome: Libreria Eredi Virgilio Veschi.
    • Grömping, U. (2009). Variable importance assessment in regression: linear regression versus random forest. The American Statistician, 63(4), 308-319.
    • Ho, T. K. (1995, August). Random decision forests. Document analysis and recognition, 1995., proceedings of the third international conference on Document Analysis and Recognition. (Vol. 1, pp. 278-282). IEEE.
    • James, G., Witten, D., Hastie, T., & Tibshirani, R. (2013). An introduction to statistical learning (Vol. 112). New York: springer.
    • LeBlanc, M., & Tibshirani, R. (1996). Combining estimates in regression and classification. Journal of the American Statistical Association, 91(436), 1641-1650.
    • Loh, W. Y., & Shih, Y. S. (1997). Split selection methods for classification trees. Statistica sinica, 815-840.
    • Meinshausen, Nicolai. "Quantile regression forests." Journal of Machine Learning Research 7. Jun (2006): 983-999.
    • Nadeau, C., & Bengio, Y. (2000). Inference for the generalization error. Advances in neural information processing systems (pp. 307-313)
    • Strobl, C., Boulesteix, A. L., Kneib, T., Augustin, T., & Zeileis, A. (2008). Conditional variable importance for random forests. BMC bioinformatics, 9(1), 307.
    • Zhou, Z. H. (2012). Ensemble methods: foundations and algorithms. CRC press.

参数

标注说明数据类型
预测类型

指定要使用的操作模式。 可以运行此工具来训练模型,以仅评估性能、预测要素或创建预测表面。

  • 仅训练将训练模型,但不会生成预测。 生成预测之前,可以使用此选项评估模型的精度。 此选项将在消息窗口和变量重要性图表中输出模型诊断。 这是默认设置。
  • 预测至要素将针对要素生成预测或分类。 必须为训练要素和要预测的要素提供解释变量。 该选项的输出将为要素类、消息窗口中的模型诊断以及变量重要性的可选表格和图表。
  • 预测至栅格对于解释栅格相交的区域,将生成预测栅格。 必须为训练区域和要预测的区域提供解释栅格。 该选项的输出将为预测表面、消息窗口中的模型诊断以及变量重要性的可选表格和图表。
String
输入训练要素

要素类,包含要预测的变量参数值以及字段中的解释训练变量(可选)。

Feature Layer
要预测的变量
(可选)

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

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

指定要预测的变量值是否为类别变量。

  • 选中 - 要预测的变量值为类别变量,并且将执行分类。
  • 未选中 - 要预测的变量值为连续变量,并且将执行回归。 这是默认设置。
Boolean
解释训练变量
(可选)

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

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

包含解释训练距离要素的要素图层。 通过计算从提供的要素到输入训练要素值的距离,将自动创建解释变量。 将计算从输入训练要素值中的每个要素到最近的解释训练距离要素值的距离。 如果输入解释训练距离要素值为面要素或线要素,则距离属性将计算为要素对的最近线段之间的距离。

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

从栅格中提取的解释训练变量。 解释训练变量将通过提取栅格像元值自动创建。 对于输入训练要素参数中的每个要素,将在此确切位置处提取栅格像元的值。 提取连续栅格的栅格值时,将使用双线性栅格重采样。 从类别栅格中提取栅格值时,将使用最邻近分配法。 对于任何表示类或类别(例如土地覆被或存在/不存在)的栅格,请选中类别复选框。

Value Table
输入预测要素
(可选)

表示将进行预测的位置的要素类。 此要素类还必须包含作为字段提供的任何解释变量,这些字段对应于训练数据中使用的字段。

Feature Layer
输出预测要素
(可选)

包含预测结果的输出要素类。

Feature Class
输出预测表面
(可选)

包含预测结果的输出栅格。 默认像元大小将为栅格输入的最大像元大小。 要设置其他像元大小,请使用像元大小环境设置。

Raster Dataset
匹配解释变量
(可选)

根据右侧输入训练要素参数以及左侧输入预测要素参数中其对应字段指定的解释变量值的列表。

Value Table
匹配距离要素
(可选)

根据右侧输入训练要素参数以及左侧输入预测要素参数中其对应要素指定的解释距离要素值的列表。

如果用于训练的要素位于不同的研究区域或时间段,则可以提供更适用于输入预测要素参数的解释距离要素值。

Value Table
匹配解释栅格
(可选)

根据右侧输入训练要素参数以及左侧输入预测要素参数或预测表面参数中其对应栅格指定的解释栅格值的列表。

如果用于训练的要素位于不同的研究区域或时间段,则可以提供更适用于输入预测要素参数的解释栅格值。

Value Table
输出训练要素
(可选)

用于训练(包括采样栅格值和距离计算)的解释变量、观察的要预测的变量字段,以及可用于进一步评估训练模型性能的相应预测。

Feature Class
输出变量重要性表格
(可选)

将包含模型中使用的每个解释变量重要性的描述信息的表格。 解释变量包含用于创建模型的字段、距离要素和栅格。

如果模型类型参数值为梯度提升,则将通过增益、权重和覆盖来衡量重要性,并且该表将包含这些字段。 如果验证的运行次数参数值为 1,则输出将包含一个条形图;如果该值大于 1,则输出将包含一个箱线图,其中显示了解释变量的重要性。

Table
将面转换为用于训练的栅格分辨率
(可选)

如果输入训练要素值为面要素(要预测的变量为类别变量),并且仅提供了解释训练栅格值,则训练模型时需要指定面的处理方式。

  • 选中 - 将面划分为所有栅格像元,其中质心落在面范围内。 提取每个质心处的栅格值并将其用于训练模型。 将不再基于该面对模型进行训练;而是基于针对每个像元质心提取的栅格值对模型进行训练。 这是默认设置。

    面划分为栅格像元

  • 未选中 - 将为每个面指定基础连续栅格的平均值和基础类别栅格的众数。

    指定面值为平均值或众数

Boolean
树数
(可选)

将在基于森林的模型和梯度提升模型中创建的树数。 默认值为 100。

如果模型类型参数值为基于森林,则增大树数通常将产生更加精确的模型预测;但是,将增加模型计算的时间。 如果模型类型参数值为梯度提升,则增大树数可能会产生更加精确的模型预测;但是,它们也可能导致训练数据过度拟合。 要避免过度拟合数据,请提供最大树深L2 正则化 (Lambda)分割最小损失减少 (Gamma)学习率 (Eta) 参数的值。

Long
最小叶子大小
(可选)

保留叶子(即未进一步进行分割的树上的终端节点)所需的最小观测值数。 回归的默认最小值为 5,分类的默认值为 1。 对于非常大的数据,增大这些数值将减少工具的运行时间。

Long
最大树深
(可选)

对树进行的最大分割数。 如果使用较大的最大深度,则将创建更多分割,这可能会增大过度拟合模型的可能性。 如果模型类型参数值为基于森林,则默认值由数据驱动,并且取决于所创建的树数以及所包含的变量数。 如果模型类型参数值为梯度提升,则默认值为 6。

Long
每棵树的可用数据 (%)
(可选)

用于每棵决策树的输入训练要素值的百分比。 默认值为 100% 的数据。 将根据指定数据的三分之二随机获取每棵树的样本。

可以使用可用训练数据的随机样本或子集(大约三分之二)来创建森林中的每棵决策树。 针对每棵决策树使用较低百分比的输入数据可以减少适用于大型数据集的工具的运行时间。

Long
随机采样的变量数
(可选)

用于创建每棵决策树的解释变量数。

将使用指定解释变量的随机子集来创建基于森林的模型和梯度提升模型中的每个决策树。 增大每棵决策树中使用的变量数将增大过度拟合模型的可能性,尤其是存在一个或多个主导变量时更是如此。 如果要预测的变量值为类别变量,则使用解释变量(组合字段、距离和栅格)总数的平方根;如果要预测的变量值为数值变量,则将解释变量(组合字段、距离和栅格)的总数除以 3。

Long
针对验证而排除的训练数据 (%)
(可选)

要保留为验证测试数据集的输入训练要素值的百分比(介于 10% 和 50% 之间)。 将在没有此随机数据子集的情况下对模型进行训练,并将这些要素的模型预测值与观测值进行比较。 默认值为 10%。

Double
输出分类性能表(混淆矩阵)
(可选)

一个混淆矩阵,其中汇总了根据验证数据创建的模型的性能。 该矩阵将对验证数据的模型预测类别与实际类别进行比较。 此表可用于计算输出消息中未包含的其他诊断。 当要预测的变量值为类别变量并且选中视为类别变量参数时,此参数可用。

Table
输出验证表
(可选)

如果要预测的变量值不是类别变量,则该表包含每个模型的 R2;如果该值为类别变量,则该表包含每个模型的精度。 此表包括精度或 R2 值分布的条形图。 此分布可用于评估模型的稳定性。 当验证的运行次数值大于 2 时,此参数可用。

Table
补偿稀疏类别
(可选)

指定训练数据集中的每个类别(无论其频率如何)都将在每棵树中表示。 当模型类型参数值为基于森林时,此参数可用。

  • 选中 - 每棵树将包括训练数据集中存在的各个类别。
  • 未选中 - 将基于训练数据集中类别的随机样本来创建每棵树。 这是默认设置。

Boolean
验证的运行次数
(可选)

工具迭代次数。

可以使用输出验证表参数来显示所有模型的 R2 值或精度的分布。 如果预测类型参数值为预测至栅格预测至要素,则将使用产生最高 R2 值或精度的模型进行预测。

Long
计算不确定性
(可选)

指定在训练、预测要素或预测栅格时是否计算预测不确定性。

模型类型参数值为基于森林时,此参数可用。

  • 选中 - 将被计算预测不确定性区间。
  • 未选中 - 不计算不确定性。 这是默认设置。
Boolean
输出已训练模型文件
(可选)

将保存训练后模型的输出模型文件,稍后可用于预测。

File
模型类型
(可选)

指定将用于创建模型的方法。

  • 基于森林将使用随机森林算法的改编版本来创建模型。 该模型将使用数百个决策树的投票。 将根据原始数据和原始变量的随机生成子集来创建每棵决策树。
  • 梯度提升将使用极限梯度提升 (XGBoost) 算法创建模型。 该模型将创建一个由数百棵树组成的序列,其中后续每棵树都会校正前面的树的误差。
String
L2 正则化 (Lambda)
(可选)

正则化项,可降低模型对单个要素的敏感度。 增加该值将使模型更加保守,防止过度拟合训练数据。 如果该值为 0,模型就会变成传统的梯度提升模型。 默认值为 1。

模型类型参数值为梯度提升时,此参数可用。

Double
分割最小损失减少 (Gamma)
(可选)

分割树木所需的最小损失减少量阈值。

评估潜在分割的损失减少情况。 如果候选分割的损失减少量高于该阈值,则将进行分割。 较高的阈值可以避免过度拟合,并产生具有较少分区的更加保守的模型。 默认值为 0。

模型类型参数值为梯度提升时,此参数可用。

Double
学习率 (Eta)
(可选)

该值可减少每棵树对最终预测的贡献。 该值应大于 0 且小于或等于 1。 较低的学习率可防止模型过度拟合;但是,它可能需要较长的计算时间。 默认值为 0.3。

模型类型参数值为梯度提升时,此参数可用。

Double
用于搜索分割的最大立方图格数
(可选)

将训练数据划分到的立方图格数以搜索最佳分割点。 该值不能为 1。 默认值为 0,对应于使用贪婪算法。 贪婪算法将在每个数据点处创建候选分割。 不建议提供过少的立方图格进行搜索,因为这将导致模型预测性能较差。

模型类型参数值为梯度提升时,此参数可用。

Long
优化参数
(可选)

指定是否将使用优化方法以查找实现最佳模型性能的超参数集。

  • 选中 - 将使用优化方法以查找超参数集。
  • 未选中 - 将不会使用优化方法。 这是默认设置。

Boolean
优化方法
(可选)

指定将用于选择和测试搜索点以查找最佳超参数集的优化方法。 搜索点为模型参数设置参数指定的搜索空间内的超参数组合。 当选中优化参数参数时,此选项可用。

  • 随机搜索(快速)将使用分层随机采样算法来选择搜索空间内的搜索点。 这是默认设置。
  • 随机搜索(稳健)将使用分层随机采样算法来选择搜索点。 每次搜索将使用不同的随机种子运行 10 次。 每次搜索的结果将为优化目标(目标)参数值确定的最佳运行中值。 如果模型类型参数值为基于森林,则此选项可用。
  • 格网搜索将选择搜索空间内的每个搜索点。
String
优化目标(目标)
(可选)

指定将最小化或最大化以查找最佳超参数集的目标函数或值。

  • R 平方优化方法将最大化 R2 以查找最佳超参数集。 仅当要预测的变量不是类别变量时,此选项才可用。 当要预测的变量不是类别变量时,这是默认值。
  • 均方根误差 (RMSE)优化方法将最小化均方根误差以查找最佳超参数集。 仅当要预测的变量不是类别变量时,此选项才可用。
  • 精度优化方法将最大化精度以查找最佳模型。 仅当要预测的变量是类别变量时,此选项才可用。 当要预测的变量是类别变量时,这是默认值。
  • 马修斯相关系数 (MCC)优化方法将最大化马修斯相关系数以查找最佳超参数集。 仅当要预测的变量是类别变量时,此选项才可用。
  • F1 得分优化方法将最大化 F1 得分以查找最佳超参数集。 仅当要预测的变量是类别变量时,此选项才可用。
String
参数集的运行次数
(可选)

将进行测试的模型参数设置参数指定的搜索空间内的搜索点数。 当优化方法值为随机搜索(快速)随机搜索(稳健)时,此参数可用。

Long
模型参数设置
(可选)

超参数及其搜索空间的列表。 通过提供下限、上限和区间来自定义每个超参数的搜索空间。 下限和上限将指定超参数的可能值范围。

以下是每个超参数的有效值范围:

  • 树数 (number_of_trees) - 大于 1 的整数值。
  • 最大树深 (maximum_depth) - 大于等于 0 的整数值。
  • 最小叶大小 (minimum_leaf_size) - 大于 1 的整数值。
  • 每棵树的可用数据 (%) (sample_size) - 大于 0 且小于或等于 100 的整数值。
  • 随机采样变量数 (random_variables) - 小于或等于解释变量数的整数值。 包含来自字段、距离要素和栅格的解释变量。
  • 学习率 (Eta) (eta) - 大于 0 且小于或等于 1 的双精度值。
  • L2 正则化 (Lambda) (reg_lambda) - 大于或等于 0 的双精度值。
  • 分割最小损失减少 (Gamma) (gamma) - 大于或等于 0 的双精度值。
  • 用于搜索分割的最大图格数 (max_bins) - 大于 1 的整数值或值 0。 值为 0 表示模型将在每个数据点处创建候选分割。

Value Table
输出参数调整表格
(可选)

一个表格,其中包含每次优化尝试的参数设置和目标值。 输出将包含所有尝试及其目标值的图表。 当选中优化参数时,此选项可用。

Table

派生输出

标注说明数据类型
输出不确定性栅格图层

选中计算不确定性参数时,工具将计算要预测的变量参数的每个预测值周围的 90% 预测区间。

Raster Layer

arcpy.stats.Forest(prediction_type, in_features, {variable_predict}, {treat_variable_as_categorical}, {explanatory_variables}, {distance_features}, {explanatory_rasters}, {features_to_predict}, {output_features}, {output_raster}, {explanatory_variable_matching}, {explanatory_distance_matching}, {explanatory_rasters_matching}, {output_trained_features}, {output_importance_table}, {use_raster_values}, {number_of_trees}, {minimum_leaf_size}, {maximum_depth}, {sample_size}, {random_variables}, {percentage_for_training}, {output_classification_table}, {output_validation_table}, {compensate_sparse_categories}, {number_validation_runs}, {calculate_uncertainty}, {output_trained_model}, {model_type}, {reg_lambda}, {gamma}, {eta}, {max_bins}, {optimize}, {optimize_algorithm}, {optimize_target}, {num_search}, {model_param_setting}, {output_param_tuning_table})
名称说明数据类型
prediction_type

指定要使用的操作模式。 可以运行此工具来训练模型,以仅评估性能、预测要素或创建预测表面。

  • TRAIN将训练模型,但不会生成预测。 生成预测之前,可以使用此选项评估模型的精度。 此选项将在消息窗口和变量重要性图表中输出模型诊断。 这是默认设置。
  • PREDICT_FEATURES将针对要素生成预测或分类。 必须为训练要素和要预测的要素提供解释变量。 该选项的输出将为要素类、消息窗口中的模型诊断以及变量重要性的可选表格和图表。
  • PREDICT_RASTER对于解释栅格相交的区域,将生成预测栅格。 必须为训练区域和要预测的区域提供解释栅格。 该选项的输出将为预测表面、消息窗口中的模型诊断以及变量重要性的可选表格和图表。
String
in_features

要素类,包含 variable_predict 参数值以及字段中的解释训练变量(可选)。

Feature Layer
variable_predict
(可选)

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

Field
treat_variable_as_categorical
(可选)
  • CATEGORICALvariable_predict 值为类别变量,并且将执行分类。
  • NUMERICvariable_predict 值为连续变量,并且将执行回归。 这是默认设置
Boolean
explanatory_variables
[[Variable, Categorical],...]
(可选)

表示解释变量的字段列表,可帮助预测 variable_predict 值的值或类别。 对于任何表示类或类别(例如土地覆被或存在/不存在)的变量,请使用 treat_variable_as_categorical 参数。 如果为表示类或类别(例如土地覆被或存在/不存在)的变量,请指定变量为 CATEGORICAL;如果变量为连续变量,请指定变量为 NUMERIC

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

解释训练距离要素。 通过计算从提供的要素到 in_features 值的距离,将自动创建解释变量。 将计算从 in_features 值中的每个要素到最近的 distance_features 值的距离。 如果输入 distance_features 值为面要素或线要素,则距离属性将计算为要素对的最近线段之间的距离。

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

从栅格中提取的解释训练变量。 解释训练变量将通过提取栅格像元值自动创建。 对于 in_features 参数中的每个要素,将在此确切位置处提取栅格像元的值。 提取栅格值时,将使用双线性栅格重采样;如果指定栅格为类别栅格,则将使用最邻近分配法。 如果为表示类或类别(例如土地覆被或存在/不存在)的变量,请指定栅格为 CATEGORICAL;如果变量为连续变量,请指定栅格为 NUMERIC

Value Table
features_to_predict
(可选)

表示将进行预测的位置的要素类。 此要素类还必须包含作为字段提供的任何解释变量,这些字段对应于训练数据中使用的字段。

Feature Layer
output_features
(可选)

包含预测结果的输出要素类。

Feature Class
output_raster
(可选)

包含预测结果的输出栅格。 默认像元大小将为栅格输入的最大像元大小。 要设置其他像元大小,请使用像元大小环境设置。

Raster Dataset
explanatory_variable_matching
[[Prediction, Training],...]
(可选)

根据右侧 in_features 值以及左侧 features_to_predict 参数中其对应字段指定的 explanatory_variables 值的列表,例如 [["LandCover2000", "LandCover2010"], ["Income", "PerCapitaIncome"]]

Value Table
explanatory_distance_matching
[[Prediction, Training],...]
(可选)

根据右侧 in_features 参数以及左侧 features_to_predict 参数中其对应要素指定的 distance_features 值的列表。

如果用于训练的要素位于不同的研究区域或时间段,则可以提供更适用于 features_to_predict 参数的 explanatory_distance_features 值。

Value Table
explanatory_rasters_matching
[[Prediction, Training],...]
(可选)

根据右侧 in_features 以及将在左侧创建的 features_to_predict 参数或 output_raster 参数中其对应要素指定的 explanatory_rasters 值的列表。

如果用于训练的要素位于不同的研究区域或时间段,则可以提供更适用于 features_to_predictexplanatory_rasters 值。

Value Table
output_trained_features
(可选)

用于训练(包括采样栅格值和距离计算)的解释变量、观察的 variable_predict 字段,以及可用于进一步评估训练模型性能的相应预测。

Feature Class
output_importance_table
(可选)

表格将包含描述用于创建模型的每个解释变量(字段、距离要素和栅格)的重要性的信息。

Table
use_raster_values
(可选)

如果 in_features 值为面要素(variable_predict 值为类别变量),并且仅提供了 explanatory_rasters 值,则训练模型时需要指定面的处理方式。

  • TRUE将面划分为所有栅格像元,其中质心落在面范围内。 提取每个质心处的栅格值并将其用于训练模型。 不再基于该面对模型进行训练,而是基于针对每个像元质心提取的栅格值对模型进行训练。 这是默认设置。
  • FALSE为每个面指定基础连续栅格的平均值和基础类别栅格的众数。
Boolean
number_of_trees
(可选)

将在基于森林的模型和梯度提升模型中创建的树数。 默认值为 100。

如果 model_type 参数值为 FOREST-BASED,则增大树数通常将产生更加精确的模型预测;但是,将增加模型计算的时间。 如果 model_type 参数值为 GRADIENT_BOOSTED,则增大树数可能会产生更加精确的模型预测;但是,它们也可能导致训练数据过度拟合。 要避免过度拟合数据,请提供 maximum_depthreg_lambdagammaeta 参数的值。

Long
minimum_leaf_size
(可选)

保留叶子(即未进一步进行分割的树上的终端节点)所需的最小观测值数。 回归的默认最小值为 5,分类的默认值为 1。 对于非常大的数据,增大这些数值将减少工具的运行时间。

Long
maximum_depth
(可选)

对树进行的最大分割数。 如果使用较大的最大深度,则将创建更多分割,这可能会增大过度拟合模型的可能性。 如果 model_type 参数值为 FOREST-BASED,则默认值由数据驱动,并且取决于所创建的树数以及所包含的变量数。 如果 model_type 参数值为 GRADIENT_BOOSTED,则默认值为 6。

Long
sample_size
(可选)

用于每棵决策树的 in_features 值的百分比。 默认值为 100% 的数据。 将根据指定数据的三分之二随机获取每棵树的样本。

可以使用可用训练数据的随机样本或子集(大约三分之二)来创建森林中的每棵决策树。 针对每棵决策树使用较低百分比的输入数据可以减少适用于大型数据集的工具的运行时间。

Long
random_variables
(可选)

用于创建每棵决策树的解释变量数。

森林中的每棵决策树都是使用指定解释变量的随机子集创建的。 增大每棵决策树中使用的变量数将增大过度拟合模型的可能性,尤其是存在一个或多个主导变量时更是如此。 常用方法是:如果 variable_predict 值为类别变量,则使用解释变量(组合字段、距离和栅格)总数的平方根;如果 variable_predict 值为数值变量,则将解释变量(组合字段、距离和栅格)的总数除以 3。

Long
percentage_for_training
(可选)

要保留为验证测试数据集的 in_features 值的百分比(介于 10% 和 50% 之间)。 将在没有此随机数据子集的情况下对模型进行训练,并将这些要素的观测值与预测值进行比较。 默认值为 10%。

Double
output_classification_table
(可选)

一个混淆矩阵,其中汇总了根据验证数据创建的模型的性能。 该矩阵将对验证数据的模型预测类别与实际类别进行比较。 此表可用于计算输出消息中未包含的其他诊断。 当 variable_predict 值为类别变量并且 treat_variable_as_categorical 参数值为 CATEGORICAL 时,此参数可用。

Table
output_validation_table
(可选)

如果 variable_predict 值不是类别变量,则该表包含每个模型的 R2;如果该值为类别变量,则该表包含每个模型的精度。 此表包括精度或 R2 值分布的条形图。 此分布可用于评估模型的稳定性。 当 number_validation_runs 值大于 2 时,此参数可用。

Table
compensate_sparse_categories
(可选)

指定训练数据集中的每个类别(无论其频率如何)都将在每棵树中表示。 当 model_type 参数值为 FOREST-BASED 时,此参数可用。

  • TRUE每棵树将包括训练数据集中存在的各个类别。
  • FALSE将基于训练数据集中类别的随机样本来创建每棵树。 这是默认设置。
Boolean
number_validation_runs
(可选)

工具迭代次数。

可以使用 output_validation_table 参数来显示所有模型的 R2 值或精度的分布。 如果 prediction_type 参数值为 PREDICT_RASTERPREDICT_FEATURES,则将使用产生最高 R2 值或精度的模型进行预测。

Long
calculate_uncertainty
(可选)

指定在训练、预测要素或预测栅格时是否计算预测不确定性。

model_type 参数值为 FOREST-BASED 时,此参数可用。

  • TRUE将计算预测不确定性区间。
  • FALSE不计算不确定性。 这是默认设置。
Boolean
output_trained_model
(可选)

将保存训练后模型的输出模型文件,稍后可用于预测。

File
model_type
(可选)

指定将用于创建模型的方法。

  • FOREST-BASED将使用随机森林算法的改编版本来创建模型。 该模型将使用数百个决策树的投票。 将根据原始数据和原始变量的随机生成子集来创建每棵决策树。
  • GRADIENT_BOOSTED将使用极限梯度提升 (XGBoost) 算法创建模型。 该模型将创建一个由数百棵树组成的序列,其中后续每棵树都会校正前面的树的误差。
String
reg_lambda
(可选)

正则化项,可降低模型对单个要素的敏感度。 增加该值将使模型更加保守,防止过度拟合训练数据。 如果该值为 0,模型就会变成传统的梯度提升模型。 默认值为 1。

model_type 参数值为 GRADIENT_BOOSTED 时,此参数可用。

Double
gamma
(可选)

分割树木所需的最小损失减少量阈值。

评估潜在分割的损失减少情况。 如果候选分割的损失减少量高于该阈值,则将进行分割。 较高的阈值可以避免过度拟合,并产生具有较少分区的更加保守的模型。 默认值为 0。

model_type 参数值为 GRADIENT_BOOSTED 时,此参数可用。

Double
eta
(可选)

该值可减少每棵树对最终预测的贡献。 该值应大于 0 且小于或等于 1。 较低的学习率可防止模型过度拟合;但是,它可能需要较长的计算时间。 默认值为 0.3。

model_type 参数值为 GRADIENT_BOOSTED 时,此参数可用。

Double
max_bins
(可选)

将训练数据划分到的立方图格数以搜索最佳分割点。 该值不能为 1。 默认值为 0,对应于使用贪婪算法。 贪婪算法将在每个数据点处创建候选分割。 不建议提供过少的立方图格进行搜索,因为这将导致模型预测性能较差。

model_type 参数值为 GRADIENT_BOOSTED 时,此参数可用。

Long
optimize
(可选)

指定是否将使用优化方法以查找实现最佳模型性能的超参数集。

  • TRUE将使用优化方法以查找超参数集。
  • FALSE将不会使用优化方法。 这是默认设置。
Boolean
optimize_algorithm
(可选)

指定将用于选择和测试搜索点以查找最佳超参数集的优化方法。 搜索点为 model_param_setting 参数指定的搜索空间内的超参数组合。 当 optimize 参数值为 TRUE 时,此选项可用。

  • RANDOM将使用分层随机采样算法来选择搜索空间内的搜索点。 这是默认设置。
  • RANDOM_ROBUST将使用分层随机采样算法来选择搜索点。 每次搜索将使用不同的随机种子运行 10 次。 每次搜索的结果将为 optimize_target 参数值确定的最佳运行中值。 当 model_type 参数值为 FOREST-BASED 时,此选项可用。
  • GRID将选择搜索空间内的每个搜索点。
String
optimize_target
(可选)

指定将最小化或最大化以查找最佳超参数集的目标函数或值。

  • R2优化方法将最大化 R2 以查找最佳超参数集。 仅当要预测的变量不是类别变量时,此选项才可用。 当要预测的变量不是类别变量时,这是默认值。
  • RMSE优化方法将最小化均方根误差以查找最佳超参数集。 仅当要预测的变量不是类别变量时,此选项才可用。
  • ACCURACY优化方法将最大化精度以查找最佳模型。 仅当要预测的变量是类别变量时,此选项才可用。 当要预测的变量是类别变量时,这是默认值。
  • MCC优化方法将最大化马修斯相关系数以查找最佳超参数集。 仅当要预测的变量是类别变量时,此选项才可用。
  • F1-SCORE优化方法将最大化 F1 得分以查找最佳超参数集。 仅当要预测的变量是类别变量时,此选项才可用。
String
num_search
(可选)

将进行测试的 model_param_setting 参数指定的搜索空间内的搜索点数。 当 optimize_algorithm 参数值为 RANDOMRANDOM_ROBUST 时,此参数可用。

Long
model_param_setting
[model_param_setting,...]
(可选)

超参数及其搜索空间的列表。 通过提供下限、上限和区间来自定义每个超参数的搜索空间。 下限和上限将指定超参数的可能值范围。

以下是每个超参数的有效值范围:

  • 树数 (number_of_trees) - 大于 1 的整数值。
  • 最大树深 (maximum_depth) - 大于等于 0 的整数值。
  • 最小叶大小 (minimum_leaf_size) - 大于 1 的整数值。
  • 每棵树的可用数据 (%) (sample_size) - 大于 0 且小于或等于 100 的整数值。
  • 随机采样变量数 (random_variables) - 小于或等于解释变量数的整数值。 包含来自字段、距离要素和栅格的解释变量。
  • 学习率 (Eta) (eta) - 大于 0 且小于或等于 1 的双精度值。
  • L2 正则化 (Lambda) (reg_lambda) - 大于或等于 0 的双精度值。
  • 分割最小损失减少 (Gamma) (gamma) - 大于或等于 0 的双精度值。
  • 用于搜索分割的最大图格数 (max_bins) - 大于 1 的整数值或值 0。 值为 0 表示模型将在每个数据点处创建候选分割。

Value Table
output_param_tuning_table
(可选)

一个表格,其中包含每次优化尝试的参数设置和目标值。 输出将包含所有尝试及其目标值的图表。 当 optimizeTRUE 时,此选项可用。

Table

派生输出

名称说明数据类型
output_uncertainty_raster_layers

calculate_uncertainty 设置为 TRUE 时,该工具将计算出 variable_predict 参数中每个预测值周围 90% 的预测区间。

Raster Layer

代码示例

Forest 示例 1(Python 窗口)

以下 Python 脚本演示了如何使用 Forest 函数。

import arcpy
arcpy.env.workspace = r"c:\data"

# Forest-based model using only the training method and all data
# comes from a single polygon feature class. The tool excludes 10% of the 
# input features from training and uses these values to validate the model.

prediction_type = "TRAIN"
in_features = r"Boston_Vandalism.shp"
variable_predict = "VandCnt"
explanatory_variables = [["Educat", "false"], ["MedAge", "false"], 
    ["HHInc", "false"], ["Pop", "false"]]
output_trained_features = "TrainingFeatures.shp"
number_of_trees = 100
sample_size = 100
percentage_for_training = 10

arcpy.stats.Forest(prediction_type, in_features, variable_predict, None,
    explanatory_variables, None, None, None, None, None, None, None, None,
    output_trained_features, None, True, number_of_trees, None, None, sample_size, 
    None, percentage_for_training)
Forest 示例 2(独立脚本)

以下 Python 脚本演示了如何使用 Forest 函数以预测至要素。

# Import system modules
import arcpy

# Set property to overwrite existing outputs
arcpy.env.overwriteOutput = True

# Set the work space to a gdb
arcpy.env.workspace = r"C:\Data\BostonCrimeDB.gdb"

# Forest-based model taking advantage of both distance features and 
# explanatory rasters. The training and prediction data has been manually
# split so the percentage to exclude parameter was set to 0. A variable importance
# table is created to help assess results and advanced options have been used
# to fine tune the model.

prediction_type = "PREDICT_FEATURES"
in_features = r"Boston_Vandalism_Training"
variable_predict = "Vandalism_Count"
treat_variable_as_categorical = None
explanatory_variables = [["EduClass", "true"], ["MedianAge", "false"],
    ["HouseholdIncome", "false"], ["TotalPopulation", "false"]]
distance_features = r"Boston_Highways"
explanatory_rasters = r"LandUse true"
features_to_predict = r"Boston_Vandalism_Prediction"
output_features = r"Prediction_Output"
output_raster = None
explanatory_variable_matching = [["EduClass", "EduClass"], ["MedianAge", "MedianAge"], 
    ["HouseholdIncome", "HouseholdIncome"], ["TotalPopulation", "TotalPopulation"]]
explanatory_distance_matching = [["Boston_Highways", "Boston_Highways"]]
explanatory_rasters_matching = [["LandUse", "LandUse"]]
output_trained_features = r"Training_Output"
output_importance_table = r"Variable_Importance"
use_raster_values = True
number_of_trees = 100
minimum_leaf_size = 2
maximum_level = 5
sample_size = 100
random_sample = 3
percentage_for_training = 0

arcpy.stats.Forest(prediction_type, in_features, variable_predict,
    treat_variable_as_categorical, explanatory_variables, distance_features,
    explanatory_rasters, features_to_predict, output_features, output_raster,
    explanatory_variable_matching, explanatory_distance_matching, 
    explanatory_rasters_matching, output_trained_features, output_importance_table,
    use_raster_values, number_of_trees, minimum_leaf_size, maximum_level,
    sample_size, random_sample, percentage_for_training)
Forest 示例 3(独立脚本)

以下 Python 脚本演示了如何使用 Forest 函数以创建预测表面。

# Import system modules
import arcpy

# Set property to overwrite existing outputs
arcpy.env.overwriteOutput = True

# Set the work space to a gdb
arcpy.env.workspace = r"C:\Data\Landsat.gdb"

# Using a forest-based model to classify a landsat image. The TrainingPolygons feature 
# class was created manually and is used to train the model to 
# classify the remainder of the landsat image.

prediction_type = "PREDICT_RASTER"
in_features = r"TrainingPolygons"
variable_predict = "LandClassName"
treat_variable_as_categorical = "CATEGORICAL" 
explanatory_variables = None
distance_features = None
explanatory_rasters = [["Band1", "false"], ["Band2", "false"], ["Band3", "false"]]
features_to_predict = None
output_features = None
output_raster = r"PredictionSurface"
explanatory_variable_matching = None
explanatory_distance_matching = None
explanatory_rasters_matching = [["Band1", "Band1"], ["Band2", "Band2"], ["Band3", "Band3"]]
output_trained_features = None
output_importance_table = None
use_raster_values = True
number_of_trees = 100
minimum_leaf_size = None
maximum_level = None
sample_size = 100
random_sample = None
percentage_for_training = 10

arcpy.stats.Forest(prediction_type, in_features, variable_predict,
    treat_variable_as_categorical, explanatory_variables, distance_features,
    explanatory_rasters, features_to_predict, output_features, output_raster,
    explanatory_variable_matching, explanatory_distance_matching, 
    explanatory_rasters_matching, output_trained_features, output_importance_table,
    use_raster_values, number_of_trees, minimum_leaf_size, maximum_level,
    sample_size, random_sample, percentage_for_training)

环境

特殊情况

随机数生成器

使用的随机数生成器类型始终为 Mersenne Twister。

并行处理因子

仅当进行预测时,才会使用并行处理。