【关于时间序列的ML】项目 9 :机器学习中的 ARIMA 模型

news2024/11/19 23:25:07

    🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎

📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃

🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​

📣系列专栏 - 机器学习【ML】 自然语言处理【NLP】  深度学习【DL】

​​

 🖍foreword

✔说明⇢本人讲解主要包括Python、机器学习(ML)、深度学习(DL)、自然语言处理(NLP)等内容。

如果你对这个系列感兴趣的话,可以关注订阅哟👋

文章目录

使用 ARIMA 模型进行异常检测

使用 ARIMA 模型


ARIMA 模型表示自回归综合移动平均线。该模型提供了一系列功能,这些功能非常强大且灵活,可以执行与时间序列预测相关的任何任务。

在机器学习中,ARIMA 模型通常是一类统计模型,它给出的输出与随机因素组合中的先前值线性相关。

在选择合适的时间序列预测模型的同时,我们需要将数据可视化,以分析趋势、季节性和周期性。当季节性是时间序列的一个非常强的特征时,我们需要考虑一个模型,例如季节性 ARIMA (SARIMA)。

ARIMA 模型通过使用分布式滞后模型工作,在该模型中,算法用于根据滞后值预测未来。在本文中,我将通过机器学习中一个非常实用的示例(异常检测)向您展示如何使用 ARIMA 模型。

使用 ARIMA 模型进行异常检测

异常检测意味着识别过程中的意外事件。这意味着检测对我们系统的威胁,这些威胁可能会在安全性和重要信息泄漏方面造成危害。

异常检测的重要性不仅限于安全性,而是用于检测任何不符合我们预期的事件。在这里,我将向您解释我们如何使用 ARIMA 模型进行异常检测。

我将使用基于主机 CPU 使用率的每分钟指标的数据。现在让我们通过导入必要的库来开始这项任务:

import pandas as pd
!pip install pyflux
import pyflux as pf
from datetime import datetime

现在让我们导入数据并快速查看数据及其一些见解。你可以下载数据,我在这个任务中使用的是这里

from google.colab import files
uploaded = files.upload()
data_train_a = pd.read_csv('cpu-train-a.csv', parse_dates=[0], infer_datetime_format=True)
data_test_a = pd.read_csv('cpu-test-a.csv', parse_dates=[0], infer_datetime_format=True)
data_train_a.head()

现在,让我们可视化这些数据以快速了解我们正在处理的内容: 

import matplotlib.pyplot as plt 
plt.figure(figsize=(20,8))
plt.plot(data_train_a['datetime'], data_train_a['cpu'], color='black')
plt.ylabel('CPU %')
plt.title('CPU Utilization')

 

使用 ARIMA 模型

现在,让我们看看如何使用 ARIMA 模型对数据进行预测:

model_a = pf.ARIMA(data=data_train_a, ar=11, ma=11, integ=0, target='cpu')
x = model_a.fit("M-H")

Acceptance rate of Metropolis-Hastings is 0.0
Acceptance rate of Metropolis-Hastings is 0.026
Acceptance rate of Metropolis-Hastings is 0.2346

Tuning complete! Now sampling.
Acceptance rate of Metropolis-Hastings is 0.244425

现在,让我们可视化我们的模型:

model_a.plot_fit(figsize=(20,8))

 上面的输出显示了与 ARIMA 模型预测相符的 CPU 利用率随时间的变化。现在让我们执行一个示例测试来评估我们模型的性能:

model_a.plot_predict_is(h=60, figsize=(20,8))

 上面的输出显示了我们的 ARIMA 预测模型的样本内(训练集)。现在,我将运行实际预测,使用最近的 100 个观察到的数据点,然后是 60 个预测点:

model_a.plot_predict(h=60,past_values=100,figsize=(20,8))

 让我们对在不同时间捕获的 CPU 利用率数据集的另一部分执行相同的异常检测:

data_train_b = pd.read_csv('cpu-train-b.csv', parse_dates=[0], infer_datetime_format=True)
data_test_b = pd.read_csv('cpu-test-b.csv', parse_dates=[0], infer_datetime_format=True)
plt.figure(figsize=(20,8))
plt.plot(data_train_b['datetime'], data_train_b['cpu'], color='black')
plt.ylabel('CPU %')
plt.title('CPU Utilization')

 现在,让我们将这些数据拟合到模型上:

model_b = pf.ARIMA(data=data_train_b, ar=11, ma=11, integ=0, target='cpu')
x = model_b.fit("M-H")

Acceptance rate of Metropolis-Hastings is 0.0
Acceptance rate of Metropolis-Hastings is 0.016
Acceptance rate of Metropolis-Hastings is 0.1344
Acceptance rate of Metropolis-Hastings is 0.21025
Acceptance rate of Metropolis-Hastings is 0.23585
Tuning complete! Now sampling.
Acceptance rate of Metropolis-Hastings is 0.34395

model_b.plot_predict(h=60,past_values=100,figsize=(20,8))

我们可以将训练期后短时间内发生的异常可视化,因为观察值落在低置信区间内,因此它会引发异常警报。

我希望您喜欢这篇关于使用 ARIMA 模型进行异常检测的文章。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

<Linux线程概念及线程控制>——《Linux》

目录 1. Linux线程概念 什么是线程 线程的优点 线程的缺点 线程异常 线程用途 2. Linux进程VS线程 进程和线程 进程的多个线程共享 关于进程线程的问题 3. Linux线程控制 POSIX线程库 创建线程 线程ID及进程地址空间布局 线程终止 线程等待 4. 分离线程 后记:●由于…

ArcGIS 制作这种“清新设计风”的地图海报封面

这种图怎么做?下面是星球研究所制作的一张地图海报,那么究竟是如何制作的呢? 星球研究所 制作 一通鼓捣之下,使用 ArcGIS Pro 制作出了风格相近的成都市区位及地形示意图地图(其实 QGIS 也能做)。 下面教程一并分享给大家。 完全使用 ArcGIS Pro 制作的成果图 1.全国区位…

Python——几个常用的数学函数

1. min()函数:取出给定参数的最小值 说明:获取指定数值或者指定序列中最小值。 print(min(1, 5)) print(min(1, 2, 3, 4, 5, 6)) print(min([2, 3, 4, 5])) 2.max()函数:取出给定参数的最大值 说明:获取指定数值或者指定序列中…

CSS初级教程【第一天】

CSS初级教程【第一天】【1】CSS初识【2】CSS简介【3】CSS语法【4】CSS 选择器【5】CSS使用【6】CSS 注释【7】CSS 颜色【8】CSS RGB 颜色【9】CSS HEX 颜色【10】CSS HSL 颜色(色相| 饱和度 | 明度)【0】末尾声名【1】CSS初识 CSS 是一种描述 HTML 文档样…

【青岛大学·王卓】第3章_栈和队列

【青岛大学王卓】第3章_栈和队列 20221107-20221119 3.1 栈和队列的定义和特点 普通线性表插入和删除可以是线性表中的任意为位置; 3.1.1 栈 栈的概念 栈和队列是两种常用的、重要的数据结构。栈和队列是限定插入和删除只能在表的端点进行的线性表。 栈特点 后…

Anki学习之路

【常规操作】: 【自定义卡片进度】: [右键单击] -> [重设学习进度] //选择放到哪一个队列中( 新卡片队列 / 复习队列 )。 【重新学一遍】: //然后再进行上面的操作步骤。 【牌组齿轮按钮】: 【每日新…

Web前端105天-day62-HTML5_CORE

HTML5CORE02 目录 前言 一、复习 二、拖拽 三、上传服务器 四、Canvas 五、地图 总结 前言 HTML5CORE02学习开始 一、复习 跨域 浏览器的同源策略导致在网页中, 通过 AJAX 发送网络请求时, 默认只能向同源的服务器请求同源: 协议 端口号 域名 三者都相同产生跨域的原因…

杰华特科创板上市:市值227亿 华为英特尔联想是股东

雷递网 雷建平 12月23日杰华特微电子股份有限公司(简称:“杰华特”,股票代码为:“688141” )今日在科创板上市,发行价为38.26元。杰华特此次发行5808万股,发行价为38.26元,募资总额为…

32天高效突击:开源框架+性能优化+微服务架构+分布式,面阿里获P7(脑图、笔记、面试考点全都有)

今年的大环境不佳,所以大部分的人在今年的招聘旺季都没有收获到好的结果。 但不要着急,今天分享的内容则是由 一位阿里P7的面试心得,通过32天的高效突击训练,成功拿下offer的学习方法。 篇章分为三大章节,可以根据自…

【TypeScript】类型兼容性与交叉类型讲解

目录 类型兼容性 对象类型兼容性 接口类型兼容性 函数类型兼容性 交叉类型 类型兼容性 在TS中,类型采用的是结构化类型系统,也叫做 duck typing(鸭子类型),类型检查关注的是值所具有的形状。也就是说&#xff0c…

C. Building a Fence(范围判定)

Problem - 1469C - Codeforces 你想建造一个由n个相等部分组成的栅栏。所有部分的宽度都等于1,高度都等于k。 不幸的是,篱笆下面的地面并不平坦。为了简单起见,你可以认为第i节下面的地面等于hi。 你应该遵循几个规则来建造围栏。 连续的部…

C++知识总结

1.C面向对象三大特征:继承、封装、多态。其中多态分为静态多态和动态多态。静态多态:重载,参数模板 动态多态:虚函数,强制转换。 2.static类型的变量存在静态存储区,初始值为0或者null 3.char *p“PCGAME”…

kubekey初期尝试安装 KubeSphere单机和多机避坑指南

kubekey初期尝试安装 KubeSphere单机和多机避坑指南 准备工作 请注意开始前工作确定各个软件版本情况,本文章要想阅读比较舒服请还得有些Go开发经验 CentOS 7.9 KubeKey v1.21 KubeSphere v3.2.1 Docker 和 Kubernetes 根据支持进行选择: 获取支持可以通…

【复盘】2022年度复盘

年度总结 今年的年度总结比之前写早了一点,主要在因为居家办公时间太久,正好有空就找点时间提前写一下总结复盘计划,说实话要是每月都写一次,我自己也做不到。今年这一年如果用两个字来形容的话,应该是坚定 工作篇 …

用树莓派4B安装gitlab,亲测可用~

最近成功在CentOS7上安装了gitlab,忽然想到是不是可以把吃灰的树莓派4B也装上gitlab,于是研究了一下,做个分享。 树莓派是4B 8G版本。本身装的是官方的64位系统。之前可能还装过一些乱七八糟的东西,这里就不提了。 上gitlab官网…

m基于GRNN广义回归神经网络的飞机发动机剩余寿命预测matlab仿真,训练集采用C-MAPSS数据集

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 GRNN建立在非参数核回归基础上,以样本数据为后验条件,通过执行诸如Parzen非参数估计,从观测样本里求得自变量和因变量之间的联结概率密度函数之后,…

mysql查询某字符串是否在某字段中精确查找是否存在和case when语法规则使用说明

mysql中函数find_in_set可以对字符串在某个字段中是否存在,如果存在则返回含有该查询项的所有记录 SELECT count(1) FROM contingency_plan_team_role WHERE find_in_set( 36, preview_task_ids); 查询结果: case when 进行分组判断 cas…

【数据结构与算法基础】青岛大学王卓老师

【数据结构与算法基础】 1. 学习笔记参考 《数据结构与算法基础》教学视频目录87师兄-B站课程《数据结构与算法基础》脑图 2. 学习章节 【青岛大学王卓】第1章_前言【青岛大学王卓】第2章_线性表【青岛大学王卓】第3章_栈和队列【青岛大学王卓】第4章_串、数组和广义表【青岛…

Python爬虫入门——BeautifulSoup库

一、前言 这篇来演示如何使用BeautifulSoup模块来从HTML文本中提取我们想要的数据。 update on 2016-12-28:之前忘记给BeautifulSoup的官网了,今天补上,顺便再补点BeautifulSoup的用法。 update on 2017-08-16:很多网友留言说U…

搜索(5):迭代加深、双向dfs

活动 - AcWing 算法竞赛进阶指南 一、迭代加深概述 dfs每次选定一个分支,直到抵达递归边界才回溯,这种策略有一定缺陷。当搜索树的某个分支情况非常多,并且问题的答案在一个较浅的分支上时,如果一开始就选错了分支&#xff0…