作者:Will Badr
翻译:顾伟嵩校对:欧阳锦本文约1600字,建议阅读5分钟本文介绍了数据科学家必备的五种检测异常值的方法。

无论是通过识别错误还是主动预防,检测异常值对任何业务都是重要的。本文将讨论五种检测异常值的方法。

图来源于Will Myers在Unsplash上的拍摄

什么是异常值?

在统计学中,异常值是指不属于某一特定群体的数据点。它是一个与其他数值大不相同的异常观测值,与良好构成的数据组相背离。

例如,你可以清楚地看到这个列表里的异常值:[20, 24, 22, 19, 29, 18, 4300, 30, 18].

当观测值仅仅是一堆数字并且是一维时,很容易识别出异常值。但是,当你有成千上万的观测值或者是多维度时,你将需要更多巧妙的办法来检测出那些异常值。这就是本文要讨论的内容。

为什么我们要关注异常值?

检测异常值是数据挖掘中的核心问题之一。数据的不断扩增和持续增长,以及物联网设备的普及,让我们重新思考处理异常值的方法和观测异常值构建出的用例。

现在,我们拥有可以检测我们每分钟心跳的智能手表和腕带。检测心跳数据的异常值有助于预防与心脏有关的疾病。交通模式中的异常值有助于预防交通事故。异常值检测还可以用来识别服务器之间的网络基础设施和通信的障碍。因此,建立在检测异常值之上的用例和解决方案是无穷无尽的。

另一个我们需要检测异常值的理由是,当为机器学习模型准备数据集时,检测出所有的异常值,并且要么移除它们、要么分析它们来了解它们最初存在的原因是非常重要的。

现在,让我们从最简单的方法开始探索5种常用的检测异常值的方法。

方法1——标准差:

在统计学中,如果一个数据分布式近似正态分布,那么大约68%的数据值在平均值的前后一个标准差范围内,大约95%的数据值在平均值的前后两个标准差范围内,大约99.7%的数据值在前后三个标准差的范围内。

因此,如果你有任何出现在三个标准差范围外的数据点,那么那些点就极有可能是异常值。

让我们看看代码。

这段代码的输出结果是一个大于80或小于-40的数据列表。请注意,我传入的数据集是一个一维数据集。现在,让我们探索对于多维数据集的更高级的方法。

方法2——箱线图:

箱线图是指通过分位数对数值型数据的图形化描述。这是一种非常简单但有效的异常值可视化方法。把上下须触线看作数据分布的上下边界。任何出现在下须触线下面或上须触线上面的数据点可以被看作异常值。下面是绘制箱线图的代码:

上面的代码输出如下的箱线图。如你所见,它把大于75或小于-35的值看作异常值。这个结果非常接近上述的方法1得到的结果。

箱线图分解:

四分位差的概念是被用来绘制详细图的。四分位差是统计学中通过将数据集划分为四分位数来衡量统计离散度和数据可变性的概念。

简而言之,任何数据集或任何观察值的集合被划分为四个基于数据值和它们与整个数据集比较后而定义的区间。四分位数是指将数据分为三个点和四个区间的数据点。

四分位差是重要的,因为它用于定义异常值。它是第三个四分位数和第一个四分位数的差(IQR=Q3-Q1). 这种情况下的异常值被定义为低于(Q1-1.5IQR)或低于箱线图下须触线或高于(Q3+1.5IQR)或高于箱线图上须触线的观测值。

Source Wikipedia

方法3——DBScan集群:

DBScan是一种用于将数据分组的集群算法。它也是一种被用于基于密度的对于一维或多维数据的异常检测方法。其他的像k-均值和层次聚类的集群算法也可以用于检测异常值。在本例中,我将向您展示一个使用DBScan的案例。但是在开始前,我们先介绍一些重要概念。DBScan有三个重要概念:

  • 核心点:为了理解核心点,我们需要访问一些用于定义DBScan工作的超参数。第一个超参数是最小值样本(min_samples)。这只是形成集聚的核心点的最小数量。第二重要的超参数eps,它是两个被视为在同一个簇中的样本之间的最大距离。

  • 边界点:是与核心点在同一集群的点,但是要离集群中心远得多。

Source:https://stackoverflow.com/questions/34394641/dbscan-clustering-what-happens-when-border-point-of-one-cluster-is-considered

  • 其他的点被称为噪声点,那些数据点不属于任何集群。它们可能是异常点,可能是非异常点,需要进一步调查。现在让我们看看代码。

上述代码的输出值是94。这是噪声点的总数。SKLearn将噪声点标记为(-1)。这种方法的缺陷就是维数越高,精度越低。你还需要做出一些假设,比如估计eps的正确值,而这可能是有挑战性的。

方法4——孤立森林

孤立森林是一种无监督学习的算法,属于集成决策树族。这种方法与前面的方法都不同。所有前面的方法是试图找到数据的正常区域,然后将所定义区域外的任何值视为异常值。

这种方法的工作原理不同。它是明确的孤立异常值,而不是通过给每个点分配一个分数来构造正常的点和区域。它充分利用了这样一个事实:异常值只占数据的小部分,并且它们有与正常值大不相同的属性。该算法适用于高维数据集,并且被证实是一种非常有效的检测异常值的方法。由于本文关注的是实现而不是专门知识,我将不深入探讨算法的工作原理。但是,这篇文章中涵盖了它的所有工作原理细节。

https://cs.nju.edu.cn/zhouzh/zhouzh.files/publication/icdm08b.pdf

现在,让我们探索代码:

该代码将输出数组中每个数据点的预测值。如果结果是-1,那意味着这个特定的数据点是一个异常值。如果结果是1,那么意味着该数据点不是异常值。

方法5——Robust Random Cut Forest

Robust Random Cut Forest算法是亚马逊用于检测异常值的无监督算法。它也通过关联异常分数来工作。低的分数值表示数据点是“正常的”,高的值表示数据中存在异常。“低”和“高”的定义取决于应用,但是一般实践表明,超过平均值三个标准差的分数被认为是异常的。算法的细节可以在这篇文章中找到。

http://proceedings.mlr.press/v48/guha16.pdf

这个算法的最大优势是它可以处理非常高维的数据。它还可以处理实时数据流(内置AWS Kinesis Analytics)和离线数据。

我可以在如下的视频里更加详细的解释这个概念:

https://youtu.be/yx1vf3uapX8

该算法的论文给出了一些与孤立森林相比较的性能标准。论文结果表明,RCF比孤立森林更加准确和快速。

完整的案例代码可以在这里找到:

amazon-sagemaker-examples/introduction_to_amazon_algorithms/random_cut_forest at master · aws/amazon-sagemaker-examples · GitHub

结论

我们生活在一个数据每分每秒都在剧增的世界里。数据如果使用不当便会随着时间贬值。于在线数据流或离线数据集中发现异常值,对于识别商业中的问题或主动构建解决方案以在问题发生之前发现潜在的问题,或者甚至在探索性数据分析(EDA)阶段为ML准备数据集都是至关重要的。我期待你能认为本文有用,在下面的评论区让我知道你的想法。

原文标题:

5 Ways to Detect Outliers/Anomalies That Every Data Scientist Should Know (Python Code)

原文链接:

https://towardsdatascience.com/5-ways-to-detect-outliers-that-every-data-scientist-should-know-python-code-70a54335a623

编辑:王菁

校对:林亦霖

译者简介

顾伟嵩,中国科学院大学网络空间安全专业研究生。对数据科学领域充满好奇,渴望探索未知世界。课余时间喜欢踢足球、游泳。愿意挑战新事物,结交新朋友,一起进步,一起成长。

翻译组招募信息

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

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

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

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

转载须知

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

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

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

独家 | 每个数据科学家应该知道的五种检测异常值的方法(附Python代码)相关推荐

  1. 独家 | 数据科学家应该避免的5种统计陷阱(附链接)

    作者:Matthew Mayo 翻译:冯羽 校对:陈雨琳 本文长度约为2500字,建议阅读5分钟 本文介绍了数据科学家应该避免的五种统计陷阱. 标签:偏见,谬误,辛普森悖论,统计 这篇文章讲了五种统计 ...

  2. 推荐 :数据科学家应该避免的5种统计陷阱

    作者:Matthew Mayo  翻译:冯羽  校对:陈雨琳 本文长度约为2500字,建议阅读5分钟 本文介绍了数据科学家应该避免的五种统计陷阱. 标签:偏见,谬误,辛普森悖论,统计 这篇文章讲了五种 ...

  3. 大数据团队必须设置的五种职位

    大数据团队必须设置的五种职位 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 麦肯锡认为,大数据团队必须有五种职位: 1)数据卫生员(Data Hygie ...

  4. 大数据正在改变客户服务的五种方式

    大数据正在改变客户服务的五种方式 任何组织的命脉,无论是否面向服务,都是需要为客户提供良好的服务.组织如何与其客户进行互动,会影响他们如何看待组织,这会影响潜在客户,除了组织最忠实的客户之外. 客户服 ...

  5. python 欠采样_数据科学家需要了解的 5 种采样方法

    雷锋网 AI 科技评论按,采样问题是数据科学中的常见问题,对此,WalmartLabs 的数据科学家 Rahul Agarwal 分享了数据科学家需要了解的 5 种采样方法,雷锋网 AI 科技评论编译 ...

  6. 数据挖掘最前线:五种常用异常值检测方法

    通过鉴别故障来检测异常对任何业务来说都很重要.本文作者总结了五种用于检测异常的方法,下面一起来看看吧. 什么是异常/离群点? 在统计学中,离群点是并不属于特定族群的数据点,是与其它值相距甚远的异常观测 ...

  7. 五种常用异常值检测方法

    Toggle navigation 首页 产业趋势 专家观察 CISO洞察 决策研究 登录 APP下载 数据挖掘最前线:五种常用异常值检测方法 安全运营 机器之心 2019-07-05 通过鉴别故障来 ...

  8. Server 2016DC查看五种AD角色的方法

    Server 2016DC查看五种AD角色的方法 https://jingyan.baidu.com/article/e8cdb32b87e4aa76042bad6c.html 听语音 原创 | 浏览 ...

  9. python 合并工作簿_Excel:快速合并多张表格或多个文件(工作簿)的数据(附Python代码)...

    Excel:快速合并多张表格或多个文件(工作簿)的数据(附Python代码) 现实工作中经常遇到将零散的原始数据合并统计的工作要求,如月度统计或年度统计等.原始数据的收集大多是按时间(如日期或小时)进 ...

最新文章

  1. 统计数据库每天的数据增长量的脚本
  2. mysql5.6安装51cto_MySQL 5.6 for Windows配置安装之解压缩版
  3. 关于Qt的事件循环以及QEventLoop的简单使用
  4. Python实现局域网(Socket)通信
  5. java中的Servlet
  6. redis原子性读写操作之LUA脚本和watch机制
  7. 第四季-专题9-Linux驱动开发前奏
  8. hdu 2986 Ballot evaluation (Simulation)
  9. P7 P8:训练神经网络
  10. bzoj 1602: [Usaco2008 Oct]牧场行走(暴力LCA)
  11. 0017-Spark的HistoryServer不能查看到所有历史作业分析
  12. spring @POSTConstruction注解的作用
  13. 外星人绝对不会入侵地球,看不上
  14. ppt图片文字嵌入_形状,文字填充图片教你做出好看的PPT
  15. java 反编译 报错_java反编译后再编译成class时提示缺少包
  16. cmd整人小程序(e~~,不要乱用)
  17. java分发_【Java】用注解实现分发器
  18. Java常用工具类-根据物流单号,从快递100中获取物流详细信息,包含发货,签收等
  19. python抢点_零基础SQL小白入门学习路线与书单
  20. 真_u3d程序员,基本脚本语法篇

热门文章

  1. switch语句能否作用在byte上,能否作用在long上,能否作用在String上?
  2. mysql三大范式 答案_数据库三大范式定义与理解
  3. Web API与JWT认证
  4. Jenkins + sonarqube集成实现发布代码审计
  5. ibatis中如何调用出参为游标的存储过程
  6. Android fill_parent、wrap_content和match_parent的区别
  7. 异常以及异常处理框架探析
  8. 技术QA:在 Outlook 2000 里为何不能取消“对已读回执的请求的使用”?
  9. java异常类型和基本处理原则_Java异常控制机制和异常处理原则
  10. Linux学习(九)---磁盘分区、挂载