作者:Shaleen Swarup
翻译:欧阳锦校对:王可汗本文约1700字,建议阅读5分钟本文从理论和实践角度介绍了使用广义极端学生化偏差(GESD)进行异常检测的方法,展示了Python代码示例和相关源码。

关键字:Python 异常值检测 ESD

图源: Unsplash

异常检测在生活中起着非常重要的作用。通常,异常数据可能与某种问题或罕见事件有关,例如 银行欺诈、医疗问题、结构缺陷、设备故障等。这种联系使得能够挑选出哪些数据点可以被视为异常值是非常有趣的,因为从商业角度识别这些事件通常是十分有趣的事情。

此外,许多统计方法对异常值的存在很敏感。例如,平均值和标准差的计算可能会被单个严重不准确的数据点所影响。检查异常值应该是任何数据分析的常规部分,并且应该检查潜在的异常值以查看它们是否可能是错误的数据。

什么是异常值检测

任何发现数据集异常值的过程都可以被称为异常检测;也就是检测那些不合群的事物。这些异常可能是异常的网络流量,fritz上的一个传感器,或者只是分析前识别要清理的数据。

清理的数据

https://www.bmc.com/blogs/data-normalization/

基于不同方案或方法的多种技术可以用来识别异常。例如,图形的方法(箱线图、散点图);基于距离的方案(最近邻算法、聚类算法);统计方法(GESD、基于四分位数的技术)等等。每种方案都有其优缺点,其效果都取决于实际用例。

在本文中,我们将重点关注GESD(广义极端学生化偏差)并在Python中实现一个简单的示例以更好地了解它的原理。在开始之前,我想说明,这篇文章深受我的探索性数据分析教授Edward McFowland和Bhavesh Bhatt在YouTube上的机器学习和统计教程的讲座的启发。

机器学习和统计教程

https://www.youtube.com/channel/UC8ofcOdHNINiPrBA9D59Vaw

什么是广义极端学生化偏差(Generalized Extreme Studentized Deviate)

GESD是一种简单的统计方法,用于检测遵循近似正态分布的单变量数据集中的一个或多个异常值。统计方法假设常规数据遵循某种统计模型(或分布),而不遵循模型(或分布)的数据则是异常值。

GESD克服了Grubbs检验和Tietjen-Moore检验的主要限制:即必须明确确定疑似异常值的数量k。如果没有正确指定k,则可能会扰乱这些测试的结论。而GESD测试只要求确定疑似异常值数量的上限。

给定上限r,GESD测试基本上执行r个单独的测试:一个异常值的测试,两个异常值的测试,依此类推直到r个异常值。

GESD测试定义在以下假设上:

  • H0:数据集中没有异常值

  • Ha:数据集中最多有r个异常值

GESM的检验统计量公式如下:

GESD的检验统计量

这里,x_bar和σ分别表示样本均值和样本标准差。

在GESD中,我们删去使得 | xi - x_bar | 最大化的观测值。然后,用n-1个观察值重新计算上述统计量。我们重复这个过程,直到r个观测值被移除。我们由此得到r统计量R1, R2 ……, Rr。通过代码示例,这个过程将变得更加清晰。

对应于r检验统计量,由以下公式计算r的临界值:

临界值计算

其中 tp, ν 是具有ν自由度的t分布的100p百分点,并且

t分布

https://www.itl.nist.gov/div898/handbook/eda/p3/eda3664.htm

我们的显著性水平将用α表示。

异常值的数量是通过找到能满足Ri > λi的最大的i来确定的。

Rosner的模拟研究表明,该近似临界值对于样本数量n ≥ 25非常准确,对于n ≥ 15也相当准确。

请注意,尽管GESD本质上是依序使用Grubbs测试而实现的,但仍有一些重要区别:

Grubbs测试

https://www.itl.nist.gov/div898/handbook/eda/p3/eda35h1.htm

  • GESD测试会根据被测试的异常值的数量对临界值进行适当的调整,而依序使用Grubbs测试的则没有这样的调整。

  • 如果遮蔽效应明显,Grubbs 测试的依次使用可能会过早停止。

现在再巩固一下理论部分,在Python中实现GESD以了解它的实际工作原理吧。

首先,模拟我们的数据。这里我们创建了0到1之间的100个随机值。数据的散点图如下所示。

现在,我们特意在数据中放入一些异常值进行识别。

有异常值的数据

现在我们将创建单独的函数来计算检验统计量和临界值。

计算检验统计量的函数如下:

计算临界值的函数如下:

下面这个函数将所有内容汇总在一起并执行r次以识别异常值的数量。对于每次迭代,我们使用上面的函数来计算使得|xi - x_bar| 最大化的检验统计量,并计算其相应的临界值,然后从我们的数据中删除这个观测值以进行下一次迭代。

在我们的数据上以5%的显着性水平和具有7个异常值上限的情况调用这个函数会产生以下结果:

可以看到一共进行了7次检验。异常值的数量是通过找到满足Ri > λi的最大的i来确定的。对于此示例,检验统计量大于临界值(在显着性水平为5%时)的最大异常值数为3。因此,我们得出结论,该数据集中有3个异常值。

代码链接:

https://gist.github.com/shaleenswarup/77c711ac5bade7c8735fd309d94348ef#file-gistfile1-py

这就是Python中使用GESD进行异常检测的实现。希望本文对您实现这种在数据中查找异常值的简单而有效的方法有所帮助。想查看更多项目,请查看作者的 Github 个人资料。

作者的 Github 个人资料

https://github.com/shaleenswarup

引用

1. bmc | Anomaly Detection with Machine Learning: An Introduction by Jonathan Johnson

2. Anomaly detection using PCA from datascience904

https://datascience904.wordpress.com/2019/10/14/anomaly-detection-using-pca/

3. Generalized ESD Test for Outliers from Engineering Statistics

https://www.itl.nist.gov/div898/handbook/eda/p3/eda35h3.htm

原文标题:

Anomaly Detection with GESD (Generalized Extreme Studentized Deviate) in Python

原文链接:

https://towardsdatascience.com/anomaly-detection-with-generalized-extreme-studentized-deviate-in-python-f350075900e2

编辑:王菁

校对:林亦霖

译者简介

欧阳锦,一名在埃因霍温理工大学就读的硕士生。喜欢数据科学和人工智能相关方向。欢迎不同观点和想法的交流与碰撞,对未知充满好奇,对热爱充满坚持。

翻译组招募信息

工作内容:需要一颗细致的心,将选取好的外文文章翻译成流畅的中文。如果你是数据科学/统计学/计算机类的留学生,或在海外从事相关工作,或对自己外语水平有信心的朋友欢迎加入翻译小组。

你能得到:定期的翻译培训提高志愿者的翻译水平,提高对于数据科学前沿的认知,海外的朋友可以和国内技术应用发展保持联系,THU数据派产学研的背景为志愿者带来好的发展机遇。

其他福利:来自于名企的数据科学工作者,北大清华以及海外等名校学生他们都将成为你在翻译小组的伙伴。

点击文末“阅读原文”加入数据派团队~

转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派ID:DatapiTHU),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

发布后请将链接反馈至联系邮箱(见下方)。未经许可的转载以及改编者,我们将依法追究其法律责任。

点击“阅读原文”拥抱组织

独家 | 在Python中使用广义极端学生化偏差(GESD)进行异常检测(附链接)相关推荐

  1. 独家 | 图解BiDAF中的单词嵌入、字符嵌入和上下文嵌入(附链接)

    作者:Meraldo Antonio 翻译:张玲 校对:吴金笛 本文约5200字,建议阅读15分钟. 本文重点讲解机器问答任务中常见机器学习模型BiDAF是如何利用单词.字符和上下文3种嵌入机制将单词 ...

  2. Python中出现:RunTimeError:implement_array_function method already has a docstring.异常解决

    QUESTON:Python中出现:RunTimeError:implement_array_function method already has a docstring.异常解决 ANSWER: ...

  3. 独家 | 使用Python的OpenAI Gym对Deep Q-Learning的实操介绍(附学习资源)

    作者:ANKIT CHOUDHARY 翻译:张睿毅 校对:吴金笛 本文4300字,建议阅读10+分钟. 本文作者通过实战介绍了Deep Q-Learning的概念. 导言 我一直对游戏着迷.在紧凑的时 ...

  4. python中冒号报错_python新手常见错误和异常

    在python编程中,新手最常见的错入和异常如下 1.缺少冒号引起的错误 在if,elif,for,while,class,def声明末尾需要添加冒号(:),如果忘记添加,将会提示:"Syn ...

  5. 独家 | 别用csv存储了-这种文件格式比csv快150倍(附链接)

    作者: Dario Radečić 翻译:王可汗 校对:张达敏本文约1200字,建议阅读5分钟本文介绍了一种运行速度大大提高的数据格式. csv会浪费您的时间.磁盘空间和金钱.是时候结束了. csv并 ...

  6. 独家 | 准确度VS速度——数据科学家能从搜索中学到什么?(附链接)

    作者:Radu Miclaus,Lucidworks人工智能产品总监 翻译:陈   丹 校对:吴金笛 本文长度约为2600字,建议阅读5分钟 本文作者从搜索的角度告诉我们抉择准确度和速度的重要性,以及 ...

  7. 独家 | 2020年22个广泛使用的数据科学与机器学习工具(附链接)

    作者:RAM DEWANI 翻译:欧阳锦 校对:陈汉青 本文长度为4600字,建议阅读11分钟 本文为大家从两个方面--大数据和数据科学,介绍了本年度的22个被广泛使用的数据科学和机器学习工具.结合了 ...

  8. 最新计算机技能需求排名出炉:Python仅排第三,第一你猜得到吗?(附链接)...

    来源:机器之心 本文约1700字,建议阅读5分钟. 本文带你了解9102年,哪一门计算机技能最当红? 除了编程语言之外,要想找一份计算机相关的工作,还需要很多其他方面的技能.最近,来自美国求职公司 I ...

  9. 独家 | 最新NLP架构的直观解释:多任务学习– ERNIE 2.0(附链接)

    作者:Michael Ye 翻译:陈雨琳 校对:吴金笛 本文约1500字,建议阅读7分钟. 本文将介绍多任务学习. 科技巨头百度于今年早些时候发布了其最新的NLP架构ERNIE 2.0,在GLUE基准 ...

最新文章

  1. CAN 总线 之七 BOSCH CAN 位时序 和 同步
  2. python邮件转发_把Gmail邮件转发到gtalk的Python方法
  3. Ace教你一步一步做Android新闻客户端(三) JSON数据解析
  4. 大学生计算机python_非计算机专业的大学生,想学习Python需要多长时间
  5. 2016年3月-7月电机组装以及基于MAXON运动控制系统
  6. java 集合工具类_Java集合中Collections工具类总结
  7. php实现一键截取全屏代码,截全屏电脑快捷键是什么
  8. adc matlab代码,pudn-几种ADC设计的matlab源码
  9. XPS文件怎么打开?可以转成PDF格式吗?
  10. 【Android UI设计与开发】4.底部菜单栏(一)Fragment介绍和简单实现
  11. BUUCTF 藏藏藏
  12. 赛诺菲巴斯德宣布建立专属mRNA疫苗卓越中心;​葛兰素史克单片双药艾滋病治疗药物多伟托在中国上市 | 医药健闻...
  13. Android Camera驱动分析
  14. vue项目如何减少app.js和vender.js的体积
  15. 4位超60岁程序员大爷的生存秘籍
  16. mysql实现layui分页_LayUI
  17. 什么是α-β剪枝算法?
  18. IplImage、IplImage、Mat之间的转换
  19. 博客记录之学习骏马金龙的网站
  20. 万彩动画大师使用技巧_在设计中使用动画的4个技巧

热门文章

  1. vue-ueditor 后端配置项没有正常加载_nginx配置websocket
  2. 黑客渗透入门教程 第一课:粗暴的端口扫描
  3. JAVA-JSP内置对象
  4. WinWordControl控件的使用注意
  5. 使用VMware Infrastructure Client中的VMware Server 2.0.x的管理
  6. 云曦服务器,云曦南羡最新章节_云曦南羡全本小说
  7. pytorch中Schedule与warmup_steps的用法
  8. xml命名空间的作用类似于java中包名所起的限定范围的作用
  9. 2020-10-26关于虚拟机中的HWADDR和MACADDR地址
  10. Pytorch optimizer.step() 和loss.backward()和scheduler.step()的关系与区别 (Pytorch 代码讲解)