3.12学习周报
文章目录
- 前言
- 文献阅读
- 摘要
- 简介
- 方法介绍
- 讨论
- 结论
- 相关性分析
- 总结
前言
本周阅读文献《Streamflow and rainfall forecasting by two long short-term memory-based models》,文献主要提出两种基于长短时记忆网络的混合模型用于对水流量和降雨量进行预测。小波-LSTM(即WLSTM)模型,应用小波变换的trous算法进行时间序列分解,小波变换将高频和低频提取到不同的子时间序列中,将时间序列分解为更简单的分量,把传统的数据流预测数据驱动模型集成了数据预处理技术来进行预测。另一个模型将LSTM与卷积层相结合,应用CNN提取时间特征。最后通过实际的案例证明提出的两个模型在时序预测方面提高了LSTM的预测精度。其次,学习了相关性的基础知识。
This week,I read an article which proposes two hybrid models, based on long short-term memory network (LSTM), for monthly streamflow and rainfall forecasting. One model, wavelet-LSTM , applies a trous algorithm of wavelet transform to do series decomposition.Traditional data-driven models for streamflow forecasting require data pre-processing techniques integrated with novel models to forecast streamflow. And the other, convolutional LSTM (namely, CLSTM), couples convolutional neural network to extract temporal features.The results obtained indicate that the wavelet transform and convolutional layers improved the forecast accuracy of LSTM, especially for longer time step ahead forecasting. Then I learn the basics of correlation.
文献阅读
题目:Streamflow and rainfall forecasting by two long short-term memory-based models
作者:Lingling Ni ,Dong Wang ,Vijay P. Singh,Jianfeng Wu,Yuankun Wang ,Yuwei Tao ,Jianyun Zhang ,
摘要
Prediction of streamflow and rainfall is important for water resources planning and management. In this study, we developed two hybrid models, based on long short-term memory network (LSTM), for monthly streamflow and rainfall forecasting. One model, wavelet-LSTM (namely, WLSTM), applied a trous algorithm of wavelet transform to do series decomposition, and the other, convolutional LSTM (namely, CLSTM), coupled convolutional neural network to extract temporal features. Two streamflow datasets and two rainfall datasets are used to evaluate the proposed models. The prediction accuracy of WLSTM and CLSTM was compared with that of multi-layer perceptron (MLP) and LSTM. Results indicated that LSTM was applicable for time series prediction, but WLSTM and CLSTM were superior alternatives.
简介
合适的数据预处理提高了数据驱动模型的性能,将数据预处理技术与机器学习相结合,许多研究表明,具有更高的准确性。基于小波的模型是最受欢迎的混合模型之一,因为它通常可以显着提高预测准确性。小波变换(WT)可以将时间序列分解为单独的子序列,并为数据驱动的模型提供更连贯的序列结构,因此它已成为水文和气象预报的流行工具。与WT类似,卷积神经网络(CNN)使用基于滤波器组的离散卷积操作来检测特征的局部合相,滤波器组是指卷积层。本研究的目的是研究LSTM在预测流量和降雨方面的潜力,并开发两个基于LSTM的模型来提高预报的准确性。一种模型将LSTM与小波变换(以下简称WLSTM)耦合,并采用小波变换将时间序列分解为更简单的分量。另一个模型将LSTM与卷积层(以下简称CLSTM)相结合,应用CNN提取时间特征。
方法介绍
小波变换 (WT)
小波变换是一种工具,可将数据切割成不同的频率分量,然后以与其比例相匹配的分辨率研究每个分量。它的主要特性是它提供了所考虑过程的时间尺度本地化。自然界中观测到的水文序列通常是离散信号,因此通常首选离散小波变换(DWT)。
离散小波变换可以通过金字塔算法计算,该算法在多个时间和频率分辨率下计算其表示。通过两组线性滤波器(小波和缩放滤波器),小波和缩放系数定义为:
典型的DWT是一种非冗余变换,其敏感性容易变化,因此在应用于与预测相关的问题时是一个不希望出现的特征。这个问题是由边界条件引起的,可以通过trous(AT)小波变换来克服,它促进了对观测数据中潜在过程特性的理解。
性能度量
以下三种性能度量用于定性评估所开发模型的性能:均方根误差(RMSE),纳什-萨特克利夫模型效率系数(NSE)和平均绝对相对误差(MARE),分别表示为
两种混合预测模型
小波-LSTM模型(即WLSTM)
在水文和水资源领域,基于小波的预测通常采用Mallat离散小波变换算法,其中执行WT会将一些未来信息发送到预报中。此问题通常通过迭代地将追加-分解-采样 (ADS) 操作应用于测试数据集来解决,这非常耗时。为了克服“未来数据”问题,以及ADS运算的高计算成本,本研究应用了trous(AT)算法进行时间序列分解,不需要未来时间(>t)的数据来计算当前(t)的小波(缩放)系数。由于AT的特性,WT可以直接对整个数据集执行,而不是迭代应用ADS操作。WLSTM 模型首先选择需要分解的解释变量,然后使用 AT 将所选解释变量和目标变量的时间序列划分为几个更稳定的子序列。然后,它删除了受序列开始时边界条件影响的小波系数。之后,它将整个数据集分为训练集和测试集。训练包含两层 LSTM 且顶部有一个密集层的网络,以使用 q (用作输入的先前时间步长的数量)滞后记录计算 p (我们想要预测的下一个时间段的数量)提前一步预测。
CLSTM
第二个模型将LSTM与卷积神经网络(CNN)耦合,即CLSTM。在 CLSTM 中,应用卷积层堆栈来捕获变量的时间特征。CNN提取的特征被馈送到一个包含两层LSTM的网络,上面有一个密集层。然后,训练整个 CLSTM 模型以使用 q 滞后记录计算 p 提前预测。
应用
在Cuntan的情况下,WLSTM模型在RMSE方面对提前6个月和8个月的预测具有最佳的准确性。对于提前1步预测,所有神经网络均显示出令人满意的结果,当预测步骤调整为 3 和 6 时,与其他基于 LSTM 的模型相比,MLP 的性能迅速下降。尽管CLSTM的RMSE,MARE和NSE高于LSTM,但与WLSTM相比,它并没有显着提高预测准确性。WLSTM的表现优于LSTM。
讨论
用于多步骤提前预测时MLP和LSTM之间的区别,于 MLP,滞后记录被视为固定大小的输入,而提前多步预测是固定大小的输出。这种处理模式是一对一的情况,其中所有时间记录通过神经元权重直接相互连接,而 LSTM 的处理方式与 MLP 不同,因为它被视为序列到序列(即一次处理序列输入的一个元素,然后一个接一个地生成输出)的问题。LSTM 一次处理一个元素的输入序列,并生成序列输出,其中过去的时间信息由存储单元隐式维护。与LSTM类似,CLSTM和WLSTM将预测作为序列到序列问题进行处理。
关于CLSTM和WLSTM之间的区别。CLSTM 和 WLSTM 都可以看作是数据预处理方法,因为它们都应用卷积操作来提取数据的时间局部信息。小波变换将高频和低频提取到不同的子时间序列中。CNN在一个卷积层的水平上对时间局部信息进行编码。但是,WLSTM 的筛选器是预先指定的结构化筛选器,而 CLSTM 的筛选器是由数据训练的,这些数据是可学习的。此外,卷积层的输出由非线性函数激活。从应用结果可以看出,尽管WLSTM显示出其优于LSTM的优越性,但在大多数情况下,可学习和非线性CLSTM的性能优于WLSTM。有人建议,当解释变量较小且更期望准确预测峰值时,WLSTM 似乎是更好的选择。如果没有关于建模的先验信息,CLSTM 似乎是更好的选择,因为它在大多数情况下表现良好。在这项研究中,我们只应用了两个卷积层来构建CLSTM作为数据不足的极限。可用于训练 CLSTM 的数据越多,可以堆叠的卷积层就越多。此外,堆叠卷积层越大,输入数据的表示形式就越丰富,预测结果就越好。
结论
由于溪流的非线性和非平稳性,传统的数据流预测数据驱动模型需要与新模型集成的数据预处理技术来预测溪流。长短时记忆(LSTM)是一种流行的神经网络(NN),适用于时序数据。本文研究了LSTM在流量和降雨预报中的潜在用途,并提出了两种基于LSTM的模型来执行多步提前预测。一个模型WLSTM应用“trous”小波变换算法进行序列分解,另一个模型CLSTM耦合卷积层来提取时间特征。利用该模型预测长江昆滩站和后口站月流量,对济南站、温江站进行月降雨量预报。
将结果与MLP和LSTM的结果进行比较。结果表明,LSTM适用于水流量和降雨预报,小波变换和卷积层提高了LSTM的预报精度,特别是对于长时间提前的预测。CLSTM 和 WLSTM 是更好的替代方案,当预计预测的时间更长时。
相关性分析
相关分析是指对两个或多个具备相关性的变量元素进行分析,从而衡量两个因素的的相关密切程度,相关性的元素之间需要存在一定的联系或者概率才可以进行相关性分析。
如何利用相关系数判断数据之间的关系?
1.绘制散点图
2.相关系数
Pearson相关系数
一般用于分析,两个连续变量之间的关系,是一种线性相关系数,公式为:
|r|<= 0.3 不存在线性相关
0.3<=|r|<= 0.5 低度线性关系
0.5<=|r|<= 0.8 显著线性关系
|r| > 0.8 高度线性关系
Spearman相关系数
Pearson相关系数要求连续变量的取值服从正态分布,不服从正态分布的变量、分类或等级变量之间的关联性可采用Spearman秩相关系数,也称等级相关系数来描述。公式:
对两个变量成对的取值分别按照从小到大(或者从大到小)顺序编秩,Ri代表xi的秩次,Qi代表yi的秩次,Ri-Qi为xi、yi的秩次之差。
3.判定系数
判定系数是相关系数的平方,用r2表示;用来衡量回归方程对y的解释程度。判定系数取值范围:0≤r2≤1。r2越接近于1,表明x与y之间的相关性越强;r2越接近于0,表明两个变量之间几乎没有直线相关关系。
应用场景
1.利用相关系数来减少统计指标
当业务指标繁杂,叙述笼统,给报告制作,分析解读带来巨大的成本的时候。根据相关系数删减指标是方法之一,一般来说相关性大于0.8的时候可以选择其一。
2.利用相关系数来挑选回归建模的变量。
在建立多元回归模型前,需要解决把那些数据放入模型作为自变量。最常规的方式就是先计算所有字段与因变量的相关系数,把相关系数较高的放入模型。然后计算自变量间的相关系数。若自变量间的相关系数高,说明存在多重共线性,需要进行删减。
代码学习
'''
相关性分析分析连续变量之间的线性相关程度的强弱Pearson相关系数(皮尔逊相关系数)'''
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy import stats
%matplotlib inline
plt.rcParams['font.sans-serif'] = [u'SimHei']
plt.rcParams['axes.unicode_minus'] = False
# Pearson相关系数data1 = pd.Series(np.random.rand(100)*100).sort_values()
data2 = pd.Series(np.random.rand(100)*50).sort_values()
data = pd.DataFrame({'value1':data1.values,'value2':data2.values})
print(data.head())
print('------')
# 创建样本数据u1,u2 = data['value1'].mean(),data['value2'].mean() # 计算均值
std1,std2 = data['value1'].std(),data['value2'].std() # 计算标准差
print('value1正态性检验:\n',stats.kstest(data['value1'], 'norm', (u1, std1)))
print('value2正态性检验:\n',stats.kstest(data['value2'], 'norm', (u2, std2)))
print('------')
# 正态性检验 → pvalue >0.05data['(x-u1)*(y-u2)'] = (data['value1'] - u1) * (data['value2'] - u2)
data['(x-u1)**2'] = (data['value1'] - u1)**2
data['(y-u2)**2'] = (data['value2'] - u2)**2
print(data.head())
print('------')
# 制作Pearson相关系数求值表r = data['(x-u1)*(y-u2)'].sum() / (np.sqrt(data['(x-u1)**2'].sum() * data['(y-u2)**2'].sum()))
print('Pearson相关系数为:%.4f' % r)
# 求出r
# |r| > 0.8 → 高度线性相关
总结
本周在阅读文献时主要了解到一种数据预处理技术小波变换方法,对时间序列进行分解从而提高预测的准确性。
相关文章:
3.12学习周报
文章目录前言文献阅读摘要简介方法介绍讨论结论相关性分析总结前言 本周阅读文献《Streamflow and rainfall forecasting by two long short-term memory-based models》,文献主要提出两种基于长短时记忆网络的混合模型用于对水流量和降雨量进行预测。小波-LSTM&am…...
电力电子中逐波限流控制以及dsp实现
逐波限流是指在电力系统运行中,对电力设备进行电流保护的一种措施。它的实现方式是通过对电力系统的电流进行逐波监测和控制,每一波电流都可以独立地进行限制,从而保护电力系统设备不受过载损坏或短路故障的影响。 逐波限流的作用是提高电力…...
【数据结构】 顺序表
文章目录1 线性表2 顺序表2.1 概念及结构2.2 接口实现2.3 数组相关面试题2.4 顺序表的问题与思考1 线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序…...
Elasticsearch 集群规划- 单台机器核心数计算公式
在做集群规划的时候,到底需要给集群的每个节点多少个核心数?这个问题一直困扰了我很久。最近一段时间做千亿数据,PB存储量集群规划的时候,突然想明白了这件事,大致可以用一个公式来计算!我觉得这是一个非常…...
Tesla都使用什么编程语言?
作者 | 初光 出品 | 车端 备注 | 转载请阅读文中版权声明 知圈 | 进“汽车电子与AutoSAR开发”群,请加微“cloud2sunshine” 总目录链接>> AutoSAR入门和实战系列总目录 带着对更美好未来的愿景,特斯拉不仅成为有史以来最有价值的汽车公司&…...
1143. 最长公共子序列——【Leetcode每日刷题】
1143. 最长公共子序列 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些…...
【并发基础】线程的通知与等待:obj.wait()、obj.notify()、obj.notifyAll()详解
目录 〇、先总结一下这三个方法带来的Java线程状态变化 一、obj.wait() 1.1 作用 1.2 使用前需要持有线程共享对象的锁 1.3 使用技巧 二、obj.notify(All)() 1.1 notify() 方法 1.1.1 调用notify()或notifyAll()不会释放线程的锁 1.2 notifyAll() 方法 1.3 使用技巧 三、使用实…...
css黏性定位-实现商城的分类滚动的标题吸附
传统的黏性定位是使用js通过计算高度来实现的,当元素滚动到一定位置时吸附在当前位置。下面我们通过css来实现黏性定位功能。 黏性定位 黏性定位目前主流的浏览器已经全部支持,顾名思义,黏性定位具有吸附的效果,其实它是positio…...
@Component和@bean注解在容器中创建实例区别
Component和Bean的区别 在Spring Boot中,Component注解和Bean注解都可以用于创建bean。它们的主要区别在于它们的作用范围和创建方式。 Component注解是一种通用的注解,可以用于标注任何类。被标注的类将被Spring容器自动扫描并创建为一个bean。这个bea…...
不写注释就是垃圾
最近Linux6.2出来了增加了很多新的东西,有看点的是,Linux确实要可以在Apple M1上面运行了,这应该是一个很大的新闻,如果有这么稳定的硬件支持,那对于Linux来说相当于又打下了一大片的江山。其中关于Linux6.2的特性罗列…...
深信服一面
1.C变量存储在哪里,生命周期是怎样的 2.静态成员变量和成员函数的特性,在哪里用过吗 3.new和delete是什么,和malloc和free对比有啥优势 4.new能不能重载,重载new有什么用 5.多态是怎么实现的,有什么优势和目的 6.…...
【C语言】深度理解指针(中)
前言✈上回说到,我们学习了一些与指针相关的数据类型,如指针数组,数组指针,函数指针等等,我们还学习了转移表的基本概念,学会了如何利用转移表来实现一个简易计算器。详情请点击传送门:【C语言】…...
步进电机运动八大算法
引导一种模块化(Module)设计思想,将传统步进电机的控制器(controller)、驱动器(Driver)、运动算法(Arithmetic)三合一。 对比国内外步进电机驱动原理和已有工作,结合各种硬件特性,改进或实现了可实际移植并用于步进电机控制八大算法。本产品…...
如果你持续大量的教坏ChatGPT,它确实会变坏
你输出的很多数据是经过人工标注吗,以确保可以正常对外展示出来,而不是有性别歧视、种族歧视或者其它意识形态为多数人所不认同的内容产生? 作为AI语言模型,我并不直接处理或输出任何数据,我的任务是通过对输入的自然语…...
opencv学习(二)图像阈值和平滑处理
图像阈值ret, dst cv2.threshold(src, thresh, maxval, type)src: 输入图,只能输入单通道图像,通常来说为灰度图dst: 输出图thresh: 阈值maxval: 当像素值超过了阈值(或者小于阈值,…...
【含源码】用python做游戏有多简单好玩
有很多同学问我还有其他什么小游戏吗,游戏是怎么做的,难不难。我就用两篇文章来介绍一下,如何使用Python做游戏。 兔子与灌 俄罗斯方块 休闲五子棋 走迷宫 推箱子 消消乐 超多小游戏玩转不停↓ 更多小游戏可以评论区讨论哦,喜欢…...
C++常用函数
std::sort std::sort 函数用于对数组或容器进行排序,可以按照默认的升序排序或指定比较函数进行排序。 语法如下: template <class RandomAccessIterator> void sort(RandomAccessIterator first, RandomAccessIterator last);template <clas…...
Android Framework基础到深入篇
Android Framework基础到深入篇 KernelSU Android上基于内核的Root方案 Android系统源码下载/编译篇...
【Go进阶训练营】聊一下go的gc原理
背景 正好周末时间,就打算梳理以下自己对go gc的理解。跳出语言层面来说,gc分为两种,一种是手动创建,手动销毁。另一种就是由自动分配自动销毁,前者就是c,c的代表,后者就是java,go。 而整个流程…...
英飞凌Tricore原理及应用介绍05_中断处理之中断路由(IR)模块详解
目录 1.概述1.1相关缩写2 TC3xx中IR特性介绍3.SRN(中断服务请求优先级)3.1 寄存器中的各Bit位讲解3.2 如何改变SRN配置4. 实际应用介绍4.1 如何利用SRC寄存器检查OS中断配置是否正确?1.概述 在Tricore架构中允许有多个中断源包括片上外设及外部中断世间产生的中断请求,以打…...
微搭问答002-移动端上传的文件如何在PC端下载
遇到一个问题,就是上传的图片,在手机上可以下载了,但在电脑上怎么下载到电脑 里,包括上传的文件 点击查看页面就可以吧,在企业工作台里 我做了查看页面,小程序可以,但H5和电脑页面不行 你创建一…...
初识JVM
目录 引言 JVM是什么? JVM和java有什么联系? JDK、JRE、JVM有什么区别 为什么学习JVM? JVM——从内存管理开始 运行时数据区域 分区讲解 堆 方法区 程序计数器 本地技术栈 虚拟机栈 对象的创建 指针碰撞: 空闲列表…...
实践分享:Vue 项目如何迁移小程序
最近我们小组刚经历了将成熟的 HTML5 项目转换成小程序,并在app中运行的操作!记录下来分享给各位。 项目:将已有的 Vue 项目转为小程序, 在集成了FinClip SDK 的 App 中运行。 技术:uni-app、FinClip 两个注意事项&…...
JavaScript学习笔记(6.0)
JavaScript类 使用关键字class创建类。 始终添加constructor()方法 class ClassName{constructor(){...} } calss Car{constructor(name,year){this.namename;this.yearyear; } } 创建了一个名为Car的类,并且拥有两个初始属性name和year。 JavaScript类不是对…...
某小公司面试记录
记录一次面试过程,还有一些笔试题,挺简单的,排序,去重,this指向,深浅拷贝,微任务的执行顺序,变量提升等。 ES6数组新增的方法 Array.from: 将两类对象转为真正的数组&am…...
SPI读写SD卡速度有多快?
SD卡是一个嵌入式中非常常用的外设,可以用于存储一些大容量的数据。但用单片机读写SD卡速度一般都有限(对于高速SD卡,主要是受限于单片机本身的接口速度),在高速、实时数据存储时可能会有影响。但具体速度可以达到多少…...
MySQL:索引与事物
目录 简单了解索引的底层数据结构 索引的概念: 索引存在的意义: 索引的使用: 索引实现的数据结构 B树 B 树 B 树的特点 B 树的优势 事物 事物的概念 事物的使用 事物的四大特性 并发可能引起的问题 脏读问题 不可重复读 幻读…...
mybatis实战
目录配置自动下划线驼峰MyBatis解析的SQL和实际传参不符的问题传参是整型,结果是false日期比较入参是字符串入参是Date父子递归查询上下级查询方法一方法二传参数组inmapper中接口注解映射配置 自动下划线驼峰 使用mybatis的自动下划线驼峰转换 mybatis有一个选项…...
【UEFI实战】BIOS与IPMI
KCS KCS全称是Keyboard Controller Style,关于这个名称不用过多的追究,只需要知道它是系统(BIOS和OS)和BMC通信的一种基本方式即可。本文将介绍BIOS下的KCS接口,包括接口使用方式和数据。内容参考自《ipmi-second-gen…...
90%的人都不算会网络安全,这才是真正的白帽子技术【红队】
我敢说,现在网上90%的文章都没有把网络安全该学的东西讲清楚。 为什么?因为全网更多的都是在讲如何去渗透和公鸡,却没有把网安最注重的防御讲明白。 老话说得好:“攻击,是为了更好的防御。”如果连初衷都忘了&#x…...
wordpress解释/企业网站的网络营销功能
以华为mate30为例,版本系统为EMUI10,其华为系统恢复获取安装包信息失败的原因如下:1、此情况可能是下载的软件安装包不完整,建议您在网络稳定的情况下,重新下载安装。2、查看手机内存是否充足。3、检查其他软件是否可以…...
海外公司注册在哪里比较好/我是seo关键词
print([x*11 for x in range(10)]) 转载于:https://www.cnblogs.com/sea-stream/p/11192554.html...
b2c网站怎么做/宁波seo关键词培训
展开全部 顾名思义,缩进就是向里面收缩的意思,比如汉语书写习e68a8462616964757a686964616f31333363373039惯文章每段前面都要空两个字,这就叫首行缩进。段落缩进自然就是指整个段向内收缩了。 那么python语法缩进是什么意思呢? 学…...
网站平台建设所需开发工具/汕头网站推广
HBase的分页实现相对复杂一些。核心思想是结合分页过滤器PageFilter(pageSize)和查询设置开始行scan.setStartRow(lastRow),lastRow为上一次查询rowkey,需要注意的是该rowkey是一个数组,对应多字段的存储位置;不同用户登录会产生不同lastRow&…...
网站域名如何起/个人网页怎么做
vim /opt/reboot.txt输入以下内容:0 1 * * * /var/www/bin/apachectl restart0 12 * * * /var/www/bin/apachectl restart0 18 * * * /var/www/bin/apachectl restart把reboot.txt加入到cron服务中crontab /opt/reboot.txt列出现有的时程表,检查一下有没…...
网站建设与运营毕业论文/编程培训机构加盟哪家好
刚开始学scrapy爬虫框架, 一个bug把我心态搞炸了. 找了半天硬是找不出来. 然后重新创了一个项目, 把原代码copy 过来 又可以正常跑了. 懵逼!!! 我也没做什么呀! 对比发现就是多了几行注释. 最后发现 就是注释惹的祸..... 我在 scrapy.cfg 中 写了一行中文注释. 最后删了就好了.…...