基于森林的增强分类与回归的工作原理

基于森林的增强分类与回归工具会根据作为部分训练数据集提供的已知值训练模型。 然后,可使用此模型来预测具有相同解释变量的数据集中的未知值。 该工具使用两种有监督的机器学习方法之一创建模型并生成预测:一种是由 Leo Breiman 和 Adele Cutler 开发的随机森林算法的改编版,另一种是由 Tianqi Chen 和 Carlos Guestrin 开发的一种流行的提升方法 XGBoost。

基于森林模型创建了许多独立的决策树,统称为集合或森林。 每棵决策树都是根据训练数据和解释变量的随机子集创建的。 每棵树都会生成自己的预测结果,并作为汇总方案的一部分,用于做出最终预测。 最终预测不会基于任何单个树,而是基于整个森林。 这有助于避免模型与训练数据集过度拟合。

梯度提升模型创建了一系列连续的决策树。 每一棵后续决策树的建立都是为了最小化前一棵决策树的误差(偏差),因此梯度提升模型结合了多个弱学习器,成为一个强预测模型。 梯度提升模型包含正则化和早期停止功能,可防止模型与训练数据集过度拟合。

这两种类型的模型都可以用来预测分类变量(二元分类和多类分类)或连续变量(回归)。 当需要预测的变量是分类变量时,所构建的模型基于分类树;当需要预测的变量是连续变量时,所构建的模型基于回归树。

可能的应用

以下是此工具的潜在应用:

  • 给出有关海草是否存在的数据、表示为属性和栅格的一些环境解释变量,和距上游工厂和主要港口的距离之外,还可以根据对这些相同环境解释变量的未来预测来预测未来海草是否存在。
  • 假设您有全国数百个农场的作物产量数据、每个农场的特征数据(如员工人数和耕地面积)以及代表每个农场的坡度、海拔、降雨量和温度的若干栅格。 利用这些数据,您可以创建一个预测作物产量的模型。 如果为模型提供一组要素,代表具有相同解释变量的农场,就可以预测每个农场的作物产量。
  • 可根据当年已售房屋的价格来预测房屋价值。 可使用已售房屋的售价以及有关卧室数量、距学校的距离、与主要高速公路的接近度、平均收入和犯罪计数的信息预测类似房屋的售价。
  • 可使用训练数据以及栅格图层(包括多个单独波段)与结果(例如 NDVI)的组合对土地使用类型进行分类。
  • 给出有关儿童血铅水平及其房屋的征税宗地 ID 的信息、宗地属性(例如房屋年龄)、人口普查数据(例如收入和教育水平)和反映铅和铅化合物的毒物排放的国家数据集,可以预测没有血铅水平数据的宗地的铅暴露风险。 此类风险预测可能会推动该地区的政策和教育计划。

训练模型

使用基于森林的增强分类与回归工具的第一步是训练模型以供预测。 训练建立一个森林或树序列,在解释变量和要预测的变量参数之间建立关系。 无论您选择了仅训练预测到要素,或对栅格预测选项,首先,该工具会基于要预测的变量参数以及解释训练变量解释训练距离要素解释训练栅格(适用于 Spatial Analyst 扩展许可)参数的任意组合构建模型。

解释训练变量

用于训练模型的解释变量的常见来源是训练数据集中包含要预测的变量参数的其他字段。 无论您选择预测连续变量还是分类变量,解释训练变量值中的每个字段都可以是连续变量或分类变量。 如果训练好的模型还用于进行预测,则所提供的每个解释训练变量的值必须同时适用于训练数据集和预测数据集。

解释训练距离要素

虽然基于森林的增强分类与回归不是空间机器学习工具,但仍可使用距离要素,达到在分析中利用空间能力的目的。 比如。如果您正在对一系列零售店的业绩进行建模,要生成精确预测,表示距高速公路入口匝道的距离或距最近竞争对手的距离的变量可能至关重要。 同样,如果对空气质量进行建模,则表示距主要污染源的距离或距主要道路的距离的解释变量将至关重要。 通过计算从给定要素到输入训练要素值的距离,可使用距离要素自动创建解释变量。 将计算从输入训练要素值的每个要素到输入解释训练距离要素值的最近要素之间的距离。 如果输入解释训练距离要素值包含面要素或线要素,则距离属性将计算为要素对的最近线段之间的距离。 但是,面要素和线要素的距离计算方式不同。 有关详细信息,请参阅邻域分析工具计算距离的方法

解释训练栅格

解释训练栅格值也可用于训练模型。 这样,您就可以在模型中使用图像、DEM、人口密度模型、环境测量和许多其他数据源。 无论您选择预测连续变量还是分类变量,每个解释训练栅格都可以是连续变量或分类变量。 仅当您拥有 Spatial Analyst 许可时,解释训练栅格参数才可用。

如果输入训练要素值中的要素是点,并且您指定了解释训练栅格值,该工具就会深入提取每个点位置的解释性变量。 对于多波段栅格,仅使用第一个波段。 对于镶嵌数据集,请首先使用创建镶嵌图层工具。 如果输入训练要素值包含面,要预测的变量值为分类变量,并且指定了解释训练栅格值,则会启用并激活面转换为用于训练的栅格分辨率参数。 如果选中此选项,则将在位于面内的每个栅格像元质心处将每个面划分成点,该面将被视为点数据集。 然后,提取每个点位置处的栅格值并将其用于训练模型。 不再基于该面对模型进行训练,而是基于针对每个像元质心提取的栅格值对模型进行训练。 对于数值变量,将使用双线性采样方法;对于分类变量,将使用最邻近方法。 经过转换的面要素的默认像元大小将为输入栅格的最大像元大小。 但是,可使用像元大小环境设置更改此值。 如果未选中面转换为用于训练的栅格分辨率参数,则模型中将使用每个面的一个栅格值。 将为每个面指定连续栅格的平均值和分类栅格的众数。

面转换为栅格分辨率(第一幅图像)或分配平均值(第二幅图像)。

使用模型进行预测

建议首先使用仅训练选项,评估分析结果,根据需要调整包含的变量和高级参数,找到优质模型后,重新运行该工具以预测要素或栅格。 您可以使用这一工具来帮助您找到最佳模块。 选中优化参数复选框并选择优化模型参数选项。

了解有关参数优化的详细信息

在进行预测时,建议将为进行验证排除的训练数据 (%) 参数更改为 0%,这样就可以在用于预测的最终模型中包含所有可用的训练数据。 可通过以下方式进行预测:

  • 在同一研究区域中进行预测

    • 当对同一研究区域中的要素进行预测时,每个预测要素必须包含所有关联解释变量(字段)。 要素的范围必须与解释训练距离要素解释训练栅格值的范围重叠。

    • 使用所提供的解释训练栅格值对同一研究区域内的栅格进行预测时,预测栅格的范围将是所有解释性栅格的重叠范围。

  • 预测不同的研究区域

    • 当对不同研究区域中的要素进行预测时,每个预测要素必须包含所有关联解释变量(字段)、解释距离要素和解释栅格。 这些新距离要素和栅格必须适用于新的研究区域并与解释训练距离要素解释训练栅格值对应。

    • 对不同研究区域中的栅格进行预测时,必须提供新的解释预测栅格并使其与对应的解释训练栅格值匹配。 输出预测栅格值的范围将是所有提供的解释预测栅格的重叠范围。

  • 通过将用于训练的解释变量与在未来预测的变量进行匹配对不同时间段进行预测

    • 对未来时间段进行预测时,无论是预测要素还是栅格,每个预测的解释预测变量(字段、距离要素和栅格)都必须与对应的解释训练变量相匹配。

基于森林的增强分类与回归工具不会进行推断,因此输入预测要素值中相应的解释变量字段、距离要素和解释栅格的值范围或类别不能与用于训练模型的值范围或类别有明显不同。

预测至要素

模型在使用解释训练变量解释训练距离要素和解释训练栅格参数值的任意组合训练后,即可用于预测相同或不同研究区域中的点或面。 对要素进行预测要求每个接受预测的要素都有用于训练模型的每个字段、距离要素和栅格的值。

如果输入训练要素值和输入预测要素值中的字段名不匹配,则会启用匹配解释变量参数。 在匹配解释变量时,预测参数值和 训练参数值指定的字段必须是同一类型。 例如,输入训练要素值中的双字段必须与输入预测要素值中的双字段匹配。 如果您对不同的研究区域或不同的时间段进行预测,您可以使用未用于训练模型的距离要素或栅格。 匹配距离要素匹配解释栅格参数将被启用和激活。

对栅格进行预测

使用仅经过解释训练栅格训练的模型,可以对相同或不同研究区域中的栅格进行预测。 如果要对不同的研究区域或时间段进行预测,可以使用未用于训练模型的预测栅格。 匹配解释栅格参数将被启用和激活。 使用 Spatial Analyst 许可证,选择对栅格预测选项作为预测类型参数值,即可创建输出预测栅格

评估模型

一旦该工具创建了一个模型,您就可以对该模型进行评估。 该工具可创建信息和图表,帮助您了解模型的特征并评估其性能。

地理处理消息

可将鼠标悬停在进度条上、单击弹出按钮或展开地理处理窗格中的消息部分来访问消息。 您还可以在地理处理历史记录中查看该工具上一次运行的信息。 这些信息包括有关模型特征、袋外(OOB)误差、变量重要性、训练和验证诊断以及解释变量范围诊断的信息。

模型特征表

模型特征表包含森林模型或增益模型几个重要方面的信息,其中一些信息可通过高级模型选项下拉菜单中的参数进行选择,另一些信息则由数据驱动。 在优化模型性能时,了解数据驱动模型的特征非常重要。 树深范围报告在森林或树木序列中发现的最小和最大树木深度。 最大深度由最大树深参数设置,但也可以设置任何小于最大深度的深度。 平均树深值报告了森林或树木序列中树木的平均深度。 如果最大树深参数设置为 100,但树深度范围平均树深值报告的数字较小,那么设置较小的最大树深度可能会提高模型的性能,因为这样可以降低模型与训练数据过度拟合的几率。 随机采样的变量数值用于报告用于模型中任何给定树的随机选择变量数。 每棵树的变量组合不同,但变量数量相同。 默认情况下,该数字基于要素数量和可用变量数量的组合。 对于回归,该数量为解释变量(包括要素、栅格和距离要素)总数的三分之一。 对于分类,该数量为变量总数的平方根。 如果模型类型参数指定为基于森林的模型,模型特征表将包括树数量树叶大小树深范围平均树深每棵树可用的训练数据百分比随机取样变量的数量以及为进行验证排除的训练数据 (%)的值。 如果模型类型参数指定为梯度提升,表中会列出四个附加值: L2 正则化 (Lambda)最小分割损失减少 (Gamma)学习率 (Eta)搜索分割的最大分位数

模型特征表

模型袋外误差表

如果模型类型参数被指定为基于森林,地理处理信息中将包含一个模型缺袋错误表。 OOB 误差有助于评估模型的准确性。 介绍的 MSE(均方误差)变化百分比均基于模型根据训练数据集中的观察值精确预测要预测的变量值的能力。 OOB 是使用训练数据集包含的数据计算的预测误差,该数据对构成森林的树子集不可见。 如果您想要根据 100% 的数据训练模型,您需要依靠 OOB 来评估模型精度。 将报告树数量的一半和树总数对应的误差,用于帮助评估增加树数量是否可提高模型性能。 如果对于两个树数量,介绍的误差和变化百分比的值相似,则表明可以使用较少数量的树,从而尽可能减小对模型性能的影响。 但是,最好使用计算机允许的尽可能多的树。 森林中的树数量越多,生成的结果越稳定,模型的数据和采样方案中的噪点越少。

连续变量的 OOB 误差

如果要预测的变量为分类变量(由将变量视为分类变量参数值表示),则系统将基于森林中无法看到树子集的每个树木类别的不正确分类百分比来计算 OOB 误差。 每个类别的不正确 OOB 分类百分比都会打印在地理处理消息中。 此外,分类的 MSE 也将被打印出来,并且可将其解释为所有类别中不正确 OOB 分类的整体比例。 如果树数量值较小,则可能永远不会使用一个或多个类别来训练数据。 在这种情况下,OOB 误差将为 100%。

分类变量的 OOB 误差

最高变量重要性表

影响模型性能的另一个因素是所使用的解释变量。 最高变量重要性表列出了重要性得分排名前 20 的解释变量。 变量重要性是一种帮助您了解哪些变量正在驱动模型的结果的诊断方式。 最佳做法是首先使用所有数据进行训练,并探索每个解释变量的重要性。 然后,您就可以利用变量重要性来创建一个更简单(简约)的模型,其中只包含检测到的有意义的解释变量。

最高变量重要性表
重要性列中的值是列出的每个变量所有树的基尼系数总和。 % 列中的值是基尼系数总和的百分比。

模型类型参数值为基于森林时,重要性通过基尼系数计算,可将其视为变量负责拆分的次数,以及该拆分除以树数量的影响。 每个分割都是决策树中的一个单独决策。

模型类型参数值为梯度提升时,变量重要性会以三种不同的方式计算: 重要性(增益)、重要性(权重)和重要性(覆盖)。 重要性(Gain)表示解释变量对模型的相对贡献。 重要性(Gain)的计算方法是将使用了解释变量的所有拆分的增益相加。 重要性(Gain)表示解释变量在所有拆分中被使用的次数。 重要性(Cover)表示所有树中由解释变量定义的观测值的数量。 重要性(Cover)不列在地理处理信息中;但是,如果指定了输出变量重要性表参数,重要性(Cover)将成为表中的一个字段,并可显示在变量重要性汇总表中。 可以从内容窗格访问这两个输出。 如果验证运行次数值大于 1,工具将计算每次迭代的变量重要性集。 地理处理信息将列出 R 方或精度最接近 R 方或精度中位数的迭代变量重要性集。 要查看所有变量重要性集,请指定输出变量重要性表参数值。

使用梯度提升模型类型时的最高变量重要性表
显示模型类型参数值为梯度提升时的最高变量重要性表。

验证和训练数据诊断

评估模型性能的另一个重要方法是使用模型预测要素值,然后将预测值与观测值进行比较,并计算诊断结果。 这是在训练数据和测试(验证)数据上进行的。 默认情况下,该工具将排除输入训练要素值中 10% 的要素进行测试。 不过,可以使用为进行验证排除的训练数据 (%) 参数对此进行控制。 OOB 的缺点之一是使用森林的子集(未使用训练数据集中的特定要素的树),而不是使用整个森林。 通过排除一些数据以供验证,可评估整个模型的误差度量。 地理处理信息在验证数据诊断表和训练数据诊断表中报告诊断结果。 这些诊断可以帮助您了解模型与数据的拟合程度。

在预测连续变量时,会将每个训练要素和测试要素的观测值与根据训练模型对这些要素的预测值进行比较,并在地理处理信息中报告相关的 R 方平均绝对误差 (MAE)平均绝对百分比误差 (MAPE)对称平均绝对百分比误差 (SMAPE)均方根误差 (RMSE)p 值标准误差值。 由于训练和测试数据集的选择是随机的,因此每次运行训练过程中,这些诊断结果都会发生变化。 要创建每次运行时不会发生变化的模型,可在随机数生成器环境设置中设置一个种子。

预测连续变量时的训练数据诊断表和验证数据诊断表

在预测分类变量时,地理处理信息中会报告灵敏度精度F1 分数MCC。 这些诊断结果是使用输出分类性能表(混淆矩阵)参数指定的表格计算出来的,该表格跟踪感兴趣类别被正确分类和错误分类的次数,以及其他类别被错误分类为感兴趣类别的次数。 每个类别的灵敏度报告将显示为所观察类别已正确预测为该类别的要素的次数百分比。 例如,如果您正在预测陆地和水域且陆地的灵敏度为 1.00,则表明之前准确预测了本应标记为“陆地”的每个要素。 但是,如果水域要素之前被错误地标记为“陆地”,则此情况不会在陆地的灵敏度数字中反映出来。 这将反映在 “水”的敏感度数字中,因为其中一个水景没有被正确分类。

精度诊断既考虑了预测特定类别要素的精确程度,又考虑了其他类别被误分类为所关注类别的频率。 它可以估算出一个类别在该类别的观察总数中被正确识别的频率。 如果对变量进行分类时只有两个类别可供选择,则每个类别的精度相同,但灵敏度可能不同。 如果对变量进行分类时有多个类别可供选择,则各个类别的灵敏度和精度均可能不同。

预测分类变量时的训练数据诊断表和验证数据诊断表

诊断描述

R 平方

可决系数 (R-Squared) 可用于检验拟合度。 回归模型所涵盖的因变量方差的比例。 数值从 0.0 到 1.0 不等,数值越大表示模型越好。 增加解释变量的数量总是会增加 R2。 R2 的增加可能并不反映模型拟合度的提高,而是反映了其计算方法。

平均绝对误差 (MAE)

MAE 是相关变量参数实际值与预测值绝对差值的平均值。 数值为 0 表示模型正确预测了每个观测值。 MAE 以相关变量为单位,因此无法在不同模型之间进行比较。

平均绝对百分比误差 (MAPE)

MAPE 与 MAE 类似,表示实际值与预测值之间的差值。 不过,MAE 表示的是原始单位的差异,而 MAPE 表示的是百分比差异。 MAPE 是一种相对误差,因此在比较不同模型时,它是一种更好的诊断方法。 由于 MAPE 的计算方法,如果任何实际值为 0,则不能使用 MAPE。 如果实际值接近 0,则 MAPE 将达到无穷大。 MAPE 的另一个局限性是不对称。 例如,如果有两种情况,实际值和预测值的差值相同,那么实际值较小的情况对 MAPE 的贡献较大。

对称平均绝对百分比误差 (SMAPE)

与 MAPE 一样,SMAPE 用百分比表示实际值与预测值之间的差值,但 SMAPE 在计算中解决了不对称问题。

均方根误差 (RMSE)

RMSE 是均方误差 (MSE) 的平方根,即实际值与预测值之间平均平方差的平方根。 与 MAE 一样,RMSE 表示以相关变量为单位的平均模型预测误差;但 RMSE 对大误差更为敏感。 要避免实际值和预测值相差过大的模型,可以使用 RMSE 来评估模型。

p 值

P 值用于验证观察结果与预测结果不相关这一假设的统计量度。 当 p 值小于 0.05 时,观测值和预测值之间的相关性是显著的。

标准误差

这是回归斜率的标准误差。 它表示观察值与预测值的平均偏差程度。

F1 得分

F1 得分是模型性能的衡量标准。 它是为每个类别计算的介于 0 和 1 之间的值。 F1 得分越高表示模型性能越好。 所有类别的 F1 得分(宏观 F1 得分)是各个类别的 F1 得分的平均值。 如果每个类中的要素数量不均衡,则 F1 得分就是比准确率更好的模型评估指标。

F1 得分可以最大化精确度和调用率。 精确度的计算方法是,将正确分类相关类别的次数除以预测相关类别的总次数。 召回率的计算方法是,将正确分类相关类别的次数除以该类别的要素数量。 F1 得分计算方式如下:

F1 得分公式

下表中,A 类正确分类了 25 次,预测了 30 次 (25 + 4 + 1),因此 A 类的精度为 25/30。 A 类包含 25 个要素 (25 + 0 + 0),因此 A 类的调用率为 25/25。 A 类 F1 得分为 0.909。

A(预测值)B(预测值)C(预测值)全部

A(实际值)

25

0

0

25

B(实际值)

4

19

3

26

C(实际值)

1

2

21

24

全部

30

21

24

75

MCC

与 F1 分数类似,MCC 使用 -1 和 1 之间的数值来概括混淆矩阵。 数值为-1 表示模型对每个要素都进行了错误分类,而数值为 1 则表示模型对每个要素都进行了正确分类。 MCC 与 F1 得分不同,MCC 还考虑了非兴趣类别被预测的次数,因此只有当模型在兴趣类别和非兴趣类别上都表现良好时,MCC 才会高。

灵敏度

敏感度是对某一观察类别的要素进行正确预测的次数百分比。 它的计算方法是,将正确分类相关类的次数除以该类的要素数量。

在下表中,A 类被正确预测了 25 次,并且 A 类包含 25 个要素 (25 + 0 + 0),因此 A 类的敏感度为 25/25。

A(预测值)B(预测值)C(预测值)全部

A(实际值)

25

0

0

25

B(实际值)

4

19

3

26

C(实际值)

1

2

21

24

全部

30

21

24

75

精度

精度为在某一类别的观察结果总数中,该类别被正确识别的次数。 精度考虑了特定类别要素的预测程度以及其他类别被正确识别为非感兴趣类别的频率。 精度的计算方式如下:

精度公式

其中 TP 表示真正,TN 表示真负,FP 表示假正,FN 表示假负。

下表中,对于 A 类,TP 为 25,TN 为 45 (19 + 3 + 2 + 21),FP 为 5 (4 + 1),FN 为 0 (0 + 0)。 A 类精度为 70/(25+45+5+0) = 0.93。 所有类的精度为 (25 + 19 +21)/75 = 0.866。

A(预测值)B(预测值)C(预测值)全部

A(实际值)

25

0

0

25

B(实际值)

4

19

3

26

C(实际值)

1

2

21

24

全部

30

21

24

75

地理处理信息中提供的指标,以帮助评估模型性能。

解释变量范围诊断表

解释范围诊断可以帮助您评估用于训练、验证和预测的值是否足以产生优质模型以及是否可以信任其他模型诊断。 用于训练模型的数据对生成的分类和预测的质量有较大的影响。 理想情况下,训练数据应代表您正在建模的数据。 默认情况下,输入训练要素值中 10% 的要素会被随机排除用于验证。 这就产生了一个训练数据集和一个验证数据集。 解释变量范围诊断表格可显示这些集的最小值和最大值,且如果预测用于预测的数据的要素或栅格。

解释变量范围诊断表

由于子集确定方式具有随机性,训练子集中的变量值可能不代表输入训练要素值中的总体值。 对于每个连续解释变量,共享组中的训练列表示训练子集的取值范围与输入训练要素值中所有要素的取值范围之间的重叠百分比。 例如,如果输入训练要素中的变量 A 值为 1 到 100,而训练子集的值为 50 到 100,则共享组中训练列的变量 A 值为 0.50 或 50%。 对于变量 A,50% 的输入训练要素值范围包含在训练子集中。 如果训练子集未覆盖模型中每个解释变量的输入训练要素中大范围的值,则其他模型诊断可能会出现偏差。 类似的计算也用于生成表格共享组中的验证列。 重要的是,用于验证模型的数值范围应尽可能涵盖用于训练模型的数值范围。 例如,如果训练子集中的变量 B 的值为 1 到 100,而验证子集中的值为 1 到 10,那么变量 B 的共享组中的验证列将为 0.10 或 10%。 这一小范围的值可能全部是低值也可能全部是高值,因此可能导致其他诊断出现偏差。 如果验证子集包含所有低值,则其他模型诊断(如 MSE 和解释的变异百分比)将报告模型对低值的预测效果,而不是对输入训练要素中的全部值范围的预测效果。 此外,数值大于 1 表示用于验证的数值范围大于训练子集中的数值范围。 因此,验证诊断结果会很差,因为随机森林和极梯度提升算法无法进行推断。

解释变量范围诊断表共享组的预测列尤为重要。 森林模型和梯度提升模型不能进行外推,它们只能对模型训练范围内的值进行分类或预测。 共享组中的预测列是训练数据值范围与预测数据值范围的重叠百分比。 如果值为 1,则表示训练子集中的值范围和用于预测的值范围是相等的。 数值大于 1 表示用于预测的数值范围大于训练子集中的数值范围。 它表示您正在尝试对未经训练的模型上的值进行预测。

以上三个份额诊断仅在子集的范围重合时才有效。 例如,如果变量 C 的验证子集的值的范围为 1 到 100,且训练子集的值的范围为 90 到 200,则它们的重叠百分比为 10%,但两者不具备重合范围。 在这种情况下,诊断标有星号以显示非重合范围。 检查最小值和最大值,以查看非重叠的范围和方向。 如果模型试图在训练数据范围之外进行预测,则共享组中的预测列会用加号 (+) 标出。

解释变量范围诊断表的可接受值没有绝对规则。 考虑到训练数据的限制,共享组中的训练验证列应尽可能高。 如果共享组中的验证列较低,请考虑增加为进行验证排除的训练数据 (%) 参数值。 共享组中的预测栏应尽可能接近 1。 如果共享组中的预测列偏低,可考虑降低为进行验证排除的训练数据参数值。 此外,请考虑多次运行模型,并选择运行可平衡范围诊断最佳值的模型。 每次运行中使用的随机种子都将在消息中报告。

其他输出

基于森林的增强分类与回归工具还能生成各种表格、图表和输出结果。

输出训练要素

输出已训练要素将包含所有输入训练要素,包括训练数据集和测试(验证)数据集、模型中使用的解释训练变量以及预测值。 如果要预测的变量是连续变量,输出结果将包括残差标准化残差字段。 如果要预测的变量是分类变量,输出结果将包括一个已正确分类字段。 如果模型正确预测了已知类别,则要素将被标记为已正确分类;否则,要素将被标记为错误分类。 对于回归模型,已训练要素用预测的标准化残差来表示。 对于分类,训练要素的符号系统将以要素是否被正确分类为基础。

输出已训练要素的字段包括为每个解释训练栅格变量提取的栅格值,以及为每个解释训练距离要素变量计算的距离值。 可使用这些新字段重新运行分析的训练部分,无需每次都提取栅格值和计算距离值。 输出已训练要素值还将包含对所有要素的预测,包括用于训练的要素和不用于测试的要素。 这有助于评估模型的性能。 输出已训练要素中的 trained_features 字段表示某个要素是否用于训练。

如果要预测的变量是分类变量,输出已训练要素将包括以下图表:

  • 预测性能 - 堆叠条形图 每个条形图代表已预测的类别,子条形图的颜色反映实际类别。 子条形图的大小反映了特定实际类别的要素在已预测类别中所占的比例。 例如,右侧的条形图显示,在预测为物种 2 的要素中,有 5.66% 的要素实际类别为物种 1。

    预测性能图表

  • 混淆矩阵 - 矩阵热点图。 x 轴表示输入训练要素值中要素的预测类别,y 轴表示其实际类别。 对角像元用于可视化模型正确预测类别的次数。 对角像元中的计数越高,指示该模型的性能良好。 只有选中将变量视为分类参数时,才会生成该图表。

    混淆矩阵图表

请注意,两个图表都包括训练数据和测试数据。 要评估模型与训练数据的拟合程度,请选择 trained_features 字段等于 1 的要素并重新生成该图表。 要评估模型在测试数据中的表现,请选择 trained_features 字段等于 0 的要素并重新生成此图表。

输出变量重要性表格

输出变量重要性表格值包含模型中使用的解释变量及其重要性。

输出变量重要性表
显示了使用基于森林的模型类型时的输出变量重要性表。

输出变量重要性表格
显示了使用梯度提升模型类型时的输出变量重要性表。

如果指定了输出变量重要性表格参数值,且验证的运行次数值为 1,工具还将输出重要性变量汇总图表。 如果模型类型参数值为基于森林选项,该图表将在 y 轴上显示模型中使用的变量,并在 x 轴上显示其基于基尼系数的重要性。 如果模型类型参数值为梯度提升选项,则 x 轴上显示的重要性基于增益值。 解释变量按重要性从大(上)到小(下)的顺序排列。

Summary of Variable Importance 图表

如果指定了输出变量重要性表格参数,且验证运行次数值大于 1,则输出变量重要性表格值将包括每次运行中每个解释变量的重要性,并将标出精度或 R2 最高的迭代。 在地理处理信息中打印的变量重要性集不是具有最佳 R 方或精确度的集,而是 R2 或精确度最接近 R2 或精确度中位数的集。

使用多个运行进行验证时输出变量重要性表格

此外,如果验证运行次数值大于 1,工具将输出变量重要性分布图表。 使用该方框图评估不同运行之间变量重要性的变化。

变量重要性分布图表

箱形图显示了所有验证运行中变量重要性值的分布。 变量重要性的分布是训练模型稳定性的指标。 如果某个变量的重要性在不同的验证运行中变化很大,这可能表明模型不稳定。 不稳定的模型通常可以通过增加树数量参数值来改进,以捕捉数据中更复杂的关系。

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

如果要预测的变量是分类变量,则可使用输出分类性能表(混淆矩阵)参数。 此表包括不用于验证的输入训练要素值中的所有要素。 每一行代表实际类别,每一列代表预测类别。 该表显示了每个类别中的真阳性(TP)、真阴性(TN)、假阳性(FP)和假阴性(FN)的数量,我们可以据此计算出准确率和灵敏度等分类诊断指标。

输出预测

如果使用此工具预测要素,指定的输出已预测要素值将是一个要素类别,其中包含模型对每个要素的预测值。 如果预测到栅格,指定的输出预测表面值将是一个包含预测结果的输出栅格。

高级模型选项

森林方法的一个优势在于可捕获弱预测因子(或树)的共性。 如果单数树持续捕获某一关系,则意味着数据中存在紧密的关系,即使模型不复杂也可以检测到该关系。 基于森林的模型和梯度提升模型的另一个优点是,它们将弱预测因子(独立树或树序列)结合起来,形成一个强大的预测因子。 调整模型参数有助于创建大量的弱预测因子,从而形成强大的模型。 可通过减少在每棵树中使用的信息来创建弱预测因子。 要实现此目的,可通过使用每棵树的小要素子集、每棵树的少量变量和低树深,或进行任意组合。 树数量用于控制创建的弱预测因子数,预测因子(树)越弱,则创建强大模型所需的树越多。

该工具中提供了以下高级训练和验证选项:

  • 树数量参数的默认值为 100。 通常,森林模型或增强模型中的树数量越高,模型预测结果越精确,但是会增加模型计算的时间。 如果树数量参数值为 0,则不会创建模型,输出已训练要素值将只包含输入训练要素值和提供的解释训练变量值中的要素。 
  • 最小叶大小指保留叶所需的最小观察次数(树上的终端节点)。 回归的默认值为 5,分类的默认值为 1。 对于非常大的数据集,增加最小叶片尺寸值会缩短工具的运行时间。 如果最小叶片尺寸值很小(接近最小值),您的模型就容易受到数据噪声的影响。 对于更稳定的模型,尝试增加最小叶片尺寸值。
  • 最大树深指在树上向下进行的最大拆分数。 当使用较大的最大深度时,将创建更多的分割,这可能会增加过度拟合模型的可能性。 森林模型的默认值由数据驱动,取决于创建的树木数量和包含的变量数量。 梯度提升模型的默认值为 6。 使用梯度增强模型时,建议使用较小的最大树深值。 请注意,无法分割达到最小叶片尺寸值的节点。 如果同时设置了最小叶片尺寸最大树深参数值,则最小叶片尺寸值在确定树深度时将占主导地位。
  • 每棵树可用数据 (%) 参数指定输入训练要素值中用于每棵决策树的要素百分比。 默认值为 100% 的数据。 模型中的每个决策树都是使用可用训练数据的随机子集(约三分之二)创建的。 针对每棵决策树使用较低百分比的输入数据可以提高适用于大型数据集的工具的速度。
  • 随机采样的变量数参数用于指定用于创建每个决策树的解释变量数。 模型中的每个决策树都是使用指定解释变量的随机子集创建的。 增大每棵决策树中使用的变量数将增大过度拟合模型的可能性,尤其是存在至少一个主导变量时更是如此。 如果要预测的变量值是数值字段,通常的做法(以及工具使用的默认值)是使用解释变量(字段、距离要素和栅格)总数的平方根,或者如果要预测的变量是分类变,则将解释变量(字段、距离要素和栅格)总数除以 3。
  • 模型类型参数值为梯度增强选项时,高级模型选项参数类别中的以下参数可用:
    • L2 正则化 (Lambda) - 正则化项,可降低预测结果对单个要素的敏感度。 增加该值将使模型更加保守,防止过度拟合。 默认值为 1。 如果该值为 0,模型就会变成传统的梯度提升模型。 
    • 分割最小损失减少 (Gamma)-分割树木所需的最小损失减少量阈值。 如果候选分割的损失减少量高于该值,则进行分割。  较大的分割最小损失减少 (Gamma) 值可以防止树变得过深,从而使模型过度拟合训练数据。 默认值为 0。
    • 学习率 (Eta) - 该值可减少每棵树对最终预测的贡献。 较小的学习率值可防止模型过度拟合,但可能导致计算时间延长。默认值为 0.3。 允许任何大于 0 但不超过 1 的数字。 
    • 用于搜索分割的最大图格数-定义用于搜索分裂点的数据分区数。 默认值设置为 0。 这相当于使用贪婪算法,在所有数据点创建候选分割点。 贪婪算法的计算时间可能更长。 用于搜索分割的最大图格数值越小,意味着数据将被分成的分区数越少,从而导致测试的分割数越少。 数值越小,计算时间越快,但预测性能会受到影响。 数值越大,意味着数据将被分成更多的分区,从而导致测试更多的分区。 数值越大,模型越好,但计算时间也越长。 数值不允许为 1。
  • 为进行验证排除的训练数据 (%) 参数指定要保留为用于验证的测试数据集的输入训练要素值百分比(介于 10% 到 50% 之间)。 模型将在没有这些随机数据子集的情况下进行训练,并将这些要素的观测值与预测值进行比较,以验证模型的性能。 默认值为 10%。
  • 计算不确定性参数只有在模型类型参数值为基于森林的选项且要预测的变量不是分类变量时才可用。 选中计算不确定性参数时,工具将计算的每个预测值周围的 90% 预测区间。 如果预测类型值为仅训练对要素进行预测选项,则会将两个附加字段添加到输出已训练要素值或输出已预测要素值。 这些字段表示预测区间的上界和下界。 对于任何新观测点,在给定相同的解释变量的情况下,您可以以 90% 的置信度预测新观测值将落在区间内。 对栅格进行预测时,会在内容窗格中添加代表预测区间上下限的两个栅格。 预测区间使用分位数回归森林进行计算。 在分位数回归森林中,保存森林的每个叶片中的预测值,并将其用于构建预测值的分布,而不是仅保留森林中的最终预测。

参数优化

森林模型和梯度提升模型有几个超参数,可用于调整模型。 然而,要为给定数据集的每个超参数选择最佳值可能很困难。 基于森林的增强分类与回归工具提供了多种优化方法,可测试超参数值的不同组合,以找到具有最佳模型性能的超参数集。 如果不确定超参数的取值,可以使用优化方法。 有三种优化方法: 随机搜索(快速)随机搜索(稳健)网格搜索

要使用参数优化,请选中优化参数复选框,并选择优化模型选项。 默认情况下,优化模型参数值为随机搜索(快速)选项。 该工具还为目标函数提供了多个选项,用于评估模型在选定超参数值下的性能。 如果要预测的变量不是分类变量,则优化目标(Objective)参数包括两个选项: R 方RMSE。 默认选项为 R 方。 如果要预测的变量是分类变量,则选项包括精度马修斯相关系数 (MCC)F1 分数。 默认值为精确度模型参数设置参数设置超参数搜索空间的上限、下限和区间。 如果优化模型参数值为网格搜索,该工具将搜索搜索空间内的所有搜索点,并选择模型性能最佳的超参数值集。 如果优化模型参数值为随机搜索(快速)随机搜索(稳健)参数集运行次数参数将启用并处于活动状态。 它将用于决定搜索空间内搜索点的数量。 对于每个搜索点,随机搜索(稳健)方法使用 10 个不同的随机种子建立一个模型,挑选出模型性能中值的超参数值集,然后移动到下一个搜索点。 该工具会重复这一过程,直到搜索到所有候选搜索点。 最后,该工具会选择一组具有最佳模型性能的超参数值。

优化模式选项图表

如果优化超参数,则可使用输出参数调整表格参数。 输出参数调整表格值列出了已搜索到的每一组超参数值,包括以下图表:

  • 优化历史记录(所有尝试)-直观显示优化历史的图表。

    优化历史记录图表

  • 模型参数性能-帮助评估每个超参数对模型性能贡献的图表。

    模型参数性能图表
    在这个例子中,lambda 值和 gamma 值越高,模型精度越高,而学习率越低,模型精度越高。

最佳做法

以下是使用该工具时的最佳做法:

  • 尝试使用超出用于训练模型的解释变量范围的解释变量进行预测时,该工具可能性能不佳。 基于森林的模型和增强的模型不会进行外推,它们只能对训练模型时基于的值范围进行分类或预测。 如果使用范围比原始训练数据集高得多或低得多的解释变量进行预测,模型会将该值估计为原始数据集中的最高值或最低值。
  • 当从解释训练栅格值中提取值并使用解释训练距离要素参数计算距离时,要提高性能,请考虑根据 100%的数据训练模型,而不排除数据以供验证,然后选择创建输出已训练要素值。 下次运行该工具时,请使用输出已训练要素值作为输入训练要素参数值,并使用所有提取的值和距离作为解释训练变量值,无需每次训练模型时都进行提取。 如果您选择这样做,请将树数量最大树深随机采样的变量数参数值设置为 1 ,以创建一颗极小的占位树来快速准备数据以供分析。
  • 出于性能原因,当预测类型参数值为预测至栅格时,解释训练距离要素 参数不可用。 要将要素的距离作为解释变量,可使用距离累积工具计算距离栅格,并将距离栅格纳入解释训练栅格参数中。
  • 虽然树数量参数默认值为 100,但是该数值不是数据驱动的。 除了这些变量的变化之外,所需的树数量会随解释变量之间的关系复杂性、数据集大小和要预测的变量而增加。
  • 增加森林中的树数量并持续追踪 OOB 或分类错误。 要以最佳方式评估模型性能,建议至少将树数量值增加 3 倍,使之达到至少 500 棵树。
  • 工具运行时间对每棵树使用的变量数高度敏感。 如果每棵树使用的变量数较小,则会降低过度拟合的可能性。 但是,要在每颗树使用的变量数较小时提高模型性能,一定要使用许多的树。

    在使用梯度提升模型类型时,工具运行时间受用于搜索分割的最大图格数参数值的影响很大。 图格数参数的默认值为 0,相当于使用贪婪算法。 这种算法会在每个数据点创建一个候选分割点,这可能会导致运行时间过长。 因此,当数据量较大或优化过程中搜索点较多时,应考虑使用合理的用于搜索分割的最大图格数参数值。

  • 要创建每次运行时不会发生变化的模型,可在随机数生成器环境设置中设置一个种子。 模型中仍然存在随机性,但运行之间的随机性会保持一致。
  • 变量重要性是一种帮助您了解哪些变量正在驱动模型的结果的诊断方式。 它并不能衡量模型的预测效果。 最佳做法是通过将为进行验证排除的训练数据 (%)的值设置为 0,并浏览变量重要性箱形图来使用所有数据进行训练。 接下来,修改其他参数,如树数量最大树深,然后浏览箱形图直到找到稳定的模型。 一旦对关于变量重要性的稳定模型进行了训练,则可以增加为进行验证排除的训练数据(%)值以确定模型的精度。 如果指定的模型是基于森林的模型,请探索诊断消息中的 OOB 误差,确定模型的精度。 如果您得到了具有稳定变量重要性且具有较高精度的模型,则可以将验证的运行次数值设置为 1,从而得到一个描绘模型最终变量重要性的条形图。

参考资料

Breiman, Leo. (1996). "Out-Of-Bag Estimation." Abstract.

Breiman, L. (1996). "Bagging predictors." Machine learning 24 (2): 123–140.

Breiman, Leo. (2001). "Random Forests." Machine Learning 45 (1): 5-32. https://doi.org/10.1023/A:1010933404324.

Breiman, L., J.H. Friedman, R.A. Olshen, and C.J. Stone. (2017). Classification and regression trees. New York: Routledge. Chapter 4.

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,. 1–15. Springer, Berlin, Heidelberg.

Gini, C. 1912 1955. Variabilità e mutabilità. Reprinted in Memorie di metodologica statistica (eds. E. Pizetti and T. Salvemini). 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: 278-282. IEEE.

James, G., D. Witten, T. Hastie, and R. Tibshirani. (2013). An introduction to statistical learning Vol. 112. New York: springer.

LeBlanc, M. and R. Tibshirani. (1996). "Combining estimates in regression and classification." Journal of the American Statistical Association 91 (436): 1641–1650.

Loh, W. Y. and Y. S. Shih. (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. and Y. Bengio. (2000). "Inference for the generalization error." In Advances in neural information processing systems, 307-313.

Strobl, C., A. L. Boulesteix, T. Kneib, T. Augustin, and A. Zeileis. (2008). "Conditional variable importance for random forests." BMC bioinformatics 9 (1): 307.

Zhou, Z. H. (2012). "Ensemble methods: foundations and algorithms." CRC press.