数据预处理之基于预测的(线性,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.mfbz.cn/a/707250.html

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

相关文章

期末复习5---PTA

以下是提交正确的代码&#xff1a; int max_len( char *s[], int n ) {int i;int max0;for(i1;i<n;i){if(strlen(s[i])>strlen(s[max]))maxi;}return strlen(s[max]); } 以下是我自己写的代码&#xff1a; 出现的问题是 &#xff1a;括号加的不对&#xff0c;需要细心…

Vue31-生命周期的简介

一、需求&#xff1a;文字的透明度递减 示例&#xff1a; 对象的简写形式 new vue({ key:value, key:value, 。。。。。。 }) 二、代码的实现 注意&#xff1a;JS不擅长小数的计算&#xff01;&#xff01;&#xff01; 此写法不好&#xff01;&#xff01;&#xff01;追求…

【抽代复习笔记】19-群(十三):奇偶置换、循环置换的几个定理及例题

定义&#xff1a; ①在Sn中&#xff0c;能够表示为奇数多个对换乘积的置换称为“奇置换”&#xff0c;能够表示为偶数多个对换乘积的置换称为“偶置换”&#xff1b; ②所有偶置换的集合记为An。 例1&#xff1a;&#xff08;1&#xff09;计算S1和S2中奇、偶置换的数目&…

QT基础-简介,安装(6.7.1编译)

目录 QT简介 一.QT编译 国内镜像网站 1. For windows a.下载:qt-everywhere-src-6.7.1.zip b.下载Cmake c.下载python d.查看readme.md e. x64 native Tools cd 到 源码目录 f.输入 g. 然后输入 ​编辑 h.最后输入 1.2. qt-creator 1.3. 配置编译 2. For Ubu…

数据结构(DS)学习笔记(4):线性表

2.1线性表的类型定义 线性表是最常用且最简单的一种数据结构&#xff0c;是一种典型的线性结构&#xff0c;一个线性表是n个数据元素的有限序列。 线性表&#xff1a;&#xff0c; ——是数据元素&#xff0c;是线性起点&#xff08;起始结点&#xff09;&#xff0c;是线性…

[数据集][目标检测]减速区域检测数据集VOC+YOLO格式1654张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1654 标注数量(xml文件个数)&#xff1a;1654 标注数量(txt文件个数)&#xff1a;1654 标注…

数据通信与网络(二)

如何构建网络协议 这些协议采用分层的结构&#xff0c;每层协议实现特定功能&#xff0c;同时也需要依靠低层协议所提供的服务。 网络协议可以理解为三部分组成&#xff1a; 1、语法&#xff1a;通信时双方交换数据和控制信息的格式&#xff0c;是对通信时采用的数据结构形式…

二开版视频CMS完整运营源码/新版漂亮APP手机模板/集成员分销功能等

一个二开的影视CMS&#xff0c;直接上传源码至网站根目录&#xff0c;访问网站域名即可安装。 测试环境&#xff1a;Nginx 1.20.1—MySQL 5.6.50–PHP-7.2&#xff08;安装拓展/fileinfo&#xff09; 上传源码&#xff0c;访问域名直接安装 后台地址&#xff1a;域名/MDadmi…

windows10使用触控板、鼠标(magic trackpad)———附带BootCamp6驱动下载链接

文章目录 0 背景1 步骤1.1 下载1.2 解压1.3 安装驱动 参考 0 背景 最近在台式机&#xff08;windows10系统&#xff09;上使用mac设备&#xff0c;键盘magic keybord连上数据线就可以直接使用&#xff0c;但是触控板magic trackpad却不行&#xff0c;只有鼠标左键&#xff0c;…

电池包断路单元DBU的预充电电阻应用案例

当电池组接触器闭合到电机和逆变器上时&#xff0c;逆变器电容器中会有电流涌入。这种非常高的电流至少可能会使接触器老化&#xff0c;并可能永久损坏接触器。 因此&#xff0c;当我们关闭电池组上的接触器时&#xff0c;我们分三个步骤执行此操作&#xff1a; 1.关闭主负极…

闭包、内存泄漏、垃圾回收详解

首先要说清楚这个话题&#xff0c;必须要先清楚什么是垃圾回收&#xff0c;要清楚什么是垃圾回收呢&#xff0c;必须要知道什么是垃圾&#xff0c;所谓的垃圾就是不再需要的内存&#xff0c;需要或者不需要是由人为来决定的 <!DOCTYPE html> <html lang"en"…

Hexapod C-887使用手册 -- 3

3--产品描述 本章中 型号概要 产品视图 交换范围 可选的附件 可命令元素 固件的重要组件 ID芯片探测 轴A和B的操作参数 Hexapod的运动 通过EtherCAT接口发送命令 通信接口 PC软件的概要 3.1 型号概要 C-887 hexapod控制器可以获取以下版本&#xff1a; 型号 描述…

【论文复现|智能算法改进】基于改进哈里斯鹰算法的机器人路径规划研究

目录 1.算法原理2.改进点3.结果展示4.参考文献5.代码获取 1.算法原理 【智能算法】哈里斯鹰算法&#xff08;HHO)原理及实现 2.改进点 ICMIC混沌映射 { z n 1 sin ⁡ ( α π z n ) , α ∈ ( 0 , 1 ) − 1 ≤ z n ≤ 1 , z n ≠ 0 x i x l b ( x u b − x l b ) 1 z i…

陕西移动联合中兴通讯,赋能5G RedCap智慧工厂建设

前不久&#xff0c;陕西移动联合中兴通讯、高新兴等产业伙伴在中兴通讯西安智能终端生产基地顺利完成5G RedCap在智慧工厂的应用实践。本次实践证明了5G RedCap在智慧工厂场景下的应用可行性&#xff0c;为RedCap在工业智能制造行业的应用打下基础。   5G RedCap技术是5G-A实现…

NLP入门——基于TF-IDF算法的应用

从json格式数据中抽出句子和标签 首先查看json格式的数据文件&#xff1a; :~/nlp/tnews/src$ less train.json可以看到json字符串表示一个对象&#xff0c;我们利用json.loads() 函数会将其转换为一个 Python 字典。docs python json #ext.py #encoding: utf-8import sys f…

汽车零部件巨头营收PK:博世稳居榜首,宁德时代净利润率亮眼

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 在竞争激烈的汽车行业&#xff0c;各大巨头在2023年的营收表现可谓是各有千秋。近日&#xff0c;一份关于汽车行业主要企业的营收和利润率数据引…

SAP Web IDE 安装使用

For training SAP Web IDE 是基于 Eclipse 内核的在线开发 IDE&#xff0c;可以使用在线的试用版本&#xff0c;但服务器在德国&#xff0c;访问的网速特别慢。也可以使用 Personal Edition&#xff0c;在本机启动和编写代码。 打开官网下载WEBIDE工具包&#xff0c;包含 Tri…

汇编:EFLAGS寄存器

EFLAGS寄存器是x86架构处理器中的一个状态寄存器&#xff0c;用于存储当前处理器状态和控制特定操作&#xff1b;寄存器中的各个标志位可以影响指令执行&#xff0c;并且指令执行过程中也可以修改这些标志位&#xff0c;每个位都有特定的含义。 EFLAGS寄存器图示&#xff1a; …

1. NAS和SAN存储

NAS和SAN存储 一、存储设备1、根据工作方式2、DAS 直接附加存储3、NAS存储4、SAN存储 二、模拟配置SAN存储1、创建虚拟机、安装openfiler2、访问openfiler webUI3、创建RAID设备4、开启iSCSI服务5、配置SAN存储设备共享空间5.1 设置IQN 6、业务服务器连接使用存储6.1 安装客户端…

NodeClub:NodeJS构造开源交流社区

NodeClub&#xff1a; 连接每一个想法&#xff0c;NodeClub让社区更生动- 精选真开源&#xff0c;释放新价值。 概览 NodeClub是一个基于Node.js和MongoDB构建的社区系统&#xff0c;专为开发者和社区爱好者设计。它提供了一套完整的社区功能&#xff0c;包括用户管理、内容发…