数据预处理之基于预测的(线性,ARIMA)异常值检测#matlab

        基于密度的LOF异常值检测可见上篇文章。以下介绍基于预测的异常值检测:

1.基于预测的异常值检测方法

基于预测的异常值检测方法,特别是结合线性回归和ARIMA(自回归积分滑动平均模型)模型,是数据分析中常用的技术。这些方法的核心思想是利用模型的预测能力来识别与预期值偏差较大的数据点,这些点往往被视为异常值。以下是对这两种方法及其异常值检测的详细介绍:

2.基于线性回归异常值检测

2.1 线性回归异常检测介绍

线性回归模型:线性回归是统计学中的一个基本模型,用于通过一系列自变量(特征)来预测一个因变量(目标变量)。在线性回归模型中,异常值通常被定义为那些与模型预测值存在显著偏差的数据点。

以标准化残差为依据衡量异常值:为了更好地评估残差的大小,可以将其标准化(即将残差除以其标准差)。标准化残差大于某个阈值(如2或3)的数据点被视为异常值。本文使用正态分布生成随机数据,所以阈值设为3。

2.2 线性回归案例代码

接下来利用matlab实例代码介绍:

% 清除命令窗口

clc

% 清除工作空间中的所有变量

clear

% 创建示例数据

% 设置随机数生成器的种子为'default',以便得到可重复的结果

rng('default');

% 定义数据点的数量

n = 100;

% 创建一个从1到n的列向量作为自变量x

x = (1:n)';

% 创建一个因变量y,它是自变量x的两倍加5,再加上一些随机的正态分布噪声

% randn(n,1)*10 生成一个n行1列的矩阵,其元素来自均值为0、标准差为10的正态分布

y = 2*x + 5 + randn(n,1)*10;

% 插入一些异常值

% 将第20、50、80个数据点的y值增加50,使其成为异常值

y([20, 50, 80]) = y([20, 50, 80]) + 50;

% 绘制原始数据

figure; % 创建一个新的图形窗口

scatter(x, y, 'filled'); % 使用散点图绘制原始数据,'filled'表示填充标记

title('原始数据'); % 设置图形标题

xlabel('X'); % 设置x轴标签

ylabel('Y'); % 设置y轴标签

% 线性回归模型拟合

% 使用fitlm函数拟合线性模型

mdl = fitlm(x, y);

% 预测值

% 使用predict函数基于拟合的模型预测y值

y_pred = predict(mdl, x);

% 计算残差

% 残差是观测值与预测值之间的差异

residuals = y - y_pred;

% 设置残差的阈值,超过该阈值的点被视为异常值

% 这里使用残差的3倍标准差作为阈值

threshold = 3 * std(residuals);

isAnomaly = abs(residuals) > threshold;% 0为正常值,1为异常值

% 创建一个逻辑数组isAnomaly,如果残差的绝对值大于阈值,则对应位置为true

% 绘制结果

figure; % 创建一个新的图形窗口

hold on; % 保持当前图形,以便在同一图形上添加更多内容

scatter(x, y, 'filled'); % 绘制原始数据

plot(x, y_pred, 'r', 'LineWidth', 1.5); % 绘制预测值的线,使用红色并设置线宽为2

scatter(x(isAnomaly), y(isAnomaly), 'filled', 'r');

% 绘制异常值,使用红色填充标记

title('线性回归异常值检测'); % 设置图形标题

xlabel('X'); % 设置x轴标签

ylabel('Y'); % 设置y轴标签

legend('原始数据', '预测值', '异常值'); % 添加图例

hold off; % 释放当前图形,以便可以添加新的图形

最终,matlab输出的异常点为20、50、80,线性回归异常值检测图如下:

3.基于ARIMA异常值检测

3.1 ARIMA异常检测介绍

ARIMA模型:ARIMA模型是一种用于时间序列数据预测的统计模型,它由自回归(AR)、差分(I)和移动平均(MA)三个部分组成。ARIMA模型通过捕捉时间序列数据中的自相关性和趋势来进行预测。

以预测误差为依据衡量异常值:使用ARIMA模型对时间序列数据进行预测后,可以计算每个数据点的预测误差(即实际值与预测值之差)。与线性回归类似,预测误差远大于其他数据点的预测误差的数据点被视为异常值。标准化残差大于某个阈值(如2或3)的数据点被视为异常值。本文使用正态分布生成随机数据,所以阈值设为3。

3.2 ARIMA案例代码

接下来利用matlab实例代码介绍:

clc

clear

% 创建时间序列数据

rng('default'); % 固定随机数生成器种子

n = 100;

y = cumsum(randn(n,1)); % 随机游走时间序列

% 插入一些异常值

y([20, 50, 80]) = y([20, 50, 80]) + 20;

% 绘制原始数据

figure;

plot(y);

title('原始时间序列数据');

xlabel('时间');

ylabel('值');

% 自动选择最佳的 p, d, q 组合

bestAIC = Inf;

bestModel = [];

bestPQD = [0, 0, 0];

maxP = 3; % 最大 p 值

maxD = 2; % 最大 d 值

maxQ = 3; % 最大 q 值

for p = 0:maxP

for d = 0:maxD

for q = 0:maxQ

try

% 拟合 ARIMA 模型

mdl = arima(p, d, q);

fit = estimate(mdl, y, 'Display', 'off');

% 计算 AIC 值

aic = aicbic(logL, numParams);

if aic < bestAIC

bestAIC = aic;

bestModel = fit;

bestPQD = [p, d, q];

end

catch

% 如果模型估计失败,跳过

continue

end

end

end

end

fprintf('最佳 ARIMA 模型: p = %d, d = %d, q = %d\n', bestPQD(1), bestPQD(2), bestPQD(3));

% 拟合 ARIMA 模型

mdl = arima(bestPQD(1),bestPQD(2),bestPQD(3)); % 这里选择最优ARIMA(p,d,q) 模型

fit = estimate(mdl, y);

% 预测值

[y_pred, y_pred_mse] = forecast(fit, n, 'Y0', y);

% 计算残差

residuals = y - y_pred;

% 设置残差的阈值,超过该阈值的点被视为异常值

threshold = 3 * sqrt(y_pred_mse);

isAnomaly = abs(residuals) > threshold;

% 绘制结果

figure;

hold on;

plot(y, 'b'); % 原始数据

plot(y_pred, 'r', 'LineWidth', 1.5); % 预测值

plot(find(isAnomaly), y(isAnomaly), 'r*', 'MarkerSize', 5); % 异常值

title('ARIMA 异常值检测');

xlabel('时间');

ylabel('值');

legend('原始数据', '预测值', '异常值');

hold off;

最终,matlab输出的异常点为20、50、80,ARIMA异常值检测图如下:

其中,ARIMA(0,0,0)模型参数如下图,但是实际情况中p=d=q=0一般是不存在的,此处是作者随机生成的正态数据的结果。

4.4 基于预测的优缺点

优点:

简单易懂:线性回归模型基于简单的数学公式,易于理解和实现。

可解释性强:模型的参数(系数)具有明确的物理含义,能够清晰地解释自变量对因变量的影响程度。

计算效率高:线性回归算法的计算量较小,适用于大规模数据集的训练和预测。

缺点:

对非线性关系拟合能力有限:线性回归模型只能捕捉变量之间的线性关系,对于非线性关系的数据拟合效果较差。

对异常值敏感:由于最小二乘法的目标是最小化误差平方和,线性回归模型对异常值(离群点)非常敏感,一个异常值可能会对模型的结果产生较大的影响。

对多重共线性敏感:当自变量之间存在高度相关性(多重共线性)时,线性回归模型的参数估计可能不准确,模型的表现可能不稳定。

基于预测的异常值检测具有其独特的优缺点,以下是详细的介绍:

优点

广泛适用性:这种方法不依赖于大量的先验知识,适用于各种数据类型。无论是数值型数据、时间序列数据还是其他复杂类型的数据,只要能够建立相应的预测模型,就可以进行异常值检测。

高准确性:基于机器学习的预测方法,如使用ARIMA模型或深度学习模型,能够更好地挖掘数据的内在特征,提高异常值检测的准确性。这些方法通过学习和训练大量数据,能够识别出复杂模式中的异常点。

缺点

误报和漏报:在某些情况下,基于预测的方法可能会出现误报(将正常数据误判为异常)或漏报(未能检测出真正的异常数据)。这可能是由于模型的预测误差、数据噪声或异常值的复杂性导致的。

计算复杂性和资源需求:某些基于预测的方法,尤其是基于机器学习的方法,需要大量的计算复杂性和计算资源来进行训练和预测。这可能会增加实施成本和时间成本。

对高维数据的挑战:对于高维数据,基于距离和密度的方法可能会出现空间分布稀疏等问题,导致异常值检测的准确性下降。

模型选择和参数调整:选择合适的预测模型和调整模型的参数是一个挑战。不同的数据和问题可能需要不同的模型和参数设置,这需要一定的专业知识和经验。

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

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

相关文章

【自动驾驶】ROS小车系统介绍

文章目录 小车组成轮式运动底盘的组成轮式运动底盘的分类轮式机器人的控制方式感知传感器ROS决策主控ROS介绍ROS的坐标系ROS的单位机器人电气连接变压模块运动底盘的电气连接ROS主控与传感器的电气连接运动底盘基本组成电池电机控制器与驱动器控制器与运动底盘状态数据&#xf…

深度学习 --- stanford cs231学习笔记四(神经网络的几大重要组成部分)

训练神经网络1 1&#xff0c;激活函数&#xff08;activation functions&#xff09; 激活函数是神经网络之于线性分类器的最大进步&#xff0c;最大贡献&#xff0c;即&#xff0c;引入了非线性。 1&#xff0c;1 Sigmoid sigmoid函数的性质&#xff1a; 结合指数函数的图像可…

OpenGL3.3_C++_Windows(12)

demo演示 demo演示 模板stencil测试 OpenGL颜色缓冲区是用于存储渲染图像的颜色数据的内存区域&#xff0c;在每个新的渲染迭代&#xff0c;我们都将屏幕颜色清理glClearColor&#xff08;&#xff09;为我们指定的颜色&#xff0c;然后同时清除glClear()颜色缓冲区&#xff0…

《骑行健身:“柳叶刀”研究揭示的健康与经济双赢策略》

在这个物价飞涨、经济压力日益加重的时代&#xff0c;普通人如何在不增加额外负担的情况下提升生活质量&#xff1f;《柳叶刀》的最新研究为我们揭开了一个意想不到的秘密&#xff1a;坚持健身&#xff0c;尤其是骑行&#xff0c;竟等同于每年为自己赚取了一笔不小的财富。这一…

C++链表相关内容温习回顾——移除链表元素

本文主要对之前学过的C链表相关内容进行温习回顾&#xff0c;并以 移除链表元素 为例&#xff0c;进行应用。 关于链表的基础理论可见&#xff1a;链表理论基础 应用示例&#xff1a;LeetCode 203 移除链表元素 https://leetcode.cn/problems/remove-linked-list-elements/ 0、…

旋转的六边形

【题目描述】 输入一个整数n&#xff0c;绘制出n个不断旋转的六边形&#xff0c;如图1所示。 图1 旋转的六边形图形 【要求】 -绘制速度设为最快&#xff0c;画笔粗细为3。 -六边形每次旋转10度&#xff0c;边长增加10%。 【分析】 这是一个同心正六边&#xff0c;六边形边…

spring:深入理解@EnableAspectJAutoProxy

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…

Airtest 使用指南

Airtest 介绍 准备工作 AirtestIDE 安装与启动: https://airtest.doc.io.netease.com/IDEdocs/getting_started/AirtestIDE_install/ 电脑端的准备工作完成后,对于手机端只需要打开允许USB调试,当首次运行时会提示安装PocoService,同意即可。 界面介绍

微信登录过程分析

文章目录 1、微信登录过程分析2、身份认证实现方案&#xff1a;3、AOP回顾3.1、AOP底层 1、微信登录过程分析 2、身份认证实现方案&#xff1a; 网关过滤器&#xff1a;gateway网关GlobalFilter自定义过滤器&#xff0c;拦截经过网关的所有请求SpringMVC拦截器&#xff1a;代码…

现货白银实时交易平台的成长阶段 你出在哪个阶段?

很多人喜欢在现货白银平台上做模拟交易&#xff0c;因为他们认为现货白银实时交易平台上交易太痛苦了&#xff0c;不光随时会面临风险&#xff0c;而且还可能让自己出现大的亏损。如果投资者认为痛苦&#xff0c;那笔者觉得投资者不妨将在现货白银实时交易平台上做交易&#xf…

0 简单的图像分类

本文主要针对交通标识图片进行分类&#xff0c;包含62类&#xff0c;这个就是当前科大讯飞比赛&#xff0c;目前准确率在0.94左右&#xff0c;难点如下&#xff1a; 1 类别不均衡&#xff0c;有得种类图片2百多&#xff0c;有个只有10个不到&#xff1b; 2 像素大小不同&…

滑动窗口(LeeCode209题,以JS为例)

什么是滑动窗口&#xff1f; 滑动窗口是算法中一种非常有用的技术&#xff0c;特别是在处理数据序列或数组时。它的核心思想是维护一个固定大小的窗口&#xff0c;这个窗口在数据序列上滑动&#xff0c;以便于在窗口内的元素上进行操作或计算。滑动窗口技术通常用于解决与数据…

对 2024 年美赛选题的建议

对2024年美赛选题的建议包括&#xff1a; 1. 深入探讨当下全球面临的重大问题和挑战&#xff1a;鉴于美赛通常聚焦于全球性议题&#xff0c;如气候变化、可持续发展、数据分析等&#xff0c;参赛学生应关注这些议题&#xff0c;并深入研究相关数据与背景信息&#xff0c;以提出…

单片机建立自己的库文件(4)

文章目录 前言一、新建自己的外设文件夹1.新建外设文件夹&#xff0c;做项目好项目文件管理2.将之前写的.c .h 文件添加到文件夹中 二、在软件中添加项目 .c文件2.1 编译工程保证没问题2. 修改项目列表下的名称 三、在软件项目中添加 .h文件路径四、实际使用测试总结 前言 提示…

sheng的学习笔记-AI-集成学习(adaboost,bagging,随机森林)

ai目录&#xff1a;sheng的学习笔记-AI目录-CSDN博客 目录​​​​​​​ 集成学习 什么是集成学习 集成学习一般结构&#xff1a; 示意图 弱学习器 经典算法 Boosting 什么是boosting 方法图 AdaBoost 算法 AdaBoost示意图 流程解析&#xff1a; 错误分类率error…

太速科技-FMC213V3-基于FMC兼容1.8V IO的Full Camera Link 输入子卡

FMC213V3-基于FMC兼容1.8V IO的Full Camera Link 输入子卡 一、板卡概述 该板卡为了考虑兼容1.8V电平IO&#xff0c;适配Virtex7&#xff0c;Kintex Ultrascale&#xff0c;Virtex ultrasacle FPGA而特制&#xff0c;如果要兼容原来的3.3V 也可以修改硬件参数。板卡支持1路…

快速欧氏聚类与普通欧氏聚类比较

1、前言 文献《FEC: Fast Euclidean Clustering for Point Cloud Segmentation》介绍了一种快速欧氏聚类方法,大概原理可以参考如下图,具体原理可以参考参考文献。 2、时间效率比较:快速欧氏聚类VS普通欧氏聚类 网上搜集的快速欧式聚类,与自己手写的普通欧式聚类进行对比,…

SLG火并6月:多强鼎立,增量用户发展成行业新题

SLG赛道进入到6月&#xff0c;《三国&#xff1a;谋定天下》、《野兽领主&#xff1a;新世界》、《无尽冬日》大量新品袭来搅动市场。 在这样的关口&#xff0c;占据SLG半壁江山的灵犀互娱《三国志战略版》先一步刊登出战报&#xff0c;宣布1亿SLG玩家已收归麾下。 但新的挑战…

Linux时间子系统6:NTP原理和Linux NTP校时机制

一、前言 上篇介绍了时间同步的基本概念和常见的时间同步协议NTP、PTP&#xff0c;本篇将详细介绍NTP的原理以及NTP在Linux上如何实现校时。 二、NTP原理介绍 1. 什么是NTP 网络时间协议&#xff08;英语&#xff1a;Network Time Protocol&#xff0c;缩写&#xff1a;NTP&a…

华为数通企业面试笔试实验题

1. 笔试题 1.1 实验拓扑 1.2 实验要求 公司A为小型销售公司,需要实现基本上网功能,蓝色部分为外网线,提供DHCP服务 DnsServer:114.114.114.114 帮助网管排查某一台计算机在某一台交换机的某个端口 2. 操作步骤 配置路由器相关的LAN侧接口IP地址 配置DHCP项,要求有PC1与PC2…