如何使用 mlr3 执行空间交叉验证,然后执行栅格预测

How to perform spatial crossvalidation using mlr3 and then perform raster predict

我有以下问题。我想建立一个土地覆盖分类模型。我的数据是具有多个波段的多时相遥感数据。为了进行训练,我创建了分层随机分布的点,以在它们的位置提取光谱数据。使用这些数据,使用 mlr3 包训练了随机 Forrest (Rpart)。对于精度测量,使用 mlr3spatiotempcv 执行了重复的空间交叉验证。训练步骤的结果模型在提取后存储在 rpart 类型的 R 对象中。在这个对象的 terms 字段中是存储的变量名。这些是我使用的所有波段,还有空间 x 和 y 坐标。这在预测新数据时会带来问题。我使用了 terra 包并收到错误消息,我的输入数据中缺少 x 和 y 层。哪一种有意义,因为它们存储在模型的术语字段中。但据我了解,坐标不应该是模型的变量。坐标仅用于空间重采样而不用于预测。我通过在训练过程中删除 x 和 y 坐标并仅执行普通的非空间交叉验证来“解决”这个问题。之后我进行了预测并且它完美运行。

所以,我的问题是,如何使用包含坐标的数据使用 mlr3 包训练模型来执行空间交叉验证?,然后使用该模型预测新的栅格。

您发现了一个错误。当任务是从 data.frame 而不是 sf 对象创建时,coords_as_features 设置为 TRUE。默认值应为 FALSE。您可以使用 remotes::install_github("mlr-org/mlr3spatiotempcv") 安装固定版本的软件包。此修复程序应该很快包含在下一个 CRAN 版本中。感谢报告。

This brings problems when predicting new data.

为什么使用重采样模型来预测新数据?通常,您使用(空间)交叉验证来估计最终模型的性能,但预测新数据的最终模型适用于完整的数据集。