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

news2024/11/26 8:52:52

        基于密度的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.coloradmin.cn/o/1832649.html

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

相关文章

【图书推荐】《Hive入门与大数据分析实战》

本书重点 Hive的网站流量分析项目、旅游酒店评价大数据分析项目&#xff0c;两个案例&#xff08;均包括SQL和Java编程两种解决方法&#xff0c;SQL实现不用编程&#xff09;可用于课题研究和毕业论文素材。 内容简介 Hive是基于Hadoop的一个数据仓库工具&#xff0c;用来进…

使用 cx_Oracle 在 Oracle 中等待记录并执行操作

问题背景&#xff1a; 在第一个 Python 项目中&#xff0c;需要等待记录被插入 Oracle 表中&#xff0c;一旦记录存在&#xff0c;就调用 Python 函数。目前使用 cx_Oracle 库&#xff0c;采用一种无限循环的方式来查询表。如果记录存在&#xff0c;就调用函数&#xff0c;然后…

海洋经济捧出一个IPO,宁波海上鲜数字化赋能背后的喜与忧

近日&#xff0c;宁波海上鲜信息技术股份有限公司&#xff08;下称“海上鲜”&#xff09;向港交所递交上市申请&#xff0c;国泰君安国际、东兴证券&#xff08;香港&#xff09;为其联席保荐人。贝多财经获悉&#xff0c;该公司自2022年5月起便开始筹备赴港上市&#xff0c;但…

分布式高性能计算 (HPC)的工作负载管理平台和作业调度程序—— IBM Spectrum® LSF® Suites

IBM Spectrum LSF Suites 是面向分布式高性能计算 (HPC) 的工作负载管理平台和作业调度程序。基于 Terraform 的自动化现已可用&#xff0c;该功能可在 IBM Cloud 上为基于 IBM Spectrum LSF 的集群供应和配置资源。 借助我们针对任务关键型 HPC 环境的集成解决方案&#xff0…

企业该怎么进行流程管理?

众所周知&#xff0c;流程管理在企业中是一种有效的方法&#xff0c;可以帮助组织优化运营、提高效率并降低成本。 下面是一些步骤&#xff0c;可以帮助大家在企业中实施流程管理&#xff1a; 确定目标&#xff1a;首先&#xff0c;明确企业的目标和愿景。这将帮助您确定需要…

成都跃享未来教育咨询解锁新篇章

在快节奏的现代社会中&#xff0c;每个人都在追求着属于自己的非凡人生。而成都跃享未来教育咨询&#xff0c;正是那个能够智慧引领你走向成功、成就非凡人生的灯塔。 跃享未来教育咨询&#xff0c;位于历史悠久的文化名城成都&#xff0c;这里不仅有丰富的文化底蕴&#xff0c…

Novartis诺华制药社招综合能力性格动机问卷入职测评笔试题库答案及包过助攻

【华东同舟求职】由资深各行业从业者建立的一站式人才服务网络平台&#xff0c;现阶段目标是“提升全市场各行业岗位信息的流动性和透明度”。我们接受众多行业机构的直接委托发布&#xff0c;并尽力通过各种方法搜寻高价值岗位信息。事实上&#xff0c;我们以发现不为人知的优…

手机录屏怎么操作?3个小技巧,轻松录屏

在数字化时代&#xff0c;手机录屏功能已逐渐成为我们日常生活和工作中不可或缺的工具。无论是为了记录游戏过程、制作教程&#xff0c;还是为了留存重要的视频通话&#xff0c;手机录屏都能发挥巨大的作用。本文将详细介绍手机录屏的3个功能、录屏小技巧等&#xff0c;帮助您更…

丘钛微注册陷入“停滞”IPO中止:营收净利润连年下滑,毛利率骤降

《港湾商业观察》施子夫 王璐 从2021年6月末算起&#xff0c;在冲刺创业板这条道路上&#xff0c;昆山丘钛微电子科技股份有限公司&#xff08;以下简称&#xff0c;丘钛微&#xff09;已经耗时了三年。 实际上在三年中&#xff0c;丘钛微早在2022年8月17日就首发过会&#…

苏州辰安塑业携塑料托盘、塑料物流箱解决方案亮相2024杭州快递物流展

苏州辰安塑业携塑料托盘、吹塑托盘、塑料卡板箱、塑料周转箱、塑料物流箱、塑料垃圾桶解决方案盛装亮相2024杭州快递物流展&#xff01; 展位号&#xff1a;3C馆A51 苏州辰安塑业有限公司&#xff0c;是一家专业从事塑料托盘、吹塑托盘、塑料卡板箱、塑料周转箱、塑料物流箱、…

ROS系统中解析通过CAN协议传输的超声波传感器数据

CAN Bus接口设置&#xff1a;确保你的ROS系统可以通过CAN Bus接口与外部设备通信。这可能需要CAN卡或CAN适配器&#xff0c;以及相应的驱动程序和库。 CAN消息接收&#xff1a;配置ROS节点来监听特定的CAN ID&#xff0c;这通常是超声波传感器的标识符。 数据解析&#xff1a…

深度学习训练——batch_size参数设置过大反而训练更耗时的原因分析

&#x1f4aa; 专业从事且热爱图像处理&#xff0c;图像处理专栏更新如下&#x1f447;&#xff1a; &#x1f4dd;《图像去噪》 &#x1f4dd;《超分辨率重建》 &#x1f4dd;《语义分割》 &#x1f4dd;《风格迁移》 &#x1f4dd;《目标检测》 &#x1f4dd;《暗光增强》 &a…

python文件操作、文件操作、读写文件、写模式

with读取文件数据内容 with open(filepath,mode,encoding) as file:#具体操作,例如&#xff1a;print(file.read())#查看文件所有的内容。 with&#xff1a;Python中的一个上下文管理器&#xff0c;用于简化资源的管理和释放。它可以用于任意需要进行资源分配和释放的情境…

当OpenHarmony遇上OpenEuler

1、 安装openEuler 虚拟机、物理机器当然都可以安装。虚拟机又可以使用WSL、或者VMWare、VirtualBox虚拟机软件&#xff0c;如果需要安装最新版本&#xff0c;建议使用后者。当前WSL只支持OpenEuler 20.03。 1.1 WSL openEuler WSL的安装都是程序员的必备技能了&#xff0c;…

牛客热题:最长回文子串

&#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;力扣刷题日记 &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 文章目录 牛客热题&#xff1a;最长回文子串题目链接方法一&am…

26 岁的“天才少年”,带队面壁打通高效大模型之路

每一轮技术浪潮出现时&#xff0c;冲在最前面的都是朝气蓬勃的年轻人。 当大模型代表的人工智能浪潮席卷全球&#xff0c;作为移动互联网“原住民”的年轻开发者&#xff0c;可以说是最活跃的群体。他们的脸庞还有些稚嫩&#xff0c;但在技术和方向上有着自己的想法&#xff0…

微信小程序添加服务类目|《非经营性互联网信息服务备案核准》怎么获取

根据客服反馈&#xff0c;《非经营性互联网信息服务备案核准》在工业和信息化部政务服务平台网站查询&#xff0c;查询结果的截图就是《非经营性互联网信息服务备案核准》。 工业和信息化部政务服务平台 《非经营性互联网信息服务备案核准》&#xff1a; 与客服聊天的截图&a…

JavaEE、SSM基础框架、JavaWeb、MVC(认识)

目录 一、引言 &#xff08;0&#xff09;简要介绍 &#xff08;1&#xff09;主要涉及的学习内容 &#xff08;2&#xff09;学习的必要性 &#xff08;3&#xff09;适用学习的人群&#xff08;最好有这个部分的知识基础&#xff09; &#xff08;4&#xff09;这个基础…

如何用多线程执行 unittest 测试用例实现方案

前言 使用python做过自动化测试的小伙伴&#xff0c;想必都知道unittest和pytest这两个单元测试框架&#xff0c;其中unittest是python的官方库&#xff0c;功能相对于pytest来要逊色不少&#xff0c;但是uniitest使用上手简单&#xff0c;也受到的很多的小伙伴喜爱。一直以来都…

HarmoneyOS星河版 安装和启动

一、下载和安装DevEco Studio 官网链接&#xff1a;OpenAtom OpenHarmony 1.1 找到对应的操作系统进行下载 创建安装Harmony的文件夹&#xff1a; 1.2 下载后进行安装 1.3 分别安装Node、Ohpm、SDK 分别安装Node、Ohpm和SDK 二、.创建一个新项目并运行 2.1 选择[OpenHarmon…