空间统计模型 (.ssm) 文件包含经建模空间关系工具集中的多个工具执行分析的训练模型、属性和模型诊断。 您可以使用空间统计模型文件对新数据集进行预测,并与其他人安全共享,以便将该模型与其数据配合使用。 例如,野生动物生态学家可以收集已知濒危物种位置的野外数据,并建立模型以预测研究区域内物种的其他可能位置。 然后,他们可以与其他生态学家共享该 .ssm 文件,其他生态学家可以使用该文件在自己的研究区域内预测物种的位置。 由于用于训练模型的数据不存储在 .ssm 文件中,因此通过共享模型文件不会泄露濒危物种的高度敏感原始位置。
您可以使用以下工具来管理和预测 .ssm 文件:
- 设置空间统计模型文件属性 - 设置 .ssm 文件的属性,包括变量描述和单位。 这样可以解释模型的变量及其单位,以便他人可以正确地使用该文件。 例如,您可以指定解释性距离要素表示以美国英里测量的距离,以便他人仅将模型用于特定类型的数据。
- 描述空间统计模型文件 - 查看 .ssm 文件的属性,包括分析方法、数据集名称、属性和模型诊断。 这样可以了解每个变量的含义,以便在使用文件对新数据进行预测时正确匹配所有变量、数据集和单位。
- 使用空间统计模型文件进行预测 - 使用 .ssm 文件对新数据集进行预测。 您必须将 .ssm 文件中的每个变量或数据集与具有相同类型和单位的新数据集进行匹配。 例如,模型文件中的解释变量可能需要以摄氏度测量的温度值栅格。
您可以使用以下工具中的输出训练模型文件参数创建 .ssm 文件:
示例应用
以下方案描述了使用 .ssm 文件的分析工作流。
方案 1:重复使用模型以减少模型训练时间
如果您使用大型数据集执行分析建模,训练过程可能非常耗时并且需要昂贵的计算机硬件。 在许多情况下,您还需要多次训练模型来微调设置。 在选择可实现最佳结果的模型设置后,您不希望为每个将用于进行预测的未来数据集重复此训练过程。 使用初始训练结果创建 .ssm 文件,您可以在未来的所有数据集中重复使用它,而无需再次训练模型。 利用相同的基础预测模型,使用相同的训练模型还可以确保对所有未来数据集的预测一致性。
方案 2:与他人共享训练模型文件
您可以与其他人共享 .ssm 文件,他们希望将该模型与自己的数据配合使用。 由于用于创建模型的数据无法直接从模型文件中访问,因此您可以在不泄露用于训练模型的敏感数据的情况下共享它。 在共享模型之前,您可以使用设置空间统计模型属性工具添加变量描述和变量单位。 这对于其他人来说非常有用,因为他们可以了解在使用文件进行预测时应使用哪些类型的数据和单位。 收到模型文件后,接收者可以使用描述空间统计模型文件工具查看属性和模型诊断,然后通过使用空间统计模型文件进行预测工具使用其数据进行预测。
方案 3:自动化流数据服务的分析
当使用定期更新的数据(例如野火位置的流数据服务)时,使用 .ssm 文件可以在新数据可用时进行简单的自动化处理。 每次数据更新时,您可以使用使用空间统计模型文件进行预测工具快速重复使用 .ssm 文件,并将其与更新后的数据配合使用。
.ssm 文件的内容
模型文件存储了关于模型的全面信息。 除了由设置空间统计模型属性工具创建的变量描述和单位外,.ssm 文件还包含用于研究模型准确性和可靠性的模型诊断。
ArcGIS Pro 3.4 及更高版本支持使用具有 64 位 ObjectID 和大整型字段类型的数据进行训练和预测。
对于广义线性回归工具,.ssm 文件包括回归系数和诊断,如 AICc、R2、校正 R2、联合 F-统计数据和联合 Wald 统计数据。 有关模型诊断的完整列表和描述,请参阅解释消息诊断部分。
对于基于森林的增强分类与回归工具,.ssm 文件包括决策树、模型特征、验证诊断、最高变量重要性和解释变量范围诊断。 模型袋外 (OOB) 误差不包含在内,因为该诊断与进行新预测无关,而且会显著增加 .ssm 文件的文件大小。 ArcGIS Pro 3.4 及更高版本支持使用梯度提升模型类型创建的模型文件。
有关详细信息,请参阅输出消息和诊断部分。
对于仅存在预测 (MaxEnt) 工具,.ssm 文件包括有关训练模型、模型特征和摘要、回归系数、分类摘要(如果任何解释变量是分类变量)以及用于训练数据的解释变量范围诊断的重要信息。 交叉验证结果和存在点和背景点的计数不包括在内,因为它们可能被用于逆向追溯敏感数据,如濒危物种的位置。 有关详细信息,请参阅地理处理消息部分。
最佳做法
在创建和使用 .ssm 文件时应考虑以下因素:
- 要使模型更透明和有意义,您可以使用设置空间统计模型属性工具为每个变量指定描述和单位。 变量及其用途的文档对于科学精确性和可重复性至关重要。
- 尽管 .ssm 文件不直接打包训练数据(仅训练结果),也不存储最敏感的模型诊断,但数据隐私和安全仍然可能成为一个潜在的问题。 某些复杂的模型诊断,如混淆矩阵,可能被用来逆向追溯某些原始训练数据。
- 当使用他人创建的 .ssm 文件时,应使用描述空间统计模型文件工具来调查属性。 变量的描述和单位尤其重要,您可能需要在使用模型进行预测之前手动将数据转换为模型所假设的单位。 例如,您可能需要将温度值从华氏度转换为摄氏度,以确保预测的准确性。
HDF5 数据模型
.ssm 文件使用分层数据格式版本 5 (HDF5) 数据模型来存储模型结果和元数据。 HDF5 具有以下优势:
- HDF5 可以将大型数据以组织良好的结构存储,并且可以高度压缩。 例如,它可以将一个使用 60 万个要素和 1 万棵树训练的基于森林的回归模型存储在大小低于 20 GB 的文件中。 要将如此复杂的模型结果存储在传统的可以方便共享的文件中,效率较低的数据模型难以实现。
- HDF5 是一种自描述的数据模型,这意味着您可以直接将元数据附加到数据集上,而不必将数据和元数据分开存储在不同的文件中。 这种同步允许以透明的方式访问 HDF5 数据,无需管理必须保持一致的多个文件。
- HDF5 允许高性能的数据读写。 例如,在使用空间统计工具时选择创建一个 .ssm 文件不会显著增加工具的运行时间。 在使用模型进行新数据预测时,可以快速访问模型以减少开销。
除了设置空间统计模型文件属性、描述空间统计模型文件和使用空间统计模型文件进行预测工具外,您还可以使用标准 HDF5 库检查 .ssm 文件。
以下 Python 代码示例展示了如何使用 h5py 包检查并打印 .ssm 文件的属性:
# Import necessary packages
import numpy as np
import h5py
spatialStatsModel = h5py.File(r'C:/MyData/MySSMFile.ssm', 'r')
# Get a list of keys of the variables:
ls = list(spatialStatsModel.keys())
# Get the attributes of the model:
attrs = list(spatialStatsModel.attrs)
# Print all the datasets and attributes
print("The variables in the model:")
for k in ls:
print("{}---{}, --- {}".format(k, spatialStatsModel[k][()],
type(spatialStatsModel[k][()])))
print("The attributes in the model:")
for k in attrs:
print("{}---{}, --- {}".format(k, spatialStatsModel.attrs.get(k),
type(spatialStatsModel.attrs.get(k))))
# Close the .ssm file
spatialStatsModel.close