15、基于光谱估算土壤属性和类别

基于光谱估算土壤属性的多种模型对比

基于光谱估算土壤属性和类别

1. 袋装偏最小二乘回归模型预测总碳

在预测土壤总碳含量时,我们使用了袋装偏最小二乘回归模型。通过散点图展示了观测值与预测值的关系。
散点图

为了评估模型的准确性,我们使用了 eval 函数,并指定参数 obj = "quant" 来处理连续变量。以下是校准和验证的准确性度量代码:

# 校准的准确性度量
soilspec::eval(datC$TotalCarbon, soilCBagplsPred$predAve, obj = "quant")
##
ME RMSE
r2
R2 rhoC
RPD RPIQ
## 1
0 0.56 0.79 0.86 0.92 2.64 2.04

# 验证的准确性度量
soilspec::eval(datV$TotalCarbon, soilVBagplsPred$predAve, obj = "quant")
##
ME RMSE
r2
R2 rhoC
RPD RPIQ
## 1 0.01
0.5 0.66 0.7 0.86 1.85 2.39

从上述代码的输出结果可以看出,校准和验证的准确性度量指标有所不同。这些指标可以帮助我们评估模型的性能。

2. Cubist模型

2.1 Cubist模型简介

Cubist模型是一种基于决策树思想的数据挖掘工具,它将回归问题转化为分类问题。该模型由一组规则组成,每个规则包含一个线性模型。其形式如下:

Rule 1: [10 cases, mean -0.96, range -1.77 to 0.66, est err 0.27]
if
R880 <= 0.0144
R1610 > -0.921
then
outcome = -4.06 + 1.27 * R540 + 1.61 * R1610

当数据满足规则的条件时,就使用对应的线性函数进行预测。

2.2 构建Cubist模型

以下是构建Cubist模型的代码:

# 加载所需包
require(Cubist)
# 在校准数据集上构建Cubist模型
soilCCubistModel <- cubist(x = datC$spcAMovav, y = datC$TotalCarbon)
# 模型摘要
summary(soilCCubistModel)

模型摘要提供了完整的模型信息,包括规则和变量的使用频率。

2.3 模型预测与准确性评估

使用校准后的Cubist模型对校准和验证数据进行预测,并评估准确性:

# 对校准数据进行预测
soilCCubistPredict <- predict(soilCCubistModel, datC$spcAMovav)
# 对验证数据进行预测
soilVCubistPredict <- predict(soilCCubistModel, datV$spcAMovav)

# 校准的准确性度量
soilspec::eval(datC$TotalCarbon, soilCCubistPredict, obj = "quant")
##
ME RMSE
r2
R2 rhoC
RPD RPIQ
## 1 -0.02 0.27 0.91 0.97 0.98 5.46 4.23

# 验证的准确性度量
soilspec::eval(datV$TotalCarbon, soilVCubistPredict, obj = "quant")
##
ME RMSE
r2
R2 rhoC RPD RPIQ
## 1 0.03 0.39 0.8 0.82 0.92 2.4 3.11

从验证统计数据来看,校准后的Cubist模型的预测效果比PLS模型差。可能是因为部分规则只适用于少数观测值,导致模型过拟合。

2.4 简化Cubist模型

为了避免过拟合,我们简化模型,设置较少的规则:

# 在校准数据集上使用2条规则构建Cubist模型
soilCCubistModel2 <- cubist(x = datC$spcAMovav, y = datC$TotalCarbon,
                            control = cubistControl(rules = 2))
# 模型摘要
summary(soilCCubistModel)

再次进行预测和准确性评估:

# 对校准数据进行预测
soilCCubist2Predict <- predict(soilCCubistModel2, datC$spcAMovav)
# 对验证数据进行预测
soilVCubist2Predict <- predict(soilCCubistModel2, datV$spcAMovav)

# 校准的准确性度量
soilspec::eval(datC$TotalCarbon, soilCCubist2Predict, obj = "quant")
##
ME RMSE
r2
R2 rhoC
RPD RPIQ
## 1 -0.01
0.4 0.86 0.93 0.96 3.76 2.91

# 验证的准确性度量
soilspec::eval(datV$TotalCarbon, soilVCubist2Predict, obj = "quant")
##
ME RMSE
r2
R2 rhoC
RPD RPIQ
## 1 0.06 0.39 0.79 0.82 0.91 2.38 3.08

简化后的模型在一定程度上改善了过拟合问题。

2.5 可视化重要变量

我们可以根据模型摘要推断哪些波长在模型中是有用的,并进行可视化:

# 绘制作为预测变量的变量
plot(soilCCubistModel$usage[, 3], soilCCubistModel$usage[, 2],
     type = "h",
     col = "plum",
     xlab = "Wavelength /nm",
     ylab = "Model usage /%")
# 绘制条件变量(蓝色)
lines(soilCCubistModel$usage[, 3], soilCCubistModel$usage[, 1],
      type = "h",
      col = "blue")
# 查看哪些变量重要
# 添加到现有图中
par(new = T)
# 添加光谱用于可视化
plot(colnames(datC$spcAMovav), datC$spcAMovav[1, ],
     axes = F,
     ylim = c(-2, 2),
     xlab = " ", ylab = " ",
     type = "l",
     main = " ",
     xlim = c(500, 2450))

重要变量可视化

3. 随机森林模型

3.1 随机森林模型简介

随机森林(RF)是一种广泛应用于数据科学的算法,它是决策树的集成。与CART模型相比,RF的优势在于其集成方法,通过多个决策树进行预测。

3.2 随机森林模型的调优参数

随机森林有三个调优参数:
- mtry :每个自助抽样中随机选择的输入变量数量,范围从1到样本大小。
- 树的数量:需要足够大以稳定袋外误差,一般500棵树就足够。
- 最小节点大小:决定不进行分裂的节点的最小大小,回归默认值为5,分类为1。

3.3 构建随机森林模型

以下是构建随机森林模型的代码:

# 加载所需包
require(randomForest)
# 准备数据,列名不能为数字,在前面添加'spec.'
datCSub <- data.frame(TotalCarbon = datC$TotalCarbon, datC$spcAMovav)
colnames(datCSub) <- c("TotalCarbon", paste0("spec.", colnames(datC$spcAMovav)))
# 运行随机森林算法
soilCRFModel <- randomForest(TotalCarbon ~ .,
                             data = datCSub,
                             ntree = 1000,
                             mtry = 10,
                             importance = TRUE,
                             na.action = na.omit)
# 模型摘要
soilCRFModel

3.4 可视化重要变量

随机森林函数保存了解释土壤属性方差的重要变量,我们可以通过两种方法绘制这些重要变量:

# 绘制光谱中最重要的波段
varImpPlot(soilCRFModel,
           main = " ")

随机森林重要变量

3.5 模型预测与准确性评估

使用拟合的RF模型对验证集进行预测,并评估准确性:

# 对校准数据进行预测
soilCRFPred <- predict(soilCRFModel, datCSub)
# 准备验证数据
datVSub <- data.frame(TotalCarbon = datV$TotalCarbon, datV$spcAMovav)
colnames(datVSub) <- c("TotalCarbon", paste0("spec.", colnames(datV$spcAMovav)))
# 对验证数据进行预测
soilVRFPred <- predict(soilCRFModel, datVSub)

# 校准的准确性度量
soilspec::eval(datC$TotalCarbon, soilCRFPred, obj = "quant")
##
ME RMSE
r2
R2 rhoC
RPD RPIQ
## 1
0
0.3 0.94 0.96 0.98 5.03 3.89

# 验证的准确性度量
soilspec::eval(datV$TotalCarbon, soilVRFPred, obj = "quant")
##
ME RMSE
r2
R2 rhoC RPD RPIQ
## 1 0.1 0.52 0.57 0.69 0.81 1.8 2.33

4. 基于内存的学习(MBL)

4.1 MBL算法简介

基于内存的学习(MBL)是一种局部校准算法,用于处理复杂的土壤光谱数据集。它将光谱分割成具有相似光谱特征的子集,通过在主成分空间中选择最近邻点来构建局部模型。

4.2 MBL算法的步骤

MBL算法的工作步骤如下:
1. 构建光谱的p维空间,p为主成分的数量。
2. 对于验证数据集中的每个点,从校准样本中选择其k个最近邻。
3. 使用在校准数据集中找到的最近邻光谱为验证数据集中的每个点拟合局部模型。

4.3 构建MBL模型

以下是构建MBL模型的代码:

# 定义邻居序列
k2t <- seq(from = 20, to = 120, by = 10)
# 加载所需包
require(resemble)
# 主成分保留的最大累积解释方差
maxexplvar <- 0.99
# 运行MBL算法
mblResults1 <- mbl(Xr = datC$spcAMovav,
                   Yr = datC$TotalCarbon,
                   # 假设不知道测试数据集的总碳含量
                   Yu = NULL,
                   Xu = datV$spcAMovav,
                   diss_method = "pca",
                   control = mbl_control(validation_type = "NNv"),
                   diss_usage = "none",
                   k = k2t,
                   # 定义"wapls1"的最小和最大成分数量
                   method = local_fit_wapls(min_pls_c = 4, max_pls_c = 17),
                   pc_selection = list("cumvar", maxexplvar),
                   scale = FALSE, center = TRUE)

4.4 模型结果总结与可视化

# 打印模型摘要
mblResults1
# 绘制RMSE与邻居数量的关系
matplot(mblResults1$validation_results$nearest_neighbor_validation$k,
        mblResults1$validation_results$nearest_neighbor_validation$rmse,
        type = "b",
        xlab = "K-neighbours",
        ylab = "RMSE",
        pch = 1,
        col = "dodgerblue")

RMSE与邻居数量关系

4.5 选择最优邻居数量

通过上述可视化结果,我们可以选择使RMSE最小的最优邻居数量:

# rmse值
rmseMBL <- mblResults1$validation_results$nearest_neighbor_validation$rmse
# 最小rmse值
minRmseMBL <- min(mblResults1$validation_results$nearest_neighbor_validation$rmse)
# 邻居数量值
neighNumber <- mblResults1$validation_results$nearest_neighbor_validation
# 选择最优邻居数量
optNn <- neighNumber[rmseMBL == minRmseMBL,]$k

4.6 使用实际验证数据进行预测

# 运行MBL算法并指定Yu参数
mblResults1Val <- mbl(Xr = datC$spcAMovav,
                      Yr = datC$TotalCarbon,
                      Yu = datV$TotalCarbon,
                      Xu = datV$spcAMovav,
                      diss_method = "pca",
                      control = mbl_control(validation_type = "NNv"),
                      diss_usage = "none",
                      k = optNn,
                      # 定义"wapls1"的最小和最大成分数量
                      method = local_fit_wapls(min_pls_c = 4, max_pls_c = 17),
                      pc_selection = list("cumvar", maxexplvar),
                      scale = FALSE, center = TRUE)
# 绘制验证数据的观测值与预测值
plot(datV$TotalCarbon, mblResults1Val$results$k_30$pred,
     xlab = "Observed",
     ylab = "Predicted",
     xlim = c(0, 12),
     ylim = c(0, 12),
     pch = 16)
abline(0, 1)

MBL预测结果

5. 模型比较

模型 校准ME 校准RMSE 校准r2 校准R2 校准rhoC 校准RPD 校准RPIQ 验证ME 验证RMSE 验证r2 验证R2 验证rhoC 验证RPD 验证RPIQ
袋装偏最小二乘回归 0 0.56 0.79 0.86 0.92 2.64 2.04 0.01 0.5 0.66 0.7 0.86 1.85 2.39
Cubist(原) -0.02 0.27 0.91 0.97 0.98 5.46 4.23 0.03 0.39 0.8 0.82 0.92 2.4 3.11
Cubist(简化) -0.01 0.4 0.86 0.93 0.96 3.76 2.91 0.06 0.39 0.79 0.82 0.91 2.38 3.08
随机森林 0 0.3 0.94 0.96 0.98 5.03 3.89 0.1 0.52 0.57 0.69 0.81 1.8 2.33
MBL - - - - - - - - - - - - - -

从上述表格可以看出,不同模型在校准和验证阶段的表现各有优劣。在选择模型时,需要综合考虑模型的准确性、复杂度和泛化能力等因素。

6. 总结

本文介绍了几种用于基于光谱估算土壤总碳含量的模型,包括袋装偏最小二乘回归、Cubist、随机森林和基于内存的学习(MBL)。每个模型都有其特点和适用场景。通过对这些模型的比较和分析,我们可以根据具体需求选择最合适的模型来进行土壤属性的预测。同时,在模型构建过程中,需要注意参数的调优和过拟合问题,以提高模型的性能和泛化能力。

7. 各模型特点分析

7.1 袋装偏最小二乘回归模型

  • 优点 :通过散点图能直观展示观测值与预测值关系,使用 eval 函数评估准确性较为方便。在一定程度上能较好地处理连续变量的预测问题。
  • 缺点 :从验证的准确性度量来看,其RMSE等指标表现一般,说明预测的精度可能有待提高。

7.2 Cubist模型

  • 优点 :模型由一组规则和线性模型组成,形式相对清晰,可解释性较强。能够将回归问题转化为分类问题处理。通过简化规则可以在一定程度上改善过拟合问题。
  • 缺点 :原模型容易出现过拟合,部分规则只适用于少数观测值,导致验证效果不如预期。

7.3 随机森林模型

  • 优点 :作为决策树的集成算法,具有较强的处理高维数据的能力。可以通过调优参数来优化模型性能,并且能够保存解释土壤属性方差的重要变量,方便进行变量重要性分析。
  • 缺点 :存在过拟合的倾向,在验证阶段的准确性度量指标表现不如校准阶段,泛化能力有待提高。

7.4 基于内存的学习(MBL)模型

  • 优点 :能够处理复杂的土壤光谱数据集,通过在主成分空间中选择最近邻点构建局部模型,可处理光谱与土壤属性之间的复杂非线性关系。可以通过优化邻居数量来提高预测准确性。
  • 缺点 :算法相对复杂,需要选择合适的相似性度量、主成分数量和邻居数量等参数,参数选择不当可能会影响模型性能。

8. 模型选择建议

根据不同的应用场景和数据特点,我们可以参考以下建议来选择合适的模型:
- 数据维度较低且关系相对简单 :袋装偏最小二乘回归模型可能是一个不错的选择,其操作相对简单,能快速得到预测结果。
- 需要较强的可解释性 :Cubist模型的规则和线性模型形式使其具有较好的可解释性,适合对模型解释有较高要求的场景。但需要注意避免过拟合问题,可通过简化规则来优化。
- 处理高维数据且对变量重要性分析有需求 :随机森林模型能够处理高维数据,并提供变量重要性信息,可用于挖掘数据中的关键因素。但要注意调优参数以提高泛化能力。
- 处理复杂非线性关系的土壤光谱数据 :基于内存的学习(MBL)模型通过局部建模的方式,能够更好地处理复杂的非线性关系。但需要仔细选择参数,如相似性度量、主成分数量和邻居数量等。

9. 模型构建流程总结

以下是各模型构建的主要流程:

graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
    classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px

    A([开始]):::startend --> B(数据准备):::process
    B --> C{选择模型}:::decision
    C -->|袋装偏最小二乘回归| D(构建模型):::process
    C -->|Cubist| E(构建初始模型):::process
    C -->|随机森林| F(准备数据并调优参数):::process
    C -->|MBL| G(定义参数和邻居序列):::process
    D --> H(评估准确性):::process
    E --> I(评估准确性):::process
    I --> J{是否过拟合}:::decision
    J -->|是| K(简化模型):::process
    J -->|否| L(使用模型):::process
    K --> I
    F --> M(构建模型):::process
    M --> N(评估准确性):::process
    G --> O(运行MBL算法):::process
    O --> P(选择最优邻居数量):::process
    P --> Q(使用实际验证数据预测):::process
    Q --> R(评估准确性):::process
    H --> S([结束]):::startend
    L --> S
    N --> S
    R --> S

10. 未来研究方向

虽然上述模型在基于光谱估算土壤属性和类别方面取得了一定的成果,但仍有一些可以进一步研究的方向:
- 模型融合 :尝试将不同的模型进行融合,发挥各模型的优势,以提高预测的准确性和稳定性。例如,可以将随机森林和MBL模型进行融合,利用随机森林处理高维数据的能力和MBL处理非线性关系的优势。
- 参数优化算法 :针对各模型的参数选择问题,研究更高效的参数优化算法,减少人工调参的工作量,提高模型性能。
- 新数据特征挖掘 :除了现有的光谱数据特征,探索挖掘更多与土壤属性相关的数据特征,如土壤的物理结构、化学组成等,以丰富模型的输入信息,提高预测精度。

11. 总结回顾

本文详细介绍了四种基于光谱估算土壤总碳含量的模型,包括袋装偏最小二乘回归、Cubist、随机森林和基于内存的学习(MBL)。通过对各模型的原理、构建过程、准确性评估和特点分析,我们了解到每个模型都有其适用场景和优缺点。在实际应用中,需要根据数据特点和应用需求选择合适的模型,并注意参数调优和过拟合问题,以提高模型的性能和泛化能力。同时,未来可以通过模型融合、参数优化和新数据特征挖掘等方向进一步提升土壤属性预测的准确性和可靠性。

希望本文能为从事土壤光谱分析和属性预测的相关人员提供有价值的参考,帮助他们更好地选择和应用合适的模型进行土壤属性的估算和分类。

潮汐研究作为海洋科学的关键分支,融合了物理海洋学、地理信息系统及水利工程等多领域知识。TMD2.05.zip是一套基于MATLAB环境开发的潮汐专用分析工具集,为科研人员与工程实践者提供系统化的潮汐建模与计算支持。该工具箱通过模块化设计实现了两大核心功能: 在交互界面设计方面,工具箱构建了图形化操作环境,有效降低了非专业用户的操作门槛。通过预设参数输入模块(涵盖地理坐标、时间序列、测站数据等),用户可自主配置模型运行条件。界面集成数据加载、参数调整、可视化呈现及流程控制等标准化组件,将复杂的数值运算过程转化为可交互的操作流程。 在潮汐预测模块中,工具箱整合了谐波分解法与潮流要素解析法等数学模型。这些算法能够解构潮汐观测数据,识别关键影响要素(包括K1、O1、M2等核心分潮),并生成不同时间尺度的潮汐预报。基于这些模型,研究者可精准推算特定海域的潮位变化周期与振幅特征,为海洋工程建设、港湾规划设计及海洋生态研究提供定量依据。 该工具集在实践中的应用方向包括: - **潮汐动力解析**:通过多站点观测数据比对,揭示区域主导潮汐成分的时空分布规律 - **数值模型构建**:基于历史观测序列建立潮汐动力学模型,实现潮汐现象的数字化重构与预测 - **工程影响量化**:在海岸开发项目中评估人工构筑物对自然潮汐节律的扰动效应 - **极端事件模拟**:建立风暴潮与天文潮耦合模型,提升海洋灾害预警的时空精度 工具箱以"TMD"为主程序包,内含完整的函数库与示例脚本。用户部署后可通过MATLAB平台调用相关模块,参照技术文档完成全流程操作。这套工具集将专业计算能力与人性化操作界面有机结合,形成了从数据输入到成果输出的完整研究链条,显著提升了潮汐研究的工程适用性与科研效率。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
内容概要:本文围绕SSH安全连接配置在毕业设计中的实际应用展开,深入解析了SSH协议的核心功能,包括身份验证、数据加密安全通道建立。文章重点介绍了SSH密钥对生成、高级配置优化(如自定义端口、密钥路径、心跳机制等),并通过Python结合Paramiko库实现自动化SSH连接与远程命令执行的完整案例,应用于智能家居控制系统项目中。代码层面详细剖析了密钥认证、连接参数设置、错误处理机制、命令执行流程及资源管理策略,并提出了安全增强建议,如主机密钥验证连接池管理。此外,拓展了SSH在远程数据库访问、代码自动部署等场景的应用,展望了量子安全SSH、零信任架构集成、AI辅助安全监测及WebSSH技术的发展趋势。; 适合人群:具备基本Linux网络基础知识,正在开展涉及远程通信或系统管理类毕业设计的学生,以及希望提升SSH实战能力的初级开发者; 使用场景及目标:①掌握SSH密钥认证与安全配置方法,构建可靠的远程开发环境;②在物联网、嵌入式系统等毕业项目中实现安全远程控制与自动化运维;③理解SSH底层机制并应用于实际工程问题; 阅读建议:学习过程中应结合文中代码实例进行实操演练,重点关注异常处理与安全性配置,在真实环境中逐步替换不安全策略(如AutoAddPolicy),并尝试扩展至更多应用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值