数据预处理之基于统计的(3σ,Z分数,Boxplot箱线图)异常值检测#matlab

基于统计的异常值检测

1.异常值的含义

异常值是指在数据集中偏离大部分数据的数据,使人怀疑这些数据的偏离并非由随机因素产生,而是产生于完全不同的机制。

异常挖掘(outlier mining)问题由两个子问题构成:(1)如何度量异常。(2)如何有效发现异常。

不同的异常挖掘方法就是通过不同的异常度量方法,构造异常点得分(outlier score),从而发现异常点。

2.异常值的使用背景

异常值的检测有助于识别数据中潜在的问题或异常情况,从而及早发现并解决可能的故障或错误。例如,在制造业中,通过检测流水线上生产的产品数据的异常,可以及时发现生产线的问题并进行修正,提高产品质量;通过住院费用的异常数据挖掘,可以有效的找到不合理的医疗费用支出,找出不规范的医疗行为,控制医疗费用不合理的上涨等。

因此,异常值的检测在数据研究和数学建模中是必不可少的一步。

3.方法理论简介

异常值的检测主要有基于统计、密度、距离、预测和聚类等检测方法,不同类型的数据和不同背景下异常值的检测有不同的适当的方法。

4.基于统计的异常值检测

基于统计的异常数据检测方法主要包括3σ 准则、Z分数、Boxplot(箱线图)等。其中,3σ 准则与Z分数等方法以数据服从正态分布为前提,而Boxplot不严格依赖于正态分布。

4.1 3σ准则

3σ 准则基于正态分布的性质,即大约99.7%的数据点会落在均值(μ)加减3个标准差(σ)的范围内。落在该范围之外的数据点被认为是异常值。
案例数据可从文章底部获得,接下来利用matlab实例代码介绍:

clear all

clc

data1=xlsread('3.6基于统计异常值检测案例数据.xlsx');%假设A为正态分布数据,此处不进行正态分布检验

%此处的data1虽然是42*16,但只是一个对象的一个指标的数据

%所以本文可以直接把data1改成一列

data = reshape(data1, [], 1);

mu = mean(data); % 计算均值

sigma = std(data); % 计算标准差

% 识别异常值

outliers = data(abs(data - mu) > 3*sigma);

disp('异常值:');

disp(outliers);

最终,matlab输出A.xlsx的异常值为15  15  20  20

4.2 Z分数

Z分数是数据点与其均值之间的差除以标准差。Z分数绝对值大于某个阈值(如3)的数据点被认为是异常值。

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

clear all

clc

data1=xlsread('3.6基于统计异常值检测案例数据.xlsx');%假设A为正态分布数据,此处不进行正态分布检验

%此处的data1虽然是42*16,但只是一个对象的一个指标的数据

%所以本文可以直接把data1改成一列

data = reshape(data1, [], 1);

mu = mean(data); % 计算均值

sigma = std(data); % 计算标准差

% 计算Z分数

z_scores = (data - mu) ./ sigma;

% 识别异常值

outliers = data(abs(z_scores) > 3);

disp('异常值:');

disp(outliers);

最终,matlab输出A.xlsx的异常值为15  15  20  20

4.3 Boxplot(箱线图)

Boxplot是一种图形化显示数据分布的方法,它使用四分位数来绘制。箱线图可以帮助我们直观地识别出可能的异常值。

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

clear all

clc

data1=xlsread('3.6基于统计异常值检测案例数据.xlsx');

%此处的data1虽然是42*16,但只是一个对象的一个指标的数据

%所以本文可以直接把data1改成一列

data = reshape(data1, [], 1);

figure;

boxplot(data);

title('箱线图');

xlabel('数据');

ylabel('值');

% MATLAB不会自动标记异常值,但你可以通过观察箱线图来识别它们

% 通常,异常值会被绘制为箱线图外的小点或星号

% 如果你想要根据箱线图计算的界限来识别异常值,你可以手动计算这些界限

Q1 = prctile(data, 25); % 下四分位数

Q3 = prctile(data, 75); % 上四分位数

IQR = Q3 - Q1; % 四分位距

lower_whisker = Q1 - 1.5 * IQR; % 下限

upper_whisker = Q3 + 1.5 * IQR; % 上限

% 识别异常值

outliers = data(data < lower_whisker | data > upper_whisker);

disp('异常值:');

disp(outliers);

最终,matlab输出A.xlsx的异常值为20 20,箱线图如下:

4.4 基于统计的优缺点

·优点:1)异常点检测的统计学方法具有坚实的基础,建立在标准的统计学技术(如分布参数的估计)之上。2)当存在充分的数据和所用的检验类型的知识时,这些检验可能非常有效。

·缺点:1)大部分统计方法都是针对单个属性的,对于多元数据技术方法较少。2)在许多情况下,数据分布是未知的。3)对于高维数据很难估计真实的分布。
案例数据:
链接:https://pan.baidu.com/s/1Mw6xwYvATB3atgrjnrRX6A?pwd=3650 
提取码:3650 
--来自百度网盘超级会员V4的分享

  • 28
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值