时间系列预测总结

转载自:https://mp.weixin.qq.com/s/B1eh4IcHTnEdv2y0l4MCog

拥有一种可靠的方法来预测和预测未来事件一直是人类的愿望。在数字时代,我们拥有丰富的信息,尤其是时间序列数据。
在这里插入图片描述
时间序列是指基于时间刻度维度(天、月、年等)采样和组织的任何数据。预测它将提供有价值的见解,帮助我们做出明智的决策并制定业务战略。时序数据示例包括:

金融市场:股票价格、汇率和交易量。

气候和天气:温度、降雨量和风速。

销售和需求预测:一段时间内的产品销售数据。

网站流量和用户行为:页面浏览量、点击率和转化率。

能源消耗:用电量和能源需求。

传感器数据:来自制造业、医疗保健和运输业传感器的测量值。

社交媒体活动:点赞、评论、分享和关注者数量。

这些示例展示了时间序列数据在业务数据分析的战略领域(如金融、天气、销售、在线分析、能源管理、传感器监控和社交媒体分析)中的多样性。掌握这些领域中每个领域的时间序列机器学习 (ML) 可以在事件预测和有效管理影响趋势、模式和其他波动的因素方面产生显着的好处。
在这里插入图片描述

在本文中,我们将踏上使用机器学习技术掌握时间序列分析和预测的旅程。

时序数据中的自动分析和预测:特点和挑战

随着机器学习预测的出现,我们现在拥有强大的工具来分析和发现时间序列数据中的模式。这使我们能够做出准确的预测和预测。让我们了解一下时间序列数据的组成:
在这里插入图片描述

趋势。在时间序列数据理论中,趋势是指值随时间变化的行为。它可以是正的(表示上升趋势)或负的(表示下降趋势)。

季节性。季节性是时间序列数据的一个特征,它以固定的时间间隔显示重复出现的模式。这些模式以恒定的频率重复。

残差。从数据中提取趋势和季节性分量后,剩余部分称为剩余部分或残差。这表示数据中不符合趋势或季节性模式的部分。对这个余数的分析有助于检测时间序列中的异常或意外波动。

周期。当时间序列显示没有固定周期或季节性的重复模式或波动时,它被称为周期性行为。与季节性不同,这些周期不遵循特定且可预测的频率。它们可能是由于外部因素或潜在模式而发生的,而这些因素或潜在模式不容易被趋势或季节性成分捕捉到。

平稳性。当时间序列的统计属性随时间变化保持不变时,它被认为是静止的。这意味着数据的均值、标准差和协方差不会随时间而变化。稳态时间序列更容易分析和建模,因为它们的行为保持一致。

与静态数据分析相比,时间序列数据分析遵循不同的框架。如上一节所述,对时间序列数据的分析首先要解决一些基本问题,例如:

数据是否呈现趋势?

数据中是否存在可识别的模式或季节性?

数据的特征是静止的还是非静止的?

时间序列分析中的关键问题包括识别趋势、模式/季节性和确定平稳性。在静态数据分析中,描述性分析、预测性分析和规范性分析等过程很常见。这些过程适用于时间序列和静态机器学习应用程序。但是,某些指标(例如相关性)在描述性、预测性和规范性框架中的使用方式不同。顺便说一句,这两种类型的数据都可以在自动化ML的帮助下进行处理。

时间序列数据的结构是独一无二的,对分析和预测提出了特定的挑战:

与静态数据不同,时间序列数据本质上是动态的,并且具有基于时间维度的固有顺序。

时间方面增加了复杂性,因为序列中的值取决于过去的观测值,并表现出趋势、季节性和不规则性。

在时间序列数据的上下文中,缺失值表现为时间序列中的间隙。这些差距表示数据观测缺失或不完整的时期。

如图所示,数据中可能存在明显的差距,这些差距无法通过通常用于静态数据的标准插补策略进行逻辑填充。这些差距在数据集中以明显的空白形式存在,对处理缺失值的传统方法提出了挑战。

为了有效地分析时间序列数据,了解其组成部分(如趋势和季节性)至关重要。此外,时间序列数据可能会表现出不规则的波动和噪声,需要在分析过程中加以考虑。

时间序列算法:优点和缺点

机器学习时间序列算法提供了强大的工具来释放时间序列数据的潜力。这些机制使时间序列分析和预测成为可能,每种机制都有其优点和局限性。了解这些有助于为手头的任务选择正确的算法。让我们探讨一些流行的算法及其优缺点:

ARIMA(自回归综合移动平均线)

ARIMA是一种功能强大的算法,广泛用于时间序列分析。它结合了三个主要组件:

自回归 (AR)

移动平均线 (MA)

时间序列差异。

自回归捕获观测值与一定数量的滞后观测值之间的线性关系。移动平均分量考虑过去预测误差的加权平均值。差分量通过取连续观测值之间的差值来帮助将非平稳数据转换为平稳数据。通过组合这些组件,ARIMA 可以有效地捕获时间序列数据中的趋势、季节性和噪声。

在这里插入图片描述
让我们考虑一个银行和金融数据预测的例子。要使用 ARIMA 模型预测公司的股价,首先要获取过去十年的公开股价数据。获得此数据后,可以继续训练 ARIMA 模型。为了确定 ARIMA 模型的适当参数,您需要分析数据中的趋势。这涉及选择使数据平稳所需的时间序列差分 (d) 的顺序。通过检查自相关和偏自相关,您可以确定模型的回归顺序 (p) 和移动平均线顺序 (q)。

要选择最拟合的模型,您可以使用各种性能指标,例如 Akaike 信息准则 (AIC)、贝叶斯信息准则 (BIC)、最大似然率和标准误差。这些指标有助于评估模型的拟合优度,并确保它捕获股票价格数据中的重要特征和模式。通过系统地分析数据并选择最佳参数,ARIMA模型可以提供有关公司股价的宝贵见解和预测。这种方法允许您利用历史趋势和模式在金融领域做出明智的决策和预测。

结论:ARIMA具有简单性和可解释性,适用于短期预测,适用于稳态数据。但是,它可能会遇到复杂的模式和长期依赖关系。

LSTM(长短期记忆)

LSTM 是一种递归神经网络 (RNN),擅长对序列和时间依赖性进行建模。与传统的前馈神经网络不同,LSTM网络具有独特的记忆单元结构,使它们能够在更长的时间段内保留和利用信息。这使得 LSTM 在捕获时间序列数据中的长期依赖关系方面特别有效。LSTM 模型可以学习数据中的复杂模式和关系,使其适用于以下领域的深度学习时间序列:

语音识别

自然语言处理

股市预测。

该网络能够选择性地忘记或记住信息,使其能够处理非平稳时间序列数据并捕获不同时间尺度的时间依赖关系。
在这里插入图片描述
结论:LSTM 在处理非线性模式和长期依赖关系时大放异彩。它从历史数据中学习的能力使其成为一个强大的选择。然而,它需要更多的计算资源和更大的数据集进行训练。

Prophet

Prophet 由 Facebook 开发,是一款专为时间序列预测而设计的强大算法。它利用加法模型来捕获非线性趋势、年度、每周和每日季节性以及假日效应。当应用于具有突出季节性模式和大量历史记录的时间序列数据时,它的表现非常出色。Prophet铂慧的显著优势之一是能够处理缺失数据并适应趋势的变化,同时在处理异常值方面也表现出鲁棒性。

事实证明,Prophet对于具有以下特征的数据集特别有价值:

涵盖跨越数月或数年的重大时间跨度,以每小时、每天或每周的频率捕获细粒度和详细的历史观测结果。

显示同时发生的多个突出的季节性模式。

纳入事先已知的重大不规则事件。

包含缺失的数据点或值得注意的异常值。

展示接近饱和点的非线性增长趋势。

增长函数用作捕获数据潜在趋势的模型。这个概念与那些具有基本数学知识的人通常知道的熟悉的线性和逻辑函数相一致。然而,Facebook Prophet引入了一个新概念,它允许增长趋势灵活地适应数据中的特定点,称为“变化点”。变化点表示数据中发生明显方向偏移的时刻。

这些点标志着增长模式发生变化的转变,使Prophet铂慧能够有效地捕捉和适应趋势随时间的变化。Prophet作为加法回归模型运行,包含分段线性或逻辑增长曲线趋势。它包含使用傅里叶级数建模的年度季节性分量和使用虚拟变量建模的每周季节性分量。通过利用这些功能,Prophet铂慧可以有效地捕捉上述数据集特征中固有的复杂性。

结论:Prophet专注于业务预测,能够有效地处理季节性和假日效应。但是,它可能无法捕获复杂的交互,并且可能需要仔细的特征工程。

时间序列预测的实用技巧

要利用时间序列机器学习的强大功能进行预测,有以下实用技巧:

  • 预处理数据
    清理数据、处理缺失值并解决异常值。如果需要,应用归一化或差分等技术来实现平稳性。

  • 时间序列特征工程
    提取有意义的特征,以捕获数据中的基础模式。考虑滞后变量、滚动统计量或傅里叶变换来捕捉季节性。

  • 选择合适的模型
    深入了解各种算法的功能和约束,并仔细选择最适合您独特时间序列的算法。在可解释性和复杂性之间取得平衡,以找到最佳解决方案。

  • 将训练和测试分开
    将数据划分为不同的训练集和测试集,确保测试集代表看不见的未来数据。通过评估模型在测试集上的预测来评估模型的性能。

  • 微调超参数
    通过网格搜索或贝叶斯优化等技术优化所选算法的超参数。此迭代过程通过查找最佳设置组合来帮助优化模型的性能。

  • 集成学习
    通过结合多个模型的预测来提高准确性并减少偏差。Ensembling 利用各个模型的优势来创建更强大、更可靠的预测解决方案。

时间序列预测的应用

  • 能耗预测
    时间序列深度学习模型可以预测能源消耗模式,使能源供应商能够根据预期天气、季节、人口变化等众多因素优化其供需管理、降低成本并提高可持续性。

  • 股票市场预测
    交易者和投资者可以利用深度学习时间序列算法的强大功能来分析复杂的股票市场数据,准确预测趋势,发现盈利交易的潜在机会,并有效管理风险。通过利用循环神经网络和长短期记忆模型等先进技术,这些算法可以捕获市场中复杂的模式和依赖关系,为做出明智的投资决策提供有价值的见解。

  • 零售业需求预测
    机器学习技术可用于分析历史销售数据并预测零售行业对各种产品的未来需求。这有助于零售商优化库存管理,确保产品可用性,并最大限度地减少积压或缺货,从而提高客户满意度和盈利能力。

不同场景中,数据建模基本上大同小异,如下简单示例使用LSTM进行预测时间序列:


import numpy as np  
from keras.models import Sequential  
from keras.layers import LSTM, Dense  
from sklearn.model_selection import train_test_split  
from sklearn.preprocessing import MinMaxScaler  
  
# 假设你有一个名为 timeseries_data 的一维numpy数组,代表你的时间序列数据  
# timeseries_data = np.array(...)  
  
# 预处理数据:标准化,并创建监督学习问题所需的输入和输出  
scaler = MinMaxScaler(feature_range=(0, 1))  
scaled_data = scaler.fit_transform(timeseries_data.reshape(-1, 1))  
  
# 创建一个监督学习问题,即使用过去的数据点来预测下一个数据点  
def create_dataset(dataset, look_back=1):  
    X, Y = [], []  
    for i in range(len(dataset)-look_back-1):  
        a = dataset[i:(i+look_back), 0]  
        X.append(a)  
        Y.append(dataset[i + look_back, 0])  
    return np.array(X), np.array(Y)  
  
look_back = 3  # 假设我们使用过去3个时间点来预测下一个点  
X, y = create_dataset(scaled_data, look_back)  
  
# 将数据划分为训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)  
  
# 重塑输入数据,以适应LSTM的输入要求:[samples, time steps, features]  
X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1))  
X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1], 1))  
  
# 构建LSTM模型  
model = Sequential()  
model.add(LSTM(4, input_shape=(look_back, 1)))  
model.add(Dense(1))  
model.compile(loss='mean_squared_error', optimizer='adam')  
  
# 训练模型  
model.fit(X_train, y_train, epochs=100, batch_size=1, verbose=2)  
  
# 预测  
train_predict = model.predict(X_train)  
test_predict = model.predict(X_test)  
  
# 反标准化预测结果  
train_predict = scaler.inverse_transform(train_predict)  
y_train = scaler.inverse_transform([y_train])  
test_predict = scaler.inverse_transform(test_predict)  
y_test = scaler.inverse_transform([y_test])  
  
# 评估模型  
train_score = np.sqrt(np.mean(((train_predict - y_train) ** 2))  
print('Train Score: %.2f RMSE' % (train_score))  
test_score = np.sqrt(np.mean(((test_predict - y_test) ** 2))  
print('Test Score: %.2f RMSE' % (test_score))

结论

机器学习解锁了时间序列数据中隐藏的宝石。了解独特的挑战并选择合适的算法可以实现准确的预测。通过仔细的数据预处理、特征工程、模型选择和性能评估,我们利用机器学习的力量来战胜时间序列问题。

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

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

相关文章

Mybatis plus 使用通用枚举

说明&#xff1a;mybatis plus 使用枚举可实现数据库存入时指定值保存&#xff0c; 读取时指定值展示&#xff08;返给前端&#xff09; 可通过继承IEnum<T>、 EnumValue实现 1、引包 <dependency><groupId>mysql</groupId><artifactId>mysql-…

java基础语法(16)| 集合

前言 Hello,大家好!很开心与你们在这里相遇,我是一个喜欢文字、喜欢有趣的灵魂、喜欢探索一切有趣事物的女孩,想与你们共同学习、探索关于IT的相关知识,希望我们可以一路陪伴~ 1. 集合概述 什么是集合 集合:集合是java中提供的一种容器,可以用来存储多个数据,并且可以存…

每天五分钟深度学习PyTorch:面对Tensorflow,为何我选择PyTorch

这篇专栏文章不是为了挑起tenserflow和pytorch中哪个更好&#xff0c;众所周知tensorflow诞生以来&#xff0c;已经成为最流行的深度学习框架&#xff0c;可以说github中大多数的深度学习代码实现是以tensorflow实现的&#xff0c;也就是说资源众多&#xff0c;社区强大&#x…

自动化测试十大必备(背)面试题!【含答案精讲】

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

OJ 最大奖励 C Python【贪心算法】【动态规划】

又接触到贪心算法啦&#xff0c;这道题有两种算法思路&#xff0c;我用两个语言来写了一下&#xff0c;这也涉及到了一些动态规划的思路 一.从最后一个时间枚举&#xff0c;找到在这个时间内可以完成的最大分值的题 注意点&#xff1a; 1.数组下标从1开始记录表示第几个时间…

渲染农场实时画面怎么设置?云渲染农场实时预览效果查看

许多用户在使用渲染农场服务时&#xff0c;常常难以找到查看实时渲染画面的功能。由于渲染是一个时间消耗较大的任务&#xff0c;如果最终结果与预期不符&#xff0c;可能会对整个工作流程产生负面影响。因此&#xff0c;渲染平台若能提供实时预览渲染进度和效果的功能&#xf…

冯喜运:4.10晚间黄金原油走势分析

黄金消息技术面分析&#xff1a;美国CPI年率创半年新高&#xff0c;美国3月未季调CPI年率录得3.5%&#xff0c;高于预期的3.4%水平&#xff0c;为2023年9月以来最高水平。美国CPI高于预期&#xff0c;现货黄金短线下挫16美元。日线当前的指标macd依旧属于金叉放量运行&#xff…

Spring与SpringBoot的区别

Spring是一个开源的Java应用程序框架&#xff0c;旨在简化企业级Java应用程序的开发。它提供了一个轻量级的容器&#xff0c;用于管理应用程序中的各个组件&#xff08;如依赖注入、AOP等&#xff09;&#xff0c;并提供了丰富的功能和模块&#xff0c;用于处理数据库访问、事务…

提醒|2024年CSC国家公派访问学者项目开始网申(附常见申报问题解答)

留学基金委&#xff08;CSC&#xff09;2024年国家公派高级研究学者、访问学者项目网上申报时间为4月10日—4月30日。为此&#xff0c;知识人网小编提醒申请者及时申报。本文我们将常见申报问题汇总解答&#xff0c;以帮助申请者顺利完成CSC申报工作&#xff0c;并预祝红榜题名…

python pygame事件与事件处理

本期是接上期python pygame库的略学内容最后一个步骤&#xff0c;游戏与玩家交互的内容。 一、什么是事件 游戏需要与玩家交互&#xff0c;因此它必须能够接收玩家的操作&#xff0c;并根据玩家的不同操作做出有针对性的响应。程序开发中将玩家会对游戏进行的操作称为事件&…

rk3588开发板上安装ssh服务

目的&#xff1a;实现远程访问和控制&#xff0c;其他主机远程控制rk3588 方法及操作步骤&#xff1a; 1&#xff09;安装&#xff1a;sudo apt install openssh-server 2&#xff09; 查看运行状态 sudo systemctl status ssh 其它主机远程连接该开发板的ip和端口22即可

MVP模式

1、创建数据库表单对应的实体类。 package com.mvp.model; //Model(模型)&#xff0c;数据库表单对应的实体类。 public class Word {private int id;private String engName;private String chiVal;private String lastUsedTime;private int usedTimes;private String create…

【华为笔试题汇总】2024-04-10-华为春招笔试题-三语言题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是KK爱Coding &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为近期的春秋招笔试题汇总&#xff5e; &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f…

uniapp 轮播列表一排展示3个,左右滑动,滑动到中间放大

一、效果展示 二、代码实现 1.html代码&#xff1a; <!-- 轮播 --><view class"heade"><swiper class"swiper" display-multiple-items3 circulartrue previous-margin1rpx next-margin1rpxcurrent0 change"swiperChange">&l…

第 6 章 Gazebo仿真环境搭建(自学二刷笔记)

6.6.4 Gazebo仿真环境搭建 到目前为止&#xff0c;我们已经可以将机器人模型显示在 Gazebo 之中了&#xff0c;但是当前默认情况下&#xff0c;在 Gazebo 中机器人模型是在 empty world 中&#xff0c;并没有类似于房间、家具、道路、树木... 之类的仿真物&#xff0c;如何在 …

SQL注入sqli_labs靶场第三题

?id1and 11 and 11和?id1and 11 and 11进行测试如果11页面显示正常和原页面一样&#xff0c;并且12页面报错或者页面部分数据显示不正常&#xff0c;那么可以确定此处为字符型注入。 根据报错信息判断为单引号带括号注入 联合查询&#xff1a; 猜解列名 ?id1) order by 3-…

微服务项目sc2024第一个子项目

1. 第一个子项目 2.pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apa…

【测试开发学习历程】python迭代、可迭代对象、迭代器、生成器

1 迭代Iteration 迭代Iteration&#xff1a;所谓迭代就是重复运行一段代码语句块的能力&#xff0c;就好比在一个容器中进行一层一层遍历数据&#xff0c;在应用过程中for循环最为突出。迭代就是从某个容器对象中逐个地读取元素&#xff0c;直到容器中没有元素为止。迭代迭代&…

linux服务使用./xxx.sh执行脚本命令

设置脚本文件为全权限 chmod 777 xxx.sh直接使用./xxxx.sh即可

用dbms_shared_pool.purge清除执行计划

1.Oracle 11g如何清除share pool中某条SQL的执行计划 以前在Oracle 10g数据库上,如果遇到绑定窥探导致执行计划慢的情况,想要清除某条SQL的执行计划,让它硬解析,找了很久都没有找到直接操作share pool的方法&#xff08;总不能alter system flush shared_pool&#xff09;,只能…