【机器学习 | 数据挖掘】时间序列算法
时间序列是按时间顺序排列的、随时间变化且相互关联的数据序列。分析时间序列的方法构成数据分析的一个重要领域,即时间序列分析。以下是对时间序列算法的详细介绍:
一、时间序列的分类
时间序列根据所研究的依据不同,可有不同的分类:
- 按研究对象数量分:有一元时间序列和多元时间序列。
- 按时间连续性分:可分为离散时间序列和连续时间序列两种。
- 按统计特性分:有平稳时间序列和非平稳时间序列。其中,严格的平稳时间序列是指其概率分布与时间t无关的时间序列;而宽平稳时间序列(也叫广义平稳时间序列)是指序列的一、二阶矩存在,而且对任意时刻t满足均值为常数、协方差为时间间隔τ的函数的序列。通常所研究的时间序列主要是宽平稳时间序列。
- 按分布规律分:有高斯型时间序列和非高斯型时间序列。
二、时间序列的变化形式
一个时间序列往往是以下几类变化形式的叠加或耦合:
- 长期趋势变动:指时间序列朝着一定的方向持续上升或下降,或停留在某一水平上的倾向,它反映了客观事物的主要变化趋势。
- 季节变动。
- 循环变动:通常是指周期为一年以上,由非季节因素引起的涨落起伏波形相似的波动。
- 不规则变动:通常分为突然变动和随机变动。
三、常见的时间序列算法
-
移动平均法
- 定义:移动平均法是根据时间序列资料逐渐推移,依次计算包含一定项数的时序平均数,以反映长期趋势的方法。
- 适用场景:当时间序列的数值由于受周期变动和不规则变动的影响,起伏较大,不易显示出发展趋势时,可用移动平均法消除这些因素的影响,分析、预测序列的长期趋势。
- 分类:包括简单移动平均法、加权移动平均法、趋势移动平均法等。
- 简单移动平均法:在求平均时,每期数据的作用是等同的。但这种方法只适合做近期预测,且预测目标的发展趋势变化不大的情况。
- 加权移动平均法:考虑到每期数据所包含的信息量不一样,近期数据包含着更多关于未来情况的信心,因此该方法对近期数据给予较大的权重。
- 趋势移动平均法:当时间序列出现直线增加或减少的变动趋势时,用简单移动平均法和加权移动平均法来预测会出现滞后偏差,因此需要进行修正。修正的方法是作二次移动平均,利用移动平均滞后偏差的规律来建立直线趋势的预测模型。
-
ARIMA算法
- 定义:ARIMA(Autoregressive Integrated Moving Average)即差分自回归移动平均模型,是一种常用的时间序列分析算法,它结合了自回归(AR)、差分(I)和移动平均(MA)三种方法,以模拟和预测时间序列数据。
- 操作步骤:
- 检测平稳性:使用差分和自相关函数等方法,检测原始时间序列数据是否具有平稳性。
- 选择差分阶数:根据平稳性检测结果,选择合适的差分阶数,使得差分序列具有平稳性。
- 选择自回归阶数和移动平均阶数:根据差分序列的自相关函数和偏差平方和等指标,选择合适的自回归阶数和移动平均阶数。
- 建立ARIMA模型:根据选定的差分阶数、自回归阶数和移动平均阶数,建立ARIMA模型。
- 估计模型参数:使用最小二乘法等方法,估计ARIMA模型的参数。
- 验证模型:使用残差检验等方法,验证ARIMA模型的合理性。
- 预测:根据估计的ARIMA模型参数,对未来的数据值进行预测。
- 数学模型公式:ARIMA模型的数学模型公式为“φ(B)(1-B)dΔyt=θ(B)εt”,其中φ(B)是自回归项,θ(B)是移动平均项,B是回归项,d是差分阶数,yt是时间序列数据,εt是白噪声。
-
SARIMA算法
- 定义:SARIMA(Seasonal Autoregressive Integrated Moving Average)即季节性差分自回归移动平均模型,是ARIMA的扩展版本,它在ARIMA的基础上,加入了季节性项,以更好地模拟和预测季节性时间序列数据。
- 操作步骤:与ARIMA算法类似,但增加季节差分处理和季节性阶数的选择。
- 数学模型公式:SARIMA模型的数学模型公式为“φ(B)(1-B)dΔΔsyt=θ(B)εt”,其中Δs是季节差分项。
-
指数平滑法
- 定义:指数平滑法是一种简单的时间序列分析算法,它通过对时间序列数据进行指数平滑,以模拟和预测时间序列数据。指数平滑是指将当前数据值与之前数据值进行加权平均,以得到更准确的预测值。
- 操作步骤:
- 选择平滑因子:根据时间序列数据的平稳性和季节性,选择合适的平滑因子。
- 建立模型:根据选定的平滑因子,建立指数平滑模型。
- 估计模型参数:使用指数平滑公式,估计指数平滑模型的参数。
- 验证模型:使用残差检验等方法,验证指数平滑模型的合理性。
- 预测:根据估计的指数平滑模型参数,对未来的数据值进行预测。
- 数学模型公式:指数平滑模型的数学模型公式为“yt=αyt-1+(1-α)εt-1”,其中yt是时间序列数据,α是平滑因子,yt-1是之前数据值,εt-1是残差。
综上所述,时间序列算法在数据挖掘和机器学习领域具有广泛的应用价值。通过选择合适的算法和参数,可以准确地模拟和预测时间序列数据的变化趋势,为决策提供支持。
相关文章:
【机器学习 | 数据挖掘】时间序列算法
时间序列是按时间顺序排列的、随时间变化且相互关联的数据序列。分析时间序列的方法构成数据分析的一个重要领域,即时间序列分析。以下是对时间序列算法的详细介绍: 一、时间序列的分类 时间序列根据所研究的依据不同,可有不同的分类&#…...
uniapp H5 对接 声网,截图
文章目录 安装依赖创建容器容器样式 javascript代码ImageDataToBlob 方法 控制控制台LOG输出 安装依赖 版本"agora-rtc-sdk-ng": "^4.22.0", 创建容器 <template><view class"videoValue " id"videoValue"><u-toast…...

家谱管理系统|Java|SSM|VUE| 前后端分离
【技术栈】 1⃣️:架构: B/S、MVC 2⃣️:系统环境:Windowsh/Mac 3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7 4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库…...

【LeetCode】200、岛屿数量
【LeetCode】200、岛屿数量 文章目录 一、并查集1.1 并查集1.2 多语言解法 二、洪水填充 DFS2.1 洪水填充 DFS 一、并查集 1.1 并查集 // go var sets int var father [90000]intfunc numIslands(grid [][]byte) int {n, m : len(grid), len(grid[0])build(grid, n, m)for i …...

idea报错:There is not enough memory to perform the requested operation.
文章目录 一、问题描述二、先解决三、后原因(了解) 一、问题描述 就是在使用 IDEA 写代码时,IDEA 可能会弹一个窗,大概提示你目前使用的 IDEA 内存不足,其实就是提醒你 JVM 的内存不够了,需要重新分配。弹…...
python ai ReAct 代理(ReAct Agent)
ReAct 代理(ReAct Agent)是一种结合了推理(Reasoning)和行动(Action)的智能代理框架,旨在通过交互式的方式解决复杂任务。ReAct 的核心思想是让代理在完成任务时,能够动态地推理下一…...

HTML入门教程|| HTML 基本标签(2)
HTML 列表 HTML列表 HTML 无序列表 ul 元素表示无序列表。 ul 元素中的项目使用 li 元素表示。 元素没有在HTML5中定义任何属性,并且您使用CSS控制列表的显示。 HTML5中的 type 和 compact 属性已过时。 您可以在以下代码中查看正在使用的 ul 元素。 <!D…...

MySQL root用户密码忘记怎么办(Reset root account password)
在使用MySQL数据库的的过程中,不可避免的会出现忘记密码的现象。普通用户的密码如果忘记,可以用更高权限的用户(例如root)进行重置。但是如果root用户的密码忘记了,由于root用户本身就是最高权限,那这个方法…...
groovy:多线程 简单示例
在Groovy中,多线程编程与Java非常相似,因为Groovy运行在Java虚拟机(JVM)上,并且可以利用Java的所有并发工具。以下是一些在Groovy中实现多线程编程的方法: class MyThread extends Thread {Overridevoid…...

SOME/IP 协议详解——序列化
文章目录 0. 概述1.基本数据序列化2.字符串序列化2.1 字符串通用规则2.2 固定长度字符串规则2.3 动态长度字符串规则 3.结构体序列化4. 带有标识符和可选成员的结构化数据类型5. 数组5.1 固定长度数组5.2 动态长度数组5.3 Enumeration(枚举)5.4 Bitfield…...

三、GIT与Github推送(上传)和克隆(下载)
GIT与Github推送(上传)和克隆(下载) 一、配置好SSH二、在Github创建仓库三、git克隆(下载)文件四、git推送(上传)文件到远程仓库 一、配置好SSH Git与Github上传和下载时需要使用到…...
18.2、网络安全评测技术与攻击
目录 网络安全测评技术与工具网络安全测评质量管理和标准 网络安全测评技术与工具 漏洞扫描技术可以用于测评,测评你安不安全,也可以用来风险评估安不安全,风险大不大 漏洞扫描包含网络安全漏洞扫描、主机安全漏洞扫描,还有数据…...

在 ArcGIS Pro/GeoScene Pro 中设计专题地图的符号系统
原始 按颜色对面进行符号化 打开符号系统 选择主符号系统 选择字段及其计算方式 更改临界值</...

CSS2笔记
一、CSS基础 1.CSS简介 2.CSS的编写位置 2.1 行内样式 2.2 内部样式 2.3 外部样式 3.样式表的优先级 4.CSS语法规范 5.CSS代码风格 二、CSS选择器 1.CSS基本选择器 通配选择器元素选择器类选择器id选择器 1.1 通配选择器 1.2 元素选择器 1.3 类选择器 1.4 ID选择器 1.5 基…...
移动端如何实现上拉加载
一、理解上拉加载的原理 上拉加载是一种在移动端很常见的交互方式,其原理是当用户在页面上向上滑动(即滚动条接近底部)时,触发一个加载更多数据的操作。这通常涉及到对滚动事件的监听以及判断滚动位置是否达到了触发加载的阈值。…...

【mysql】linux安装mysql客户端
参考文章: MySQL系列之如何在Linux只安装客户端 linux下安装mysql客户端client MySQL Community Downloads 查看linux版本方法: lsb_release -a cat /proc/version下载文件: rpm -ivh mysql-community-*可以删除错误的包: RP…...

YOLOv5部署到web端(flask+js简单易懂)
文章目录 前言最终实现效果图后端实现 主界面检测函数检测结果显示 前端实现 主界面(index.html)显示图片界面 总结 前言 最近,老板让写一个程序把yolov5检测模型部署到web端,在网页直接进行目标检测。经过1个星期的努力,终于实…...
【机器学习】深度学习(DNN)
文章目录 1. 神经网络结构2. 训练步骤3. 反向传播4. 为什么深,而不是宽(模块化)5. 初始化参数能否全为0? 1. 神经网络结构 输入层隐藏层:用于特征转换输出层:用于分类技巧:将网络中的参数写成矩…...

12.30-1-5学习周报
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 文章链接摘要Abstract一、方法介绍1.HAT-CIR2.Horde3.DWGRNet 二、实验总结 文章链接 https://arxiv.org/pdf/2405.04101 摘要 本博客介绍了论文《Continual lea…...

【MySQL】数据操作
数据操作 一、INSERT1、介绍2、语法3、语法介绍4、注意事项5、示例 二、插入否则更新1、介绍2、语法3、语法介绍4、示例 三、ROW_COUNT1、介绍2、示例 四、REPLACE1、介绍2、语法3、示例 五、UPDATE1、介绍2、语法3、示例 六、DELETE1、介绍2、语法3、语法介绍 七、TRUNCATE1、…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...

JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...

GitFlow 工作模式(详解)
今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...