MEE | tidysdm:利用tidymodels的灵活性在R中进行物种分布建模

文摘   2024-09-10 17:29   江苏  

  1. 在物种分布建模(SDM)中,通常的做法是探索多种机器学习(ML)算法,并将其结果组合成集成模型。在R语言中,有许多不同ML算法的实现方法,但由于它们大多是独立开发的,因此经常使用不一致的语法和数据结构。这就导致在使用多种算法进行分析并合并结果时,可能会遇到一些挑战。

  2. 专门的SDM软件包可以解决这个问题,它通过封装原始函数来提供更简单、统一的界面,以满足各种特定要求。然而,创建和维护这样的界面非常耗时,而且采用这种方法,用户无法轻松集成可能出现的其他方法。

  3. tidymodels提供了标准化的语法、数据结构和建模接口,以及文档齐全的基础设施,可用于集成新算法和度量标准。tidymodels的广泛采用意味着大多数ML算法和度量标准已经集成,用户可以添加其他算法和度量标准。此外,由于tidymodels被广泛采用,新的统计方法往往可以快速实施,从而很容易集成到现有的管道和分析中。

  4. tidysdm利用tidymodels的优势,为SDM提供了一个灵活、完全可定制的管道。它包括SDM专用算法和指标,以及便于在tidymodels中使用空间数据的方法。

  5. 此外,tidysdm还是第一款允许使用不同时期数据进行SDM的软件,为化石学、考古学、古生物学、古生态学和其他关注过去的学科的学者提供了SDM的更多可能性。

  • 1 引言

物种分布建模(SDM,又称生态位建模[ENM];生境适宜性模型[HSM];以及其他缩略语)是一类利用特定物种的出现和相关环境变量来预测某一地理区域是否(以及有多少)适合该物种生存的生物学方法。SDM已被广泛用于预测入侵物种在新范围内的分布、评估未来气候情景下的生境适宜性、根据考古/古生物遗迹或现今调查重建过去的分布范围,以及检测生态位随时间的变化等。

在计算生物学领域,SDM是最早使用机器学习(ML)的领域之一,其标准做法是探索多种算法并将其结果组合成集成。R Core Team是最常用的SDM框架。大多数ML算法已至少包含在一个软件包中,常用方法(如随机森林)已在多个软件包中实现。然而,由于许多软件包都是独立开发的,它们在数据结构和语法上往往存在差异,这给用户带来了挑战。举个实际例子,当两种算法需要不同格式的输入并产生不兼容的输出时,比较它们的结果并将其合并为集成就很困难。为了解决这个问题,人们开发了专门的SDM软件包;每种软件包通过提供围绕每种算法的封装函数,为多种算法提供不同的统一界面。因此,用户不必担心每种使用的ML算法背后的每个软件包的具体要求。

这种专用软件包大大简化了用户体验,但用户只能使用其中已经包含的功能。例如,当一种新算法出现时,用户无法轻松地将其集成到自己的分析中。同样,在调整模型或使用新的超参数调整策略(例如,探索贝叶斯调整或竞赛方法,而不是标准的网格搜索)时,一般也无法添加自定义指标。

  • 2 tidymodels

ML软件包的多样性相关的挑战并非SDM所特有,而是适用于任何使用ML算法的领域。R语言中的tidymodelsmlr3以及Python语言中的scikit-learn等软件包组已作为领域无关的解决方案出现,试图为多种算法提供标准化接口。特别是tidymodels,其特点是高度模块化的方法。

它是如何工作的?tidymodels并不是一个自定义包装器的集合,而是通过几个相互依存的软件包提供功能,允许用户定义和注册ML管道每个步骤中的新元素(如数据预处理步骤、算法、度量)。一旦注册了新元素,它就能立即与tidymodels框架的所有其他功能兼容。例如,软件包parsnip包括定义算法的函数、文档和教程,以及大量常用ML算法的预制定义。然后就可以使用yardstick软件包中的任何指标进行评估。反过来,yardstick不仅提供了大量广泛使用的度量标准,还允许定义新的度量标准,然后将其用于任何使用parsnip模型规范设置的算法。重要的是,这种模块化基础架构允许“hot-plugging”添加功能,而无需修改现有软件包。用户可以简单地实现新功能(如使用新算法或度量),并将其与整个tidymodels框架中的现有功能混合使用。此外,开发人员只需提供实现新算法或指标的软件包,就能立即将它们集成到现有的管道中。

  • 3  用“tidymodels”方法进行SDM

在这里,我们介绍tidysdm,这是一个便于用tidymodels拟合相关SDM的软件包。除了tidymodels中已有的一整套算法和度量标准外,tidysdm还提供了以下功能,为SDMs提供便利:

若干tidymodels函数的附加方法,用于处理空间数据;

现有tidymodels软件包无法提供的SDM相关算法和度量标准(如MaxEntBoyce Continuous Index)的实现。

tidysdm基于tidymodels的模块化基础架构,无需从头开始创建完整的解决方案,因为它可以利用庞大的开发者社区:在tidysdm中创建的对象可以提供给其他软件包的函数。例如,敏感性和特异性这两个在SDM中被广泛使用的指标已经由yardstick软件包提供(分别为sens()spec())。没有必要在tidysdm中重新实现这些函数,因为任何基于tidymodels标准的模型都可以直接输入yardstick::sens()yardstick::spec(),以获得可用于任何tidysdm管道的输出。这只是一个简单的例子,但我们可以从中看到tidymodels基础架构的灵活性,同时也简化了管道的构建方式。

tidymodels的广泛采用还为各种专业应用提供了大量附加软件包。例如,能够解释ML结果并比较不同算法的行为非常重要,但原则上,这可能具有挑战性。DALEX是用于ML可解释性分析的最广泛采用的算法无关软件包之一。它可以处理用tidymodels拟合的对象,从而为解释我们可能希望在SDM组合中使用的任何算法提供了最先进的工具。

最后,tidysdm包含的功能可以轻松处理不同时期的数据(古生物学、考古学、古动物学,或更广泛的时间分散数据)。而在大多数SDM软件包中,这项工作要么无法完成,要么需要大量调整。与pastclim的集成为访问和处理(古)气候提供了便利:从2.0版开始,除了古气候之外,它还包括现今气候和未来重建。

  • 4 分析工作流程和示例

本手稿中的示例基于软件发布时的版本。文中链接指向的是软件包网站的实时版本,未来版本可能会有所修改。软件包的当前版本以及所有相关数据和vignette可参见Leonardi等(2024)。

4.1 当前数据的应用

我们在专门的vignettehttps://evolecolgroup.github.io/tidysdm/articles/a0_tidysdm_overview.html)中举例说明了标准SDM管道对当代物种的建模。该文件展示了在分析伊比利亚蜥蜴(Lacerta schreiberi)时所提供的全部灵活性。网站(https://evolecolgroup.github.io/tidysdm)上还有一份包括所有功能的手册,以及一个vignettehttps://evolecolgroup.github.io/tidysdm/articles/a2_tidymodels_additions.html),说明了tidymodels和配套软件包的一些额外功能,这些功能可以增强SDM管道。最后这个vignette只包含了几个例子;由于tidymodels在多个领域的广泛应用,我们设想它的许多选项还能有更多应用。

任何SDM工作流程的第一步都是数据收集。存在数据可以来自许多来源,有一些软件包专门用于使用其中的一些资源库(例如,从GBIF下载数据的rgbif)。一旦获取并清理了存在(例如使用CoordinateCleaner),tidysdm就会提供多种功能,为分析准备工作提供便利。其中包括通过函数thin_by_cell()thin_by_dist()对存在进行筛选,以及通过sample_background()对背景或sample_pseudoabs()对伪缺失进行采样。这些函数中的每一个都提供了多种策略,例如根据偏差面对背景进行采样,或根据与存在的最小距离对伪缺失进行采样。它们都使用sf对象来表示空间点,使用terra SpatRasters来表示预测变量的栅格。

有几种算法在处理相关预测变量时会遇到困难,而函数filter_collinear()提供了几种选择不相关变量的方法,包括逐步最小化成对相关性的方法,以及最小化方差膨胀的选项(有关这些选项的更多信息,请参阅手册页面)。我们还提供了一个函数dist_pres_vs_bg(),用于可视化和量化存在与背景/伪缺失之间的分布差异。

一旦获得存在和背景/伪缺失(图1a2b),我们就可以利用标准化的tidymodels工作流程。可以将recipe视为一系列步骤,用于清理和准备数据集,并明确定义响应变量(即SDM的发生率)和预测变量(如气候变量)。这种方法的优点是可以通过相同的recipe输入额外的数据(例如来自多个物种的数据),从而轻松实现数据管道的标准化。

1 物种分布建模(SDM)管道使用现存物种的输出结果(1

2 使用时间分散出现的物种分布建模(SDM)管道输出(示例2

将数据打包成recipe后,就可以将其分成训练和测试两部分。使用tidyverse软件包spatialsample,可以使用多种抽样策略(如空间块设计)来分割数据(图1b2c)。我们可以采用创建测试集和训练集的正式方法,然后在训练集中创建折叠,以便在调整超参数时进行交叉验证(这是ML中比较传统的方法),或者只使用交叉验证折叠,而不使用分离的测试集(这是数据量有限的SDM分析中经常采用的方法)。tidysdm还允许从BlockCV中导入对象,这是一个功能强大的软件包,提供了spatialsample中无法提供的其他采样策略。

下一步是定义用于运行模型的算法和指标。算法是通过软件包parsnip指定的,它实现了许多算法(包括ML(如随机森林和提升树)和更传统的统计模型(如广义线性模型和广义相加模型))。在tidysdm中,我们基于maxnet包实现了MaxEntparsnip提供了定义模型输入的函数,即预测变量和响应变量的格式。它还允许我们定义超参数,即控制学习过程的参数,进而决定ML算法拟合的参数值。一旦我们使用parsnip建立了模型规范,就可以向模型输入用recipe封装的数据,并使其与度量和超参数选择功能交互(见下文)。MaxEnt的模型规范可用作添加任何其他模型的蓝本,关于如何在parsnip中定义自定义模型规范,有详细的教程。重要的是,这些规范不必作为软件包添加,它们可以简单地定义为函数,然后用户可以在其tidymodels工作流中采用这些函数。tidysdm还为广泛使用的算法(如随机森林或提升树)提供了一些模型规范,这些规范定义了默认超参数值,以及其中哪些参数应根据常见的SDM实践进行调整。

在评估模型之前,我们需要定义使用哪些指标来评估模型的拟合优度。这可以通过yardstick软件包来完成,该软件包包含的指标可以用来调整交叉验证的超参数,或根据未用于训练的测试数据集进行评估。与parsnip类似,yardstick也实现了广泛使用的指标(如特异性和灵敏度),并提供了添加自定义指标的基础架构。在tidysdm中,我们添加了SDM中常用的指标,如真实技能统计量(TSSmax)和Boyce连续指数(Boyce Continuous Index)。它们为添加自定义指标提供了一个蓝图,在yardstick软件包中有大量文件介绍如何添加自定义指标。同样,tidymodels的优势在于我们可以将自定义指标作为新的用户自定义函数添加进来,并直接集成到管道中,而无需修改任何软件包。

在选择了感兴趣的模型和指标之后,就需要对算法进行“调整”;对于每种算法,这一过程包括探索不同的超参数值,并根据先前定义的交叉验证折叠,选择哪种值的组合能给出最佳预测。软件包tune提供了标准的网格方法,即探索超参数值的多种组合,但也可以使用贝叶斯算法或竞赛算法等替代方法,自适应地找到最佳超参数组合。借助workflows软件包,可以很容易地对每种算法的处理方式进行标准化,提供了一种并行计算的简便方法(如果模型较大和/或内存和计算密集型,既可以在单台机器上进行并行计算,也可以在集群上进行分拆计算)。

在对工作流程进行调整后,tidysdm允许创建集成。simple_ensemble()通过保留每个算法的最佳版本(即所选指标值最高的算法)来创建集成。用户还可以根据算法的拟合优度过滤算法,从而在集成中只使用超过给定阈值的算法。当多次重复过滤数据和背景/伪缺失采样过程以探索随机性的影响时,函数repeat_ensemble()就会进行集合。得益于tidymodels的模块性,数据整理函数、算法和度量标准的任何组合都可以在这些重复组合中组合使用。还可以使用更复杂的集成方法,软件包stacks提供了堆叠集成的实现,这是一种在SDM之外的ML中常用的方法。

SDM工作流程的最后一步通常是将模型投射到地图上,包括现在、未来或过去的模型。除了为采用tibbles或数据框预测因子的集成提供标准predict()函数外,tidysdm还有一个predict_raster()函数,可以将terra SpatRaster对象作为输入并直接返回栅格(图1c2d)。为评估预测的有效性,可使用extrapol_mess()实现多变量环境相似性表面,软件包waywiser提供了估算适用范围的函数。

4.2 时间分散数据的应用

对于传统的SDM软件包来说,使用时间分散的存在(如radiocarbon dates)是一项挑战:大多数软件包假定所有预测因子(如气候)都来自单一栅格(即单一时间点),其中波段代表不同的变量。tidysdm为其所有数据处理函数提供了替代版本,这些版本可以使用terra包中的SpatRasterDatasets对象,其中每个变量都有自己的数据集,包含多个时间点。因此,筛选存在点(图2a)、采样背景/伪缺失(图2b)并将结果数据封装到recipe中,然后可以用于SDM工作流程,这些操作都是直接了当的。允许使用时间维度的函数后缀为_time(),如thin_by_cell_time()sampling_background_time()。我们提供了一个使用这些函数的示例,从radiocarbon dates重建马的生态位(https://evolecolgroup.github.io/tidysdm/articles/a1_palaeodata_application.html)。

  • 5 结论

tidysdm提供了一个模块化框架,充分利用了tidymodels的强大功能,可应用于现代SDM(如生态学、自然保护、生物地理学和动物学)和古群落(古生态学、考古学、古动物学、古生物学、进化生态学、宏观进化和种群遗传学/基因组学)。其主要优势在于,用户可以将任何自定义算法或度量直接集成到其工作流程中,而无需修改任何软件包,省时省力。此外,任何添加到tidymodels框架中的内容(如堆叠集成)都可立即用于SDM,从而使更广泛的ML从业者社区的开发成果得以快速采用。




  • 文献信息

题目
tidysdm: Leveraging the flexibility of tidymodels for species distribution modelling in R
期刊
Methods in Ecology and Evolution (IF = 6.3)
作者
Michela Leonardi, Margherita Colucci, Andrea Vittorio Pozzi, Eleanor M. L. Scerri, Andrea Manica*
发布日期
2024 年 9 月 9  日
DOI
https://doi.org/10.1111/2041-210X.14406
文章翻译仅代表译者的理解,如需参考和引用相关内容,请查阅原文。
点击“阅读原文”可查看文献↓↓↓

Biodiversity Monitoring
生物多样性;监测保护;群落生态;生态统计;R语言;python。 主要分享一些前沿的文献和方法实例,更新看心情和时间。
 最新文章