使用交叉验证评估预测值 (空间统计)

摘要

使用交叉验证评估预测模型的性能。 此工具生成针对使用基于森林的增强分类与回归广义线性回归仅存在预测工具创建的模型的验证指标。 您可以指定评估类型(例如 K 折或空间 K 折)、组数和稀有事件平衡,以确保稳健、无偏差的模型评估。

使用交叉验证评估预测值的工作原理详情

插图

使用交叉验证评估预测值工具说明

使用情况

  • 评估类型参数具有以下选项以将要素分割成组。

    • 空间 k 折 - 使用空间交叉验证来评估模型在预测训练数据研究区域地理范围外的要素时的效果。
    • 随机 k 折 - 使用随机交叉验证来评估模型在预测训练数据研究区域地理范围内的要素时的效果。

  • 在使用分类来预测稀有事件或不平衡类别时,可使用平衡类型参数来平衡每个分类等级内的样本数。 测试此工具中的不同平衡方法;然后选择表现最好的平衡方法,并在使用为预测准备数据工具进行预测之前先在完整的训练数据集上运行该方法。

  • 不使用交叉验证来生成单一模型或模型文件。 它生成精度指标,以用于评估模型及其参数在预测训练模型时被排除在外的数据时的效果。

  • 此工具不接受在为预测准备数据工具中首次过采样的分析要素,即使用随机过采样或 SMOTE 加以平衡的分析要素。 过采样数据不可以用在因数据泄露而设定的验证中。

  • 原始预测工具中的参数会被保留使用。 然而,对于来自基于森林的增强分类和回归工具的分析结果,该验证数据被设为 0。 如果在基于森林的增强分类和回归工具中使用最优化参数,则来自原始工具的最优参数将用于运行交叉验证。

  • 该工具将创建以下输出:

    • 输出要素 - 记录了训练数据集以及该训练数据集中每个要素的训练和预测结果。
    • 输出验证表 - 该表格记录了每次验证运行的评估指标。
    该工具还创建了许多有用的地理处理信息,包括样本外诊断统计数据平均值表格。

参数

标注说明数据类型
分析结果要素

该要素类含有来自基于森林的增强分类与回归广义线性回归仅存在预测工具的训练输出结果。 将使用交叉验证评估预测训练结果。

Feature Layer
输出要素

输出要素包含原始自变量、因变量和汇总交叉验证结果的其他字段。

Feature Class
输出验证表

输出表格包含记录了每次交叉验证运行的评估指标。

Table
分析输入要素

将在产生分析结果要素的预测分析中使用的输入要素。

Feature Layer
评估类型
(可选)

指定用于将分析结果要素参数值分割成 k 个组的方法。

  • 随机 k 折该分析结果要素将随机分割成 k 个组。 每个组将包含相同或类似数目的要素。 如果预测类别 (分类),因变量中的每个类别都将显示在每个训练组中。 这是默认设置。
  • 空间 k 折将使用输入面质心或点上的 k 均值聚类,将该分析结果要素在空间上分割成 k 个组。 如果预测类别 (分类),因变量中的每个类别都将显示在每个训练组中。 每个组都在空间上彼此分开。
String
组数
(可选)

分析结果要素参数值将分割成的组数。 组数必须大于1。 默认值为 10。

Long
平衡类型
(可选)

指定用于平衡训练组中每个因变量类别的样本数的方法。 如果原始模型预测到分类变量,此参数将激活。

  • 该分析结果要素不进行平衡。 这是默认设置。
  • 随机欠采样将从每个非少数类中移除随机要素,直到要素数跟少数类中的要素数相匹配。
  • Tomek 欠采样每个非少数类中接近少数类中要素的要素都将被移除。 此方法将改善类之间的边界;然而每个类可能都有不同数目的要素。
  • K 中心点欠采样非少数类中不代表该类的要素都将被移除,直到要素数与少数类中的要素数相匹配。
  • 随机过采样少数类中的要素将随机复制,直到要素数与少数类中的要素数相匹配。
  • SMOTE (过采样)通过在现有要素之间插值,来针对少数类生成合成要素,直到要素数跟少数类中的要素数相匹配。
String

arcpy.stats.CrossValidate(analysis_result_features, out_features, out_table, analysis_input_features, {evaluation_type}, {num_groups}, {balancing_type})
名称说明数据类型
analysis_result_features

该要素类含有来自基于森林的增强分类与回归广义线性回归仅存在预测工具的训练输出结果。 将使用交叉验证评估预测训练结果。

Feature Layer
out_features

输出要素包含原始自变量、因变量和汇总交叉验证结果的其他字段。

Feature Class
out_table

输出表格包含记录了每次交叉验证运行的评估指标。

Table
analysis_input_features

将在产生分析结果要素的预测分析中使用的输入要素。

Feature Layer
evaluation_type
(可选)

指定用于将 analysis_result_features 参数值分割成 k 个组的方法。

  • RANDOM_KFOLD该分析结果要素将随机分割成 k 个组。 每个组将包含相同或类似数目的要素。 如果预测类别 (分类),因变量中的每个类别都将显示在每个训练组中。 这是默认设置。
  • SPATIAL_KFOLD将使用输入面质心或点上的 k 均值聚类,将该分析结果要素在空间上分割成 k 个组。 如果预测类别 (分类),因变量中的每个类别都将显示在每个训练组中。 每个组都在空间上彼此分开。
String
num_groups
(可选)

analysis_result_features 参数值将分割成的组数。 组数必须大于1。 默认值为 10。

Long
balancing_type
(可选)

指定用于平衡训练组中每个因变量类别的样本数的方法。 如果原始模型预测到分类变量,此参数将激活。

  • NONE该分析结果要素不进行平衡。 这是默认设置。
  • RANDOM_UNDER将从每个非少数类中移除随机要素,直到要素数跟少数类中的要素数相匹配。
  • TOMEK_UNDER每个非少数类中接近少数类中要素的要素都将被移除。 此方法将改善类之间的边界;然而每个类可能都有不同数目的要素。
  • KMED_UNDER非少数类中不代表该类的要素都将被移除,直到要素数与少数类中的要素数相匹配。
  • RANDOM_OVER少数类中的要素将随机复制,直到要素数与少数类中的要素数相匹配。
  • SMOTE_OVER通过在现有要素之间插值,来针对少数类生成合成要素,直到要素数跟少数类中的要素数相匹配。
String

代码示例

CrossValidate 示例 1(Python 窗口)

以下 Python 窗口脚本演示了如何使用 CrossValidate 函数。

# Evaluate a predictive model with cross validation
import arcpy
arcpy.env.workspace = r"c:\data\project_data.gdb"

arcpy.stats.CrossValidate(
    analysis_result_features=r"in_analysis_result_features",
    out_features=r"out_feature",
    out_table=r"out_table",
    analysis_input_features=r"analyis_in_feature",
    evaluation_type="RANDOM_KFOLD",
    num_groups=10,
    balancing_type="NONE"
)
CrossValidate 示例 2(独立脚本)

以下独立脚本演示了如何使用 CrossValidate 函数。

# Evaluate a predictive model with cross validation

import arcpy 

# Set the current workspace.
arcpy.env.workspace = r"c:\data\project_data.gdb"

# Run tool

arcpy.stats.CrossValidate(
    analysis_result_features=r"in_analysis_result_features",
    out_features=r"out_feature",
    out_table=r"out_table",
    analysis_input_features=r"analyis_in_feature",
    evaluation_type="RANDOM_KFOLD",
    num_groups=10,
    balancing_type="NONE"
)

许可信息

  • Basic: 受限
  • Standard: 受限
  • Advanced: 受限

相关主题