异常值检测——绝对中位差MAD(median absolute deviation )
文章目录
- 一、MAD介绍
- 二、计算MAD方法
- 三、MAD实现剔除异常值
- 四、其它检测异常值方法
- 参考资料
一、MAD介绍
MAD(median absolute deviation)绝对中位差
在统计学中,MAD是对单变量数值型数据的样本偏差的一种鲁棒性测量,即是用来描述单变量样本在定量数据中可变的一种标准。
In statistics, the median absolute deviation (MAD) is a measure of statistical dispersion and it is a robust measure of the variability of a univariate sample of quantitative data.
公式:
理解:先计算出数据与数据的中位数之间的偏差,MAD是偏差绝对值的中位数。
MAD与标准差SD( standard deviation)的区别:
MAD是一种鲁棒性统计量,比标准差更能适应数据集中的异常值。对于标准差,使用的是数据到均值的距离平方,较大的偏差权重较大,异常值对结果影响不能忽视。对于MAD,少量的异常值不会影响实验的结果。
用途:MAD常用于异常值检测
假定实验数据服从正态分布,让异常值落在两侧50%的面积内,让正常值落在中间50%的区域内。
具体解算过程:https://blog.csdn.net/horses/article/details/78749485
二、计算MAD方法
(1)Excel中计算MAD
(2)python计算MAD
代码:
from statsmodels import robust #import package
df.apply(robust.mad) #use function to calculate MAD
根据不同数据类型使用不同的包:https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.median_absolute_deviation.html
(3)R语言计算MAD
三、MAD实现剔除异常值
代码实现:
def mad_based_outlier(points, thresh=3.5): #这里设定的阈值3.5if len(points.shape) == 1:points = points[:,None]median = np.median(points, axis=0)diff = np.sum((points - median)**2, axis=-1)diff = np.sqrt(diff)med_abs_deviation = np.median(diff)modified_z_score = 0.6745 * diff / med_abs_deviationreturn modified_z_score > thresh
四、其它检测异常值方法
https://www.zhihu.com/question/38066650
(1)数字异常值:是通过IQR(InterQuartile Range)计算得的。
计算第一和第三四分位数(Q1、Q3),异常值是位于四分位数范围之外的数据点x i:四分位法(箱线图)k = 1.5
代码实现:
def percentile_based_outlier(data, threshold=95):diff = (100 - threshold) / 2.0minval, maxval = np.percentile(data, [diff, 100 - diff])return (data < minval) | (data > maxval)
(2)Z-score
Z-score是一维或低维特征空间中的参数异常检测方法。即描述一个值与一组值的平均值之间关系的数值测量。
Z-score假定数据是服从高斯分布的,异常值是分布在两端的数据,因此是远离数据的平均值。简单理解,计算每个数据点和均值、标准偏差的一个关系参数,与设定的阈值对比,当关系参数绝对值大于这个阈值的时候,则为异常值,应该剔除掉(阈值一般设置为2.5、3.0和3.5)。具体的计算公式可见:https://www.zhihu.com/question/38066650
Z-score更多介绍资料:https://www.statisticshowto.com/probability-and-statistics/z-score/
注意:在进行异常值处理之前,需先进行异常值检验,比较常用的有两种方法:
(1)数据服从正态分布,采用3σ原则。
实现代码:
#插入一列three_sigma来表示是否是异常值
data['three_sigma'] = data['variable'].transform( lambda x: (x.mean()-3*x.std()>x)|(x.mean()+3*x.std()<x))#筛选出目标变量的异常值
data[data['three_sigma']==True]#保留正常的数据
correct_data=data[data['three_sigma']==False]
(2)数据不服从正太分布,采用箱线图检验。
实现代码:
#定义一个下限
lower = data['variable'].quantile(0.25)-1.5*(data['variable'].quantile(0.75)-data['variable'].quantile(0.25))#定义一个上限
upper = data['variable'].quantile(0.25)+1.5*(data['variable'].quantile(0.75)-data['variable'].quantile(0.25))#重新加入一列,用于判断
data['qutlier'] = (data['variable'] < lower) | (data['variable'] > upper) #筛选异常数据
data[data['qutlier'] ==True]#过滤掉异常数据
qutlier_data=data[data['qutlier'] ==False]
参考资料:https://blog.csdn.net/qq_40195360/article/details/84570503
参考资料
MAD检测异常值:https://blog.csdn.net/lanchunhui/article/details/80381516
绝对中位差Median Absolute Deviation:https://blog.csdn.net/horses/article/details/78749485
(强推)Pythonic way of detecting outliers in one dimensional observation data:https://stackoverflow.com/questions/22354094/pythonic-way-of-detecting-outliers-in-one-dimensional-observation-data?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
常见的检测异常值方法:https://www.zhihu.com/question/38066650
(强推)异常值检测方法汇总:https://blog.csdn.net/qq_40195360/article/details/105380444
(详细)Test to identify outliers in data series:https://www.pdf-archive.com/2016/07/29/outlier-methods-external/outlier-methods-external.pdf
How to Remove Outliers in Python:https://www.statology.org/remove-outliers-python/
(强推)Univariate Anomaly Detection – A walkthrough in Python:https://www.analyticsvidhya.com/blog/2021/06/univariate-anomaly-detection-a-walkthrough-in-python/
异常值检测——绝对中位差MAD(median absolute deviation )相关推荐
- 机器学习数据预处理之离群值/异常值:MAD法(绝对值差中位数法)+绝对中位差(Median Absolute Deviation,MAD)
机器学习数据预处理之离群值/异常值:MAD法(绝对值差中位数法)+绝对中位差(Median Absolute Deviation,MAD) garbage in,garbage out. 异常值是分析 ...
- Median Absolute Deviation(MAD,绝对中位差)和3sigma准则剔除粗差方法对比(代码)
根据文献: Klos A, Bogusz J, Figurski M, Kosek W (2016) On the handling of outliers in the GNSS time seri ...
- Python 详解计算 Median Absolute Deviation(绝对中位偏差)| 还可用于异常值检测
CSDN 叶庭云:https://yetingyun.blog.csdn.net/ In statistics, the median absolute deviation (MAD) is a me ...
- 绝对中位差( Median Absolute Deviation,MAD)算法
绝对中位差( MedianAbsolute Deviation,MAD) 是一种采用计算各观测值与平均值的距离总和的检测离群值的方法. 本文中主要用来剔除获取到的图像坐标中的离群点. 算法步骤: #离 ...
- 异常值检测 —— MAD(median absolute deviation)
MAD 定义为,一元序列 XiXiX_i 同其中位数偏差的绝对值的中位数(deviation,偏差本身有正有负): MAD=median(|Xi−median(X)|)MAD=median(|Xi−m ...
- php 异常值检测,PHP中的错误处理、异常处理机制分析
例: $a = fopen('test.txt','r'); //这里并没有对文件进行判断就打开了,如果文件不存在就会报错 ?> 那么正确的写法应该如下: if(file_exists('tes ...
- r语言中检测异常值_R中的异常值检测
r语言中检测异常值 介绍 (Introduction) An outlier is a value or an observation that is distant from other obser ...
- 基于密度的异常值检测方法整理
基于密度的异常值检测方法的原理认为正常样本点所处的类簇密度要高于异常点样本所处的类簇密度.为解决实际异常值检测情况 中出现的问题,有一种基于局部异常因子 LOF 方法.
- 清理异常值(MAD:绝对中位差)
清理异常数据: 中位数绝对偏差(MAD):用来描述单变量样本在定量数据中可变的一种标准 在统计学中,绝对中位差是刻画一元数据样本变化的一个鲁棒度量.由公式可以看出,其求解还算简单,给定一个数据样本集, ...
- ML之FE:特征工程中常用的一些处理手段(缺失值填充、异常值检测等)及其对应的底层代码的实现
ML之FE:特征工程中常用的一些处理手段(缺失值填充.异常值检测等)及其对应的底层代码的实现 目录 特征工程中常用的一些处理手段(缺失值填充.异常值检测等)及其对应的底层代码的实现
最新文章
- linux 批量处理 dos2unix
- python入门自学-你是如何自学 Python 的?
- 你需要了解的 JIT Debugging
- javascript 不让成为nan_一张图彻底搞懂JavaScript的==运算
- OpenShift 4 - 直接将Web应用当成Serverless运行
- protostuff java_protostuff 及其注意事项
- 使用ImageMagick和Tesseract进行简单数字图像识别
- c盘local文件太大_win7 c盘清理的方法教程
- 查找与清除线程插入式木马
- 阿里云网站备案时短信核验遇到问题解决办法
- 微机原理交通灯控制系统设计
- Web开发后端框架比较
- java编写九宫格拼图游戏_jquery 九宫格拼图游戏源码
- y = mapminmax(‘apply‘,x,ps)中各个参数是什么意思呢?
- nginx配置ssl证书实现微信小程序后端接口访问
- jsp大学生兼职信息管理系统
- 2021年,学UI设计还吃香吗?
- 使用 Python 生成二维码
- Python 中文分词 NLPIR 快速搭建
- 在caffe 中添加Crowd counting 数据层
热门文章
- java生产者消费者同步模式
- python优先级排序_Python 列表排序
- 计算机软件著作权的保护范围,计算机软件的著作权保护范围分析
- 服务器mysql_本地如何操作服务器的mysql,详细教程
- Javascript:ES6语法简述
- Javascript特效:简单的匀速平移动画
- mysql 多个命令行,5.8.2.1在Windows命令行中启动多个MySQL实例
- Maven仓库的理解及配置
- python_文件读写_提取kitti数据集中带时间戳的IMU测量数据
- error: (-205:Formats of input arguments do not match) All the matrices must have the same data type