第27周:文献阅读及机器学习

目录

摘要

Abstract

一、文献阅读

发现问题

研究方法

CNN-LSTM

DT

SVR 

创新点

案例分析

数据准备

模型性能

预测模型的实现

仿真实验及分析 

二、LSTM

1、基本结构 

2、具体步骤

3、举例说明

4、原理理解 

总结


摘要

本周阅读文献《Short-term water quality variable prediction using a hybrid CNN-LSTM deep learning model 》,本研究以希腊小普雷斯帕湖为对象,鉴于水质监测的重要性及传统方法的局限,采用传感器采集 2012 - 2013 年相关水质数据,构建 LSTM、CNN、CNN - LSTM 深度学习模型与 SVR、DT 传统机器学习模型,经数据集划分、变量归一化处理及训练后,以多种统计指标评估,结果表明混合 CNN - LSTM 模型在 DO 和 Chl - a 预测中表现最优,深度学习模型整体优于传统模型,且研究指出了未来可进一步探索的方向,如 DL 模型中长期预测、预处理方法及其他 DL 模型应用等。由于这两周阅读的文献都是LSTM相关的模型预测,所以复习了以下LSTM的基本结构和数学原理。

Abstract

This week we read the literature “Short-term water quality variable prediction using a hybrid CNN-LSTM deep learning model”, this study takes the small Prespa Lake in Greece as the object, in view of the importance of water quality monitoring and the limitations of the traditional methods, we use sensors to collect Given the importance of water quality monitoring and the limitations of traditional methods, we used sensors to collect water quality data from 2012 to 2013, and constructed LSTM, CNN, and CNN-LSTM deep learning models together with SVR and DT traditional machine learning models, and evaluated them with various statistical indicators after dataset partitioning, normalization of variables, and training, and the results showed that the hybrid CNN-LSTM model performed optimally for DO and Chl-a prediction, and that the deep learning model outperformed traditional models. The results show that the hybrid CNN-LSTM model performs best in DO and Chl - a prediction, and the deep learning model is better than the traditional model in general, and the study points out the directions that can be further explored in the future, such as the medium- and long-term prediction of the DL model, the preprocessing method, and the application of other DL models. Since the literature read in these two weeks are all LSTM-related model predictions, we reviewed the following basic structure and mathematical principles of LSTM.

一、文献阅读

本周阅读的文献是《Short-term water quality variable prediction using a hybrid CNN-LSTM deep learning model 》

发现问题

研究者们提出了一个关键问题:如何有效地预测和管理水资源,特别是在评估湖泊健康状况方面至关重要的溶解氧(DO)和叶绿素a(Chl-a)浓度。为了解决这一问题,他们探索了深度学习模型的应用,特别是长短期记忆网络(LSTM)和卷积神经网络(CNN)的潜力,以及它们结合形成的CNN-LSTM混合模型。研究者们旨在通过这些模型提高水质预测的准确性,并将它们与传统机器学习模型如支持向量回归(SVR)和决策树(DT)进行比较。 

研究方法

CNN-LSTM

该模型结合了卷积神经网络(CNN)和长短期记忆网络(LSTM)的优势,用于预测水质变量。CNN部分负责从时间序列数据中提取空间特征,而LSTM部分则用于捕捉时间序列中的长期依赖关系。模型通过训练数据集进行学习,调整参数以最小化预测误差,并通过测试数据集进行性能评估,使用相关系数、均方根误差等统计指标来衡量预测的准确性。 

DT

决策树模型是一种基于规则的机器学习方法,通过递归地分割数据来构建预测模型。在水质预测中,DT模型通过选择重要的特征并根据这些特征的值来划分数据,从而形成决策规则。模型的构建包括确定最佳分割点和控制树的复杂度,以避免过拟合。性能通过测试数据集上的预测结果来评估,考虑误差和其他统计指标 

SVR 

支持向量回归是一种基于支持向量机的回归方法,用于预测连续值。在水质预测中,SVR模型通过使用核技巧将输入数据映射到高维空间,找到最优的超平面来进行预测。模型的关键步骤包括选择核函数(如线性、RBF或多项式核),以及调整正则化参数和惩罚参数。SVR的性能通过测试数据集上的预测结果来评估,主要考虑误差大小和模型的泛化能力。 

创新点

1、混合模型的开发:文献中开发了一种新的混合深度学习模型,即CNN-LSTM模型,用于预测水质变量。这种模型结合了卷积神经网络(CNN)的特征提取能力和长短期记忆网络(LSTM)的时间序列分析优势,以提高预测的准确性。

2、水质变量的预测:文献专注于预测两个重要的水质变量——溶解氧(DO)和叶绿素a(Chl-a),这些变量对于水资源管理和环境监测至关重要。通过预测这些变量,可以更好地理解湖泊生态系统的健康状况。

3、与传统机器学习模型的比较:研究中不仅开发了深度学习模型,还将它们与传统的机器学习模型(如支持向量回归(SVR)和决策树(DT))进行了比较。这种比较有助于展示深度学习模型在水质预测方面的潜在优势。

案例分析

数据准备

在该研究中,数据准备包括从2012年6月1日至2013年5月31日在希腊Small Prespa Lake使用CYCLOPS-7传感器以15分钟间隔收集的水质数据,涉及溶解氧(DO)、叶绿素a(Chl-a)、pH值、氧化还原电位(ORP)、水温和电导率(EC)等变量。数据通过滑动窗口方法转换为监督学习格式,并使用滞后时间(t-1和t-2)处理时间序列。所有变量经过归一化和最小-最大缩放处理后,数据集被划分为70%的训练集和30%的测试集,以便进行模型的开发和验证.

模型性能

相关系数:衡量观测值与预测值之间的线性关系强度

各类误差:均方根误差RMSE、平均绝对误差MAE

百分比偏差PBIAS:衡量模型预测的系统偏差

Nash-Sutcliffe效率系数:评估模型的拟合程度

illmott一致性指数:检测模型对观测数据的敏感度

图形工具:泰勒图(展示相关系数和标准化标准差)、箱线图(比较模型预测值与挂测值得分布情况)、蜘蛛图(展示多个性能指标得综合表现)

预测模型的实现

LSTM模型 

使用输入层、隐藏层和输出层。隐藏层包括一个LSTM层,具有64个和32个单元,分别用于Chl-a和DO的预测。使用指数线性单元(ELU)作为激活函数,并在LSTM层后应用dropout层以防止过拟合。最后通过一个全连接层输出预测结果,并使用均方误差(MSE)损失函数和自适应梯度算法(AdaGrad)优化器进行训练。

CNN模型

包括输入层、隐藏层和输出层。隐藏层由卷积层激活层池化层组成。使用最大池化层和dropout层来调整过拟合,并通过全连接层输出预测结果。

CNN-LSTM混合模型

结合了CNN和LSTM的优势。首先使用CNN层提取特征,然后将这些特征输入到LSTM层进行时间序列预测。

 单个模型以及混合模型对于目标变量——溶解氧和叶绿素-a的损失如下图:

仿真实验及分析 

1、代码实现

model.py

CNN层

self.conv1d = nn.Conv1d(in_channels=cnn_in_channels, out_channels=cnn_out_channels, kernel_size=cnn_kernal_size, padding="same")
self.relu = nn.ReLU()
self.maxpool = nn.MaxPool1d(kernel_size= maxpool_kernal_size)

卷积层+激活函数+最大池化层 

LSTM层

self.lstm = nn.LSTM(
     input_size = int(lstm_input_size/maxpool_kernal_size),
     hidden_size = lstm_hidden_size,
     num_layers = lstm_num_layers,
     batch_first = True,
     dropout = dropout,
     proj_size = lstm_proj_size
)

 dropout层防止过拟合

前向传播

def forward(self, x):
     x = self.conv1d(x)
     x = self.relu(x)
     x = self.maxpool(x)
     lstm_out,_ = self.lstm(x)
     x = self.fc(lstm_out[:, -1, :])
     return x

 输入数据首先经过CNN进行特征提取,然后再经过LSTM进行时间序列的预测,最后从LSTM中选择最后一个时间步的输出作为全连接层的输入进行预测。

train.py

test.py

data_procecss.py 

2、结果分析 

时间序列图及其拟合图

上图是三个不同的深度学习模型。无论目标变量是溶解氧还是叶绿素-a,预测散点图表现最佳的都是CNN-LSTM混合模型,但是对于对于次优的单独模型有所不同。在溶解氧的预测中,LSTM模型明显更优于CNN模型;而在叶绿素-a的预测中,CNN模型的精确度高于LSTM模型。但是,像是SVR和DT这样的传统模型,它们无论在溶解氧还是叶绿素-a的预测表现都不如深度学习模型。 

泰勒图

泰勒图(Taylor diagram)是一种用于评估和比较不同模型或方法在模拟气候、天气、水文等时间序列数据时性能的图形工具。它通过三个主要的统计量来综合评价模型的预测技能:相关系数、标准差和偏差。

相关系数用来衡量模型观测值和预测值之间的相关性强度,该点与中心点的连线与相关系数轴线的夹角表示该模型的相关系数(点越接近圆周,相关性越强)

标准差用来衡量模型预测值的变异性或离散程度,在图中圆圈的半径表示预测值标准差和观测值标准差的比值(半径为1意味着模型预测的标准差与观测值完全相同)

偏差用来衡量观测值与预测值之间的平均误差,在图中表示为点与中心点之间的距离(点越接近中心表示偏差越小)

上图的结果中可以明显看出,CNN-LSTM模型具有最小的标准差和偏差,以及最大的相关系数。 

箱线图

箱线图是一种标准化的统计图表,用于展示数据分布的五个关键数值:最小值、第一四分位数(Q1)、中位数(Q2)、第三四分位数(Q3),以及最大值。 

 

在箱线图中,最佳模型的箱线图应该具有接近观测值中位数的中位数,较小的箱线长度,以及较少的异常值。 

LSTM模型在DO和Chl-a的预测中显示出较好的中位数和较集中的分布,表明其在捕捉时间序列数据中的长期依赖关系方面表现良好

CNN模型显示出较大的箱子或须,可能表明预测值的变异性较大,表明它在特征提取方面的优势。

CNN-LSTM模型显示出最佳的中位数、最集中的分布和最少的异常值,表明既有CNN的特征提取能力,又有LSTM的时间预测能力。

蜘蛛图

蜘蛛图(Spider Plot),也称为雷达图或极坐标图,是一种用于展示多变量数据的图表。在模型评估中,蜘蛛图可以直观地展示不同模型多个性能指标上的表现。 

下述结果图a表示不同模型的均方根误差RRMSE,图b表示不同模型的Nash-Sutcliffe效率系数E_{NS}

在蜘蛛图上,表现最佳的模型通常会形成一个更接近理想状态(图的边缘)的多边形,也就是正多边形,这就意味着该模型在所有指标上都表现良好。可以明显的看出CNN-LSTM模型的均方根误差最小,Nash-Sutcliffe效率系数CNN-LSTM模型接近1,表示模型预测与观测值基本一致,即模型预测非常准确。

二、LSTM

1、基本结构 

长短期记忆网络(LSTM,Long Short-Term Memory)是一种时间循环神经网络,是为了解决RNN存在的长期依赖问题而专门设计出来的,所有的RNN都具有一种重复神经网络模块的链式形式。 

LSTM的结构图如下所示: 

​ 

该结构中一共有三个控制信号,分别是input gate(控制memory cell的开关,只有“开”才会将信息保存至memory中 ) 、forget gate(决定memory cell何时重置清零)、output gate(控制memory cell的开关,只有“开”才会将memory中的信息读取出来)

LSTM的详细计算流程如下图:

字母含义介绍: 

z   输入

z_i “输入”控制信号

z_f “重置”控制信号

z_o “输出”控制信号

a   输出

c  memory中的值——{c}'  memory中更新后的值

g(z)f(z_i)f(z_f)f(z_o)h({c}')都是输入经过激活函数计算后的值 

2、具体步骤

step1 判断“输入门”是否开启

判断式g(z)f(z_i)

如果z_i是零(输入门关闭),那么式子也是零;如果z_i非零(输入门开启),那么式子非零(z不为零)

step2 判断“记忆门”是否开启

判断式cf(z_f)

如果z_f是零(记忆门关闭),那么式子也是零;如果z_f非零(记忆门开启),那么式子非零(c不为零)

step3 叠加记忆或者重置记忆

{c}'=g(z)f(z_i)+cf(z_f)

将step1和step2的两个式子相加得到该input信息在memory中的存储情况。总的来说,memory当中的取值取决于“输入门“控制 和”记忆门“控制二者。 

step4 判断”输出门“是否开启

判断式h({c}')f(z_o)

 如果z_o是零(输出门关闭),那么式子也是零;如果z_o非零(输出门开启),那么式子非零({c}'不为零)

3、举例说明

当{x_1x_2x_3} 的输入信息不断变化的时候,输出的分析如下图:

​ 

4、原理理解 

LSTM是RNN的一种特殊形式 ,其中的memory就可以看作是neural。一般的network当中,neural相当于一个处理input的function;LSTM中,memory也相当于一个function,只不过需要有4个对应的input。如下图: 

左图中的一个input只会乘以一个权重就放进neural中,右图中可以明显看出,一个input放进hidden layer当中的neural进行计算时,需要分为4个input,所以推测最初input的值应该是一个4维向量。 

然而,现实中的 LSTM会更加的复杂,结构如下图: 

​ 

每一个的计算都需要:该输入的4个input、上一输入的output、以及memory中存储的值。 

一般LSTM不止一层,会出现多层叠加的情况,如下: 

​ 

总结

本研究聚焦于希腊小普雷斯帕湖水质变量预测,开发了 LSTM、CNN 和混合 CNN - LSTM 深度学习模型及 SVR、DT 传统机器学习模型,经过实际案例得出混合 CNN - LSTM 模型在预测 DO 和 Chl - a 浓度上表现最佳,且深度学习模型整体优于传统模型,为水质监测提供了更优方法与思路。 进一步加深对与LSTM模型的理论学习和案例实践,并且学习了各种模型性能可视化评估(比如泰勒图、雷达图等)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/949088.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【机器遗忘之UNSIR算法】2023年IEEE Trans期刊论文:Fast yet effective machine unlearning

1 介绍 年份:2023 期刊:IEEE Transactions on Neural Networks and Learning Systems 引用量:170 Tarun A K, Chundawat V S, Mandal M, et al. Fast yet effective machine unlearning[J]. IEEE Transactions on Neural Networks and Le…

Linux-----进程处理(waitpid,进程树,孤儿进程)

目录 waitpid等待 进程树 孤儿进程 waitpid等待 Linux中父进程除了可以启动子进程,还要负责回收子进程的状态。如果子进程结束后父进程没有正常回收,那么子进程就会变成一个僵尸进程——即程序执行完成,但是进程没有完全结束,其…

Docker- Unable to find image “hello-world“locally

Docker- Unable to find image “hello-world“locally 文章目录 Docker- Unable to find image “hello-world“locally问题描述一. 切换镜像1. 编辑镜像源2. 切换镜像内容 二、 检查设置1、 重启dockers2、 检查配置是否生效3. Docker镜像源检查4. Dokcer执行测试 三、自定义…

Android配件应用默认启动与USB权限申请区别

使用效果: USB配件授权演示 选择USB配件默认打开应用 申请USB配件使用权限

vue2框架配置路由设计打印单

业务效果: 查询出列表后&#xff0c;点击申请单按钮&#xff0c;弹出申请表格&#xff0c;可进行打印 后端实现 控制器、服务层等省略&#xff0c;关联查出数据提供接口给前端即可 <!--获取详细信息(用于申请单打印)--><select id"selectXxxxDetail" par…

第29天:Web开发-PHP应用弱类型脆弱Hash加密Bool类型Array数组函数转换比较

#知识点 1、安全开发-原生PHP-弱类型脆弱 2、安全开发-原生PHP-函数&数据类型 3、安全开发-原生PHP-代码审计案例 一、PHP弱类型对比 1、 和 两个等号是弱比较&#xff0c;使用进行对比的时候&#xff0c;php解析器就会做隐式类型转换&#xff0c;如果两个值的类型不相等就…

在Ubuntu 18.04.6 LTS安装OpenFace流程

一、修改配置:将gcc8&#xff0c;g8作为默认选项 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 100 sudo update-alternatives --config gcc 选择版本&#xff0c;再查看gcc --version sudo update-alternatives --install /usr/bin/g g /usr/bin/g-…

【亚马逊云科技】基于Amazon EKS部署高可用的OceanBase的最佳实践

一、前言 随着企业业务的快速发展和数据量的不断增长&#xff0c;高性能、高可用的数据库解决方案成为了关键需求。OceanBase作为一款分布式关系型数据库&#xff0c;以其高扩展性、高可用性和高性能的特点&#xff0c;逐渐受到企业的广泛关注。然而&#xff0c;在复杂的分布式…

计算机网络:网络层知识点及习题(一)

网课资源&#xff1a; 湖科大教书匠 1、概述 网络层实现主机到主机的传输&#xff0c;主要有分组转发和路由选择两大功能 路由选择处理机得出路由表&#xff0c;路由表再生成转发表&#xff0c;从而实现分组从不同的端口转发 网络层向上层提供的两种服务&#xff1a;面向连接…

简历_熟悉缓存高并发场景处理方法,如缓存穿透、缓存击穿、缓存雪崩

系列博客目录 文章目录 系列博客目录1.缓存穿透总结 2.缓存雪崩3.缓存击穿代码总结 1.缓存穿透 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在&#xff0c;这样缓存永远不会生效&#xff0c;这些请求都会打到数据库。 常见的解决方案有两种&#xff1a; 缓存空对…

阿里云 人工智能与机器学习

阿里云的 人工智能&#xff08;AI&#xff09;与机器学习&#xff08;ML&#xff09; 服务为企业提供了全面的AI解决方案&#xff0c;帮助用户在多个行业实现数据智能化&#xff0c;提升决策效率&#xff0c;推动业务创新。阿里云通过先进的技术和丰富的工具&#xff0c;支持用…

LabVIEW语言学习过程是什么?

学习LabVIEW语言的过程可以分为几个阶段&#xff0c;每个阶段的重点内容逐步加深&#xff0c;帮助你从入门到精通。以下是一个简洁的学习过程&#xff1a; ​ 1. 基础入门阶段 理解图形化编程&#xff1a;LabVIEW是一种图形化编程语言&#xff0c;与传统的文本编程语言不同&am…

【办公类-47-02】20250103 课题资料快速打印(单个docx转PDF,多个pdf合并一个PDF 打印)

背景需求&#xff1a; 2023区级大课题《运用Python优化3-6岁幼儿学习活动材料的实践研究》需要做阶段资料 本来应该2024年6月就提交电子稿和打印稿。可是python学具的教学实验实在太多了&#xff0c;不断生成&#xff0c;我忙着做教学&#xff0c;都没有精力去整理。 2025年…

【CSS】第一天 基础选择器与文字控制属性

【CSS】第一天 1. CSS定义2. css引入方式2.1 内部样式2.2 外部样式2.3 行内样式 3. 选择器3.1 标签选择器3.2 类选择器3.3 id选择器3.4 通配符选择器 1. CSS定义 层叠样式表(CSS)是一种样式表语言&#xff0c;用来描述HTML文档的呈现(美化内容)。 书写位置&#xff1a;title标…

Nginx (40分钟学会,快速入门)

目录​​​​​​​ 一、什么是Nginx ? 可以做什么 &#xff1f; 二、正向代理和反向代理 三、负载均衡 四、动静分离 五、Nginx 常用命令 六、Nginx实战及总结 一、什么是Nginx ? 可以做什么 &#xff1f; Nginx 是高性能的 HTTP 和反向代理的 web 服务器&#xff0c…

单片机从入门到放弃教程001

1. 单片机介绍 单片微型计算机(Single Chip Microcomputer)简称单片机&#xff0c;是典型的嵌入式微处理器(Micro Controller Unit简称MCU)&#xff0c;是一种将中央处理器&#xff08;CPU&#xff09;、内存、输入输出接口以及其他功能模块集成在单一芯片上的微型计算机。 1…

[极客大挑战 2019]HardSQL 1

看了大佬的wp&#xff0c;没用字典爆破&#xff0c;手动试出来的&#xff0c;屏蔽了常用的关键字&#xff0c;例如&#xff1a;order select union and 最搞的是&#xff0c;空格也有&#xff0c;这个空格后面让我看了好久&#xff0c;该在哪里加括号。 先传入1’ 1试试&#…

深入Android架构(从线程到AIDL)_12 Android UI 单线程程序

目录 6、 Android UI 单线程程序 單線程程序概念 单线程可避免线程安全问题 SurfaceView与非UI线程 6、 Android UI 单线程程序 單線程程序概念 单线程程序意谓着两个(或多个)线程不能共享对象或变量值。Android的UI是单线程程序的环境。UI控件(如Button等)都是由UI线程所…

庐山派K230学习日记3 外设模块GPIO

GPIO和FPIOA 1 本节介绍​ 本节您将学习如何通过控制开发板的GPIO引脚&#xff0c;实现对RGB灯和按键的控制。 &#x1f3c6;学习目标 1️⃣如何将GPIO引脚配置为输出模式&#xff0c;通过引脚电平来控制RGB灯的颜色变化。 2️⃣如何将GPIO引脚配置为输入模式&#xff0c;来检…

【网络安全 | 漏洞挖掘】通过模拟功能实现提权(Bugcrowd)

未经许可,不得转载。 我将与大家分享我在 Bugcrowd 的某个项目中发现的一个漏洞,该项目中有一个“用户模拟”功能。 什么是用户模拟? 用户模拟允许管理员在不知晓用户凭据的情况下“以用户身份登录”。这种功能常见于管理员需要调试问题、审查用户权限或解决投诉的平台中。…