微软开源时空预测Fost的使用和解读

2024-03-09 18:20

本文主要是介绍微软开源时空预测Fost的使用和解读,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、引言

时空预测是指对未知系统状态在时间和空间上的预测,它是地球系统科学、交通运输、智慧城市等领域的重要技术和工具。时空预测的目的是利用历史数据和当前信息,通过建立时空依赖关系,来推断未来的变化趋势和可能的情景。时空预测的应用价值非常巨大,它可以帮助人们提前了解和应对各种自然灾害、社会危机、经济波动等问题,从而提高决策效率和社会福祉。

时空预测面临着许多挑战和问题,主要包括以下几个方面:
一是数据的高度非线性和复杂性。时空数据往往具有多尺度、多源、多变量、多模态等特点,同时受到多种因素的影响,如气候变化、人口迁移、政策干预等,导致数据的分布和结构难以捕捉和建模。

二是预测任务的多样性和难度。时空预测的任务可以涉及不同的时间跨度(如短期、中期、长期)、空间范围(如局部、区域、全局)、预测目标(如单点、多点、区域、全域)、预测形式(如确定性、概率性、演绎性、结论性)等,不同的任务对预测方法的要求和评估标准也不同。

三是时空依赖关系的复杂性和动态性。时空数据之间存在着复杂的依赖关系,如时间上的自相关、空间上的异质性、时空上的交互作用等,这些依赖关系不仅需要考虑数据的拓扑结构,还需要考虑数据的语义含义和物理机制。此外,时空依赖关系也可能随着时间和空间的变化而变化,如季节性、周期性、突发性等,这给预测方法的稳定性和鲁棒性带来了挑。

三是预测结果的不确定性和可解释性。由于数据的噪声、缺失、异常等问题,以及模型的偏差、方差、过拟合等问题,时空预测结果往往具有不确定性,即预测结果可能与真实值存在一定的偏差或误差。

我将介绍一种基于微软fost的时空预测工具,它是一个通用的时空预测开源工具,可以帮助用户在各种业务场景中进行高效的预测。

二、简单工具使用

(一)安装

Win下深度学习环境的安装可以参考安装教程,fost的安装可以参照的安装教程。

Tips 1

torch-geometric与pytorch强依赖的,所以建议本机的cuda版本、pytorch、torch-geometric一直,也就是若你本机的安装的是12.1版本的cuda,你安装pytorch时候,也要选择选择cuda12.1,在torch-geometric也要选择cuda12.1。

Tips 2

Fost不支持cpu版本的pytorch,后期若我们需打包fost项目分享出去,可以用pyinstaller打包项目为纯cpu运行的版本,不过要修改配置文件、项目几个文件的代码

Tips 3

pip install openpyxl
安装python excel依赖,方便将结果保存为表格

(二)使用

fost的使用非常简单,只需要2个步骤:

1.准备数据

用户需要将自己的数据整理成fost所需的格式,包括训练数据文件(train.csv)和图结构文件(graph.csv),具体的数据格式可以参考数据格式一节,因为大局域网的原因,下不了官方的数据,在这里
链接:https://pan.baidu.com/s/1RdEceV9tdV2gTcesxb54WA?pwd=7d5e
提取码:7d5e。
可以看到,在官方的案例里面,有效的格式可能如下所示:
在这里插入图片描述

Node:当前数据的节点名称
日期:当前数据的日期或时间戳
TARGET:预测目标

2.运行命令

我们参考官方的“Predict States Energy Data”案例给出一个教程,并给出注释。

#导入fostool.pipeline模块
from fostool.pipeline import Pipeline
#导入数据
train_path = r'FOST_example_data\Energy\train.csv'
graph_path = r'FOST_example_data\Energy\graph.csv'
#预测的步长
lookahead = 5
#Pipeline的建立,可以看做模型建立
fost = Pipeline(lookahead=lookahead, train_path=train_path, graph_path=graph_path)
#训练
fost.fit()
#预测
result = fost.predict()
模型保存
#fost.save_pipeline()
#保存预测结果
result.to_excel("result.xlsx")

到这里,我们就完成了第一个基于图神经网络的时空预测。
若仅仅是简单使用,到这里就可以了,下面是项目的优化使用。

三、项目的一些解读

(一)配置文件解读

配置参数文件是fostool\config文件下的default.yaml,若想根据自己的数据和任务来配置fost的参数,需要在
fost = Pipeline(lookahead=lookahead, train_path=train_path, graph_path=graph_path config_path= r'FOST_example_data\Energy\ default.yaml')
传入config的参数,在这里给出config的解读

# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.base:# 模型保存路径dump_path: 'runs'# 损失函数loss_func: 'mse'
data_handler:#细看Tips 4lookback: 'auto'
trainer:# 最大的训练次数,因为fost项目设置运用了早停策略,所以不一定运行完一次max_epochsmax_epochs: 100# coda or cpu,实际项目上面默认配置下,占1.7显存device: 'cuda'
model:# KRNN模型KRNNModel:cnn_dim: 64cnn_kernel_size: 3rnn_dim: 64rnn_dups: 3# 刚看到这个项目的时候,以为只纯GNN模型,但是看到这里才发现并不是,SandwichModel是cnn、rnn、gcn三明治混合的模型SandwichModel:cnn_dim: 64cnn_kernel_size: 3rnn_dim: 64rnn_dups: 3gcn_dim: 64gcn_type: 'gat'gcn_aggr: 'max'gcn_norm: 'none'# MLP 前馈神经网络MLP_Res:hid_dim: 64nb_layer: 4
fusion:# fost支持trunacted、average两种模型融合策略method: 'trunacted'

(二)预测结果解读

现在从官方的“Predict States Energy Data”案例,开始解读

1. model KRNNModel_3164_7是什么意思

在这里插入图片描述
我们来看fostool\model文件下的__init__.py
在这里插入图片描述

可以看到,这里给出的模型名字并不是实际的名字,是对模型名字哈希后的,其中model KRNNModel_3164_7中的7,就是我们设置的lookback_list参数带来的,这就带来第一个问题,在配置文件里面,也有个lookback参数,这两有什么区别,看Tips 4。

Tips 4

我们来看fostool文件下的pipeline.py函数
在这里插入图片描述

当模型的预测步长小于7的时候,lookback_list为[7, 14, 24]。实际上,配置文件中lookback是不齐作用的,想修改lookback_list参数,我们需要在Pipeline(lookahead=lookahead, train_path=train_path, graph_path=graph_path, lookback_list=[10, 20, 30])进行导入,不知道是否为微软写下的bug。

2.我们是用哪个模型得出的预测结果

我们来看fostool\ task文件下的fusion.py函数
在这里插入图片描述

Fost支持的模型融合为averagetrunacted两种模型融合策略,其中average将所有模型的结果进行取均值后给出,trunacted比较复杂,不是简单的取最好的模型输出,而是取出那些误差<最小误差的模型+误差的标准差模型,然后将所有模型的结果进行取均值后给出。

3.fost对训练数据的数量要求是多少

我们来看fostool文件下的pipeline.py函数,可以看到模型最低要求的训练数据量为100,若想修改,直接改就行。
在这里插入图片描述

这篇关于微软开源时空预测Fost的使用和解读的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/791557

相关文章

SpringBoot中使用Flux实现流式返回的方法小结

《SpringBoot中使用Flux实现流式返回的方法小结》文章介绍流式返回(StreamingResponse)在SpringBoot中通过Flux实现,优势包括提升用户体验、降低内存消耗、支持长连... 目录背景流式返回的核心概念与优势1. 提升用户体验2. 降低内存消耗3. 支持长连接与实时通信在Sp

python使用库爬取m3u8文件的示例

《python使用库爬取m3u8文件的示例》本文主要介绍了python使用库爬取m3u8文件的示例,可以使用requests、m3u8、ffmpeg等库,实现获取、解析、下载视频片段并合并等步骤,具有... 目录一、准备工作二、获取m3u8文件内容三、解析m3u8文件四、下载视频片段五、合并视频片段六、错误

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

Windows下C++使用SQLitede的操作过程

《Windows下C++使用SQLitede的操作过程》本文介绍了Windows下C++使用SQLite的安装配置、CppSQLite库封装优势、核心功能(如数据库连接、事务管理)、跨平台支持及性能优... 目录Windows下C++使用SQLite1、安装2、代码示例CppSQLite:C++轻松操作SQ

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.