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

用法
此工具支持两种模型类型:基于森林的模型和梯度提升模型。 两种模型类型均使用数百棵树(称为决策树集成),从而创建可用于预测的模型。
基于森林—通过应用装袋技术创建模型,其中将使用原始(训练)数据的随机生成部分并行创建每棵决策树。 每棵树可以生成自己的预测并对结果进行投票。 基于森林的模型将考虑所有决策树的投票,以预测或分类未知样本的结果。 此功能非常重要,因为单棵树可能存在过度拟合模型的问题;但森林中的多棵树进行预测可解决与单棵树相关的过度拟合问题。 该模型需要的参数较少,并且更加直观。
梯度提升—通过应用提升技术创建模型,其中将使用原始(训练)数据顺序创建每棵决策树。 后续每棵树都会校正前面的树的误差,因此该模型结合了多个弱学习器,以成为一个强预测模型。 梯度提升模型包含正则化和早期停止功能技术,可防止过度拟合。 该模型提供了对超参数的更好控制,并且更加复杂。
此工具可用于三种操作模式中:训练、预测至要素和预测至栅格。 在探索不同的解释变量和工具设置时,可以使用预测类型参数中的仅训练选项来评估不同模型的性能。 找到合适的模型后,可以使用预测至要素或预测至栅格选项。
这是一个数据驱动工具,在大型数据集上性能最佳。 为获得最佳结果,应针对至少数百个要素对该工具进行训练。 该工具不适用于非常小的数据集。
输入训练要素参数值可以是点或面。 而且,此工具不能用于处理多部分数据。
要使用栅格作为解释变量或预测至输出预测表面值,需要 ArcGIS Spatial Analyst 扩展模块许可。
此工具将生成以下可选输出:
输出训练要素—包含所有输入训练要素值以及模型中使用的所有解释变量的要素类。 解释变量将包含使用的所有输入字段、计算的距离,以及提取或计算的栅格值。 要素类还将包含输入训练要素值中每个要素的预测。 包含用于训练和验证模型的要素。 如果要预测的变量不是类别变量,则要素类将包含每个预测的残差和标准残差。 如果要预测的变量是类别变量,则要素类将包含一个
Correctly Classified字段,该字段用于指定模型是否正确地对每个预测进行了分类。 可以使用Residual和Standard Residual字段或者Correctly Classified字段以帮助评估所创建模型的性能。输出训练模型文件—包含训练模型结果的可重复使用文件。 可以在使用空间统计模型文件预测工具中使用文件来预测新要素。
输出预测要素—包含每个要素的模型预测值的要素类。 仅当预测类型参数值为预测至要素时,此选项才可用。
输出预测表面—包含预测结果的输出栅格。 仅当预测类型参数值为预测至栅格时,此输出才可用。
输出变量重要性表格—一个表格,用于描述每个解释变量(字段、距离要素和栅格)的重要性。
输出参数调整表格—一个表格,其中包含每次优化尝试的参数设置和目标值。 仅当选中优化参数参数时,此输出才可用。
输出分类性能表(混淆矩阵)—一个表格,其中汇总了模型在验证数据上的性能。 矩阵的列代表模型预测的类别,行代表实际类别。 可以使用该表来评估模型在验证数据上的性能。 仅当选中视为分类变量参数时,此输出才可用。
此工具将创建消息以帮助您了解所创建模型的性能。 可将鼠标悬停在进度条上、单击弹出按钮或展开地理处理窗格中的消息部分来访问消息。 您还可以使用地理处理历史访问之前运行工具的消息。 这些消息包含如下内容:
有关模型特征的信息
模型袋外误差
训练诊断
验证诊断
解释变量诊断
Variable Importance—如果提供了输出变量重要性表格参数值,则地理处理消息将报告重要性最高的 20 个变量。 如果验证的运行次数参数值大于 1,则将存在多组变量重要性值。 每次运行都将具有一组变量重要性值,因此地理处理消息将报告与 R 方或精度最接近 R 方或精度中位数的运行相关联的一组变量重要性值。
此工具将向内容窗格添加以下可选图表:
预测性能—堆叠条形图,帮助评估模型与数据的拟合程度。 x 轴上的类别由模型针对输入训练要素值进行预测。 包含用于训练和验证模型的要素。 颜色表示输入训练要素的真实类别。 仅当要预测的变量为类别变量、选中将变量视为分类变量复选框并提供输出训练要素参数时,才会生成此图表。
混淆矩阵—矩阵热点图。 x 轴表示输入训练要素值中要素的预测类别,y 轴表示其实际类别。 对角像元用于可视化模型正确预测类别的次数。 对角像元中的计数越高,指示该模型的性能良好。 仅当要预测的变量是分类变量且选中将变量视为分类变量参数时,才会生成此图表。
变量重要性的摘要或变量重要性的分布—一个条形图,其中显示了每个解释变量对模型的重要性。 如果验证的运行次数值大于 1,则图表将为箱形图,其中显示了每个解释变量的重要性值的分布。 如果提供输出变量重要性表格参数值,则将生成此图表。
验证性能—堆叠条形图,帮助评估模型在验证数据上的执行性能。 验证数据中要素的实际类别位于 x 轴上。 颜色表示验证数据中要素的预测类别。 仅当要预测的变量为分类变量、选中将变量视为分类变量复选框并提供**输出分类性能表(混淆矩阵)**参数值时,才会生成此图表。
验证 R2 或验证精度—显示 R2 或精度值分布的直方图。 R2 或精度值的分布是由于创建模型时引入的随机性造成的。 该图表有助于评估不同模型运行期间模型性能的稳定性。 仅当提供了输出验证表参数值并且验证的运行次数值大于 1 时,才会生成此图表。
解释变量可以来自字段、可通过距离要素进行计算得出或者从栅格中提取得出。 可以使用这些解释变量类型的任意组合,但至少要使用一种类型。 使用的解释变量(来自字段、距离要素或栅格)应该包含各种值。 如果解释变量为分类变量,请选中分类变量复选框。 对于字符串类型的变量,将自动选中分类变量复选框。 尽管较小的类别数量可改善模型性能,但分类解释变量限于 60 个唯一值。 对于给定的数据大小,变量所包含的类别越多,则其影响模型的可能性越大,从而导致预测结果的有效性越低。
距离要素用于自动创建解释变量,这些解释变量表示给定要素与输入训练要素值的距离。 将计算从输入训练要素值的每个要素到最近的解释训练距离要素值的距离。 如果输入解释训练距离要素值为面要素或线要素,则距离属性将计算为要素对的最近线段之间的距离。 但是,面要素和线要素的距离计算方式不同。 有关详细信息,请参阅邻近分析工具计算距离的方法。
如果输入训练要素值为点要素并且使用解释训练栅格参数,则工具将向下钻取以提取每个点位置处的解释变量。 对于多波段栅格,仅使用第一个波段。
尽管内容窗格中可以具有多个同名图层,但该工具不接受同名的解释距离图层和解释栅格图层。 要避免此问题,请确保每个图层都具有唯一名称,或者移除下拉列表中重复的图层名称。
如果输入训练要素值为面,要预测的变量参数值为分类变量,并且仅在使用解释训练栅格值,则可使用将面转换为栅格分辨率以供训练参数。 如果选中此参数,则将在每个栅格像元(其质心落在面范围内)的质心处将面划分为点。 然后,提取每个点位置处的栅格值并将其用于训练模型。 对于数值变量,将使用双线性采样方法;对于类别变量,将使用最邻近方法。 经过转换的面要素的默认像元大小将为输入栅格的最大像元大小。 但是,可使用像元大小环境设置更改此值。 如果未选中此参数,则将在模型中针对每个面使用一个栅格值。 将为每个面指定连续栅格的平均值和分类栅格的众数。

用于每个指定的解释变量的数据必须存在差异。 如果您收到错误,指示某个指定的字段或栅格中没有差异,则可以尝试再次运行此工具,将该变量标记为类别变量。 如果 95% 的要素对于特定变量具有相同的值,则可将此变量标记为没有差异。
如果类别中的变化不平衡,则可以使用补偿稀疏类别参数。 例如,如果某些类别在数据集中出现数百次,而少数类别出现的次数明显较少,则选中此参数将确保每棵树中存在用于创建平衡模型的各个类别。 仅当模型类型参数值为基于森林时,此参数才受支持。
对解释变量进行匹配时,
Prediction和Training字段的类型必须相同(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. In 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. In 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. In 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 |
|
针对验证而排除的训练数据 (%) (可选) |
从输入训练要素值中预留一定比例(介于 0% 和 50% 之间)作为验证用的测试数据集。 将在没有此随机数据子集的情况下对模型进行训练,并将这些要素的模型预测值与观测值进行比较。 默认值为 10%。 |
Double |
|
输出分类性能表(混淆矩阵) (可选) |
一个混淆矩阵,其中汇总了根据验证数据创建的模型的性能。 该矩阵将对验证数据的模型预测类别与实际类别进行比较。 此表可用于计算输出消息中未包含的其他诊断。 当要预测的变量值为分类变量并且选中视为分类变量参数时,此参数可用。 |
Table |
|
输出验证表 (可选) |
如果要预测的变量值不是类别变量,则该表包含每个模型的 R2;如果该值为类别变量,则该表包含每个模型的精度。 此表包括精度或 R2 值分布的条形图。 此分布可用于评估模型的稳定性。 当验证的运行次数值大于 2 时,此参数可用。 |
Table |
|
补偿稀疏类别 (可选) |
指定训练数据集中的每个类别(无论其频率如何)都将在每棵树中表示。 当模型类型参数值为基于森林时,此参数可用。
|
Boolean |
|
验证的运行次数 (可选) |
工具迭代次数。 可以使用输出验证表参数显示所有模型的 R 方值(连续)或精度(分类)的分布。 如果预测类型参数值为预测至栅格或预测至要素,则将使用生成中值 R 方值或精度的模型进行预测。 使用中值有助于确保预测的稳定性。 |
Long |
|
计算不确定性 (可选) |
指定在训练、预测要素或预测栅格时是否计算预测不确定性。 当模型类型参数值为基于森林时,此参数可用。
|
Boolean |
|
输出已训练模型文件 (可选) |
将保存训练后模型的输出模型文件,稍后可用于预测。 |
File |
|
模型类型 (可选) |
指定将用于创建模型的方法。
|
String |
|
L2 规则化 (Lambda) (可选) |
正则化项,可降低模型对单个要素的敏感度。 增加该值将使模型更加保守,防止过度拟合训练数据。 如果该值为 0,模型就会变成传统的梯度提升模型。 默认值为 1。 当模型类型参数值为梯度提升时,此参数可用。 |
Double |
|
用于分割的最小损失减少 (Gamma) (可选) |
分割树木所需的最小损失减少量阈值。 评估潜在分割的损失减少情况。 如果候选分割的损失减少量高于该阈值,则将进行分割。 较高的阈值可以避免过度拟合,并产生具有较少分区的更加保守的模型。 默认值为 0。 当模型类型参数值为梯度提升时,此参数可用。 |
Double |
|
学习率 (Eta) (可选) |
该值可减少每棵树对最终预测的贡献。 该值应大于 0 且小于或等于 1。 较低的学习率可防止模型过度拟合;但是,它可能需要较长的计算时间。 默认值为 0.3。 当模型类型参数值为梯度提升时,此参数可用。 |
Double |
|
用于搜索分割的最大图格数 (可选) |
将训练数据划分到的图格数以搜索最佳分割点。 该值不能为 1。 默认值为 0,对应于使用贪婪算法。 贪婪算法将创建在每个数据点处分割的候选项。 不建议提供过少的图格进行搜索,因为这将导致模型预测性能较差。 当模型类型参数值为梯度提升时,此参数可用。 |
Long |
|
优化参数 (可选) |
指定是否将使用优化方法以查找实现最佳模型性能的超参数集。
|
Boolean |
|
优化方法 (可选) |
指定将用于选择和测试搜索点以查找最佳超参数集的优化方法。 搜索点为模型参数设置参数指定的搜索空间内的超参数组合。 当选中优化参数参数时,此选项可用。
|
String |
|
优化目标(目标) (可选) |
指定将最小化或最大化以查找最佳超参数集的目标函数或值。
|
String |
|
参数集的运行次数 (可选) |
将进行测试的模型参数设置参数指定的搜索空间内的搜索点数。 当优化方法值为**随机搜索(快速)或随机搜索(稳健)**时,此参数可用。 |
Long |
|
模型参数设置 (可选) |
超参数及其搜索空间的列表。 通过提供下限、上限和区间来自定义每个超参数的搜索空间。 下限和上限将指定超参数的可能值范围。 值表列:
|
Value Table |
|
输出参数调整表格 (可选) |
一个表格,其中包含每次优化尝试的参数设置和目标值。 输出将包含所有尝试及其目标值的图表。 当选中优化参数时,此选项可用。 |
Table |
|
包括所有预测概率 (可选) |
对于要预测的分类变量,指定是预测分类变量的每个类别的概率还是仅预测记录类别的概率。 例如,如果分类变量具有类别 A、B 和 C,并且第一条记录具有类别 B,则使用此参数指定是预测类别 A、B 和 C 的概率还是仅预测类别 B 的概率。
|
Boolean |
派生输出
| 标注 | 说明 | 数据类型 |
|---|---|---|
|
输出不确定性栅格图层 |
选中计算不确定性参数时,工具将计算要预测的变量参数的每个预测值周围的 90% 预测区间。 |
Raster Layer |
环境
像元大小, 输出坐标系, 随机数生成器, 掩膜, 并行处理因子
特殊情况
- 随机数生成器
-
The Random Generator Type used is always Mersenne Twister.
- 并行处理因子
-
Parallel processing is only used when predictions are being made.
许可信息
- 基本: 受限
需要 Spatial Analyst 才能使用栅格。 - 标准: 受限
需要 Spatial Analyst 才能使用栅格。 - 高级: 受限
需要 Spatial Analyst 才能使用栅格。