Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用R语言进行异常检测

使用R语言进行异常检测

作者头像
小莹莹
发布于 2018-04-23 04:01:56
发布于 2018-04-23 04:01:56
2.3K0
举报

本文结合R语言,展示了异常检测的案例,主要内容如下:

(1)单变量的异常检测

(2)使用LOF(local outlier factor,局部异常因子)进行异常检测

(3)通过聚类进行异常检测

(4)对时间序列进行异常检测

单变量异常检测

本部分展示了一个单变量异常检测的例子,并且演示了如何将这种方法应用在多元数据上。在该例中,单变量异常检测通过boxplot.stats()函数实现,并且返回产生箱线图的统计量。在返回的结果中,有一个部分是out,它结出了异常值的列表。更明确点,它列出了位于极值之外的胡须。参数coef可以控制胡须延伸到箱线图外的远近。在R中,运行?boxplot.stats可获取更详细的信息。

如图呈现了一个箱线图,其中有四个圈是异常值。

如上的单变量异常检测可以用来发现多元数据中的异常值,通过简单搭配的方式。在下例中,我们首先产生一个数据框df,它有两列x和y。之后,异常值分别从x和y检测出来。然后,我们获取两列都是异常值的数据作为异常数据。

在下图中,异常值用红色标记为”+”

类似的,我们也可以将x或y为异常值的数据标记为异常值。下图,异常值用’x’标记为蓝色。

当有三个以上的变量时,最终的异常值需要考虑单变量异常检测结果的多数表决。当选择最佳方式在真实应用中进行搭配时,需要涉及领域知识。

使用LOF(local outlier factor,局部异常因子)进行异常检测

LOF(局部异常因子)是用于识别基于密度的局部异常值的算法。使用LOF,一个点的局部密度会与它的邻居进行比较。如果前者明显低于后者(有一个大于1 的LOF值),该点位于一个稀疏区域,对于它的邻居而言,这就表明,该点是一个异常值。LOF的缺点就是它只对数值数据有效。

lofactor()函数使用LOF算法计算局部异常因子,并且它在DMwR和dprep包中是可用的。下面将介绍一个使用LOF进行异常检测的例子,k是用于计算局部异常因子的邻居数量。下图呈现了一个异常值得分的密度图。

接着,我们结合前两个主成份的双标图呈现异常值。

在如上代码中,prcomp()执行了一个主成分分析,并且biplot()使用前两个主成分画出了这些数据。在上图中,x和y轴分别代表第一和第二个主成份,箭头表示了变量,5个异常值用它们的行号标记出来了。

我们也可以如下使用pairsPlot显示异常值,这里的异常值用”+”标记为红色。

Rlof包,对LOF算法的并行实现。它的用法与lofactor()相似,但是lof()有两个附加的特性,即支持k的多元值和距离度量的几种选择。如下是lof()的一个例子。在计算异常值得分后,异常值可以通过选择前几个检测出来。注意,目前包Rlof的版本在MacOS X和Linux环境下工作,但并不在windows环境下工作,因为它要依赖multicore包用于并行计算

通过聚类进行异常检测

另外一种异常检测的方法是聚类。通过把数据聚成类,将那些不属于任务一类的数据作为异常值。比如,使用基于密度的聚类DBSCAN,如果对象在稠密区域紧密相连,它们将被分组到一类。因此,那些不会被分到任何一类的对象就是异常值。

我们也可以使用k-means算法来检测异常。使用k-means算法,数据被分成k组,通过把它们分配到最近的聚类中心。然后,我们能够计算每个对象到聚类中心的距离(或相似性),并且选择最大的距离作为异常值。

如下是一个基于k-means算法在iris数据上实现在异常检测。

在上图中,聚类中心被标记为星号,异常值标记为’+’

对时间序列进行异常检测

本部分讲述一个对时间序列数据进行异常检测的例子。在本例中,时间序列数据首次使用stl()进行稳健回归分解,然后识别异常值。STL的介绍,请访问 http://cs.wellesley.edu/~cs315/Papers/stl%20statistical%20model.pdf.

在上图中,异常值用红色标记为’x’

讨论

LOF算法擅长检测局部异常值,但是它只对数值数据有效。Rlof包依赖multicore包,在Windows环境下失效。对于分类数据的一个快速稳定的异常检测的策略是AVF(Attribute Value Frequency)算法。

一些用于异常检测的R包包括:

extremevalues包:单变量异常检测

mvoutlier包:基于稳定方法的多元变量异常检测

outliers包:对异常值进行测验

来自数据分析之禅

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-10-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PPV课数据科学社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
R语言预处理之异常值问题
>>>> 一、问题 什么是异常值?如何检测异常值?请伙伴们思考或者留言讨论。 >>>> 二、解决方法 1. 单变量异常值检测 2. 使用局部异常因子进行异常值检测 3. 通过聚类的方法检验异常值 4. 检验时间序列数据里面的异常值 >>>> 三、R代码实现 1、单变量异常值检测 这一节主要讲单变量异常值检测,并演示如何将它应用到多元(多个自变量)数据中。使用函数boxplot.stats()实现单变量检测,该函数根据返回的统计数据生成箱线图。在上述函数的返回结果中,有一个参数out,它是由异常值组成的列
CDA数据分析师
2018/02/08
1.8K0
R语言预处理之异常值问题
一文读懂!异常检测全攻略!从统计方法到机器学习 ⛵
异常值是偏离数据集中大多数样本点的数据点。出现异常值的原因有很多,例如自然偏差、欺诈活动、人为或系统错误。不过,在我们进行任何统计分析或训练机器学习模型之前,对数据检测和识别异常值都是必不可少的,这个预处理的过程会影响最后的效果。
ShowMeAI
2022/11/29
4.1K0
一文读懂!异常检测全攻略!从统计方法到机器学习 ⛵
一文读懂异常检测 LOF 算法(Python代码)
本篇和大家介绍一个经典的异常检测算法:局部离群因子(Local Outlier Factor),简称LOF算法。
Python数据科学
2022/04/12
4.8K0
一文读懂异常检测 LOF 算法(Python代码)
深入机器学习系列之异常检测
今天要给大家介绍的是异常检测(Anomaly Detection), 它是机器学习的一个重要分支,实际应用领域广泛,更与我们的生活息息相关。那么什么是异常检测?其主要方法和目前所面临的技术难题有哪些?本文或许能提供一些参考。
数据猿
2019/07/19
9140
深入机器学习系列之异常检测
深入探索:使用Scikit-learn进行新颖性与异常值检测技术
在数据分析和机器学习中,区分数据中的正常观察值和异常观察值是一项重要任务。这种区分通常用于数据清洗和异常检测,以提高模型的准确性和鲁棒性。
用户3578099
2024/08/27
4570
深入探索:使用Scikit-learn进行新颖性与异常值检测技术
异常检测:探索数据深层次背后的奥秘《中篇》
真实数据集中不同维度的数据通常具有高度的相关性,这是因为不同的属性往往是由相同的基础过程以密切相关的方式产生的。在古典统计学中,这被称为——回归建模,一种参数化的相关性分析。
汀丶人工智能
2023/09/22
4640
异常检测:探索数据深层次背后的奥秘《中篇》
10分钟掌握异常检测
你可能已经注意到,一些不平衡分类的问题也经常使用异常检测算法来解决。例如,垃圾邮件检测任务可以被认为是一个分类任务(垃圾邮件比普通电子邮件少得多),但是我们可以用异常检测的方法实现这个任务。
deephub
2021/10/09
6510
10分钟掌握异常检测
异常检测算法在审计智能化的应用
引用MBA智库百科的原文:内部审计,是建立于组织内部、服务于管理部门的一种独立的检查、监督和评价活动,它既可用于对内部牵制制度的充分性和有效性进行检查、监督和评价,又可用于对会计及相关信息的真实、合法、完整,对资产的安全、完整,对企业自身经营业绩、经营合规性进行检查、监督和评价。
凯哥
2020/01/17
1.6K0
异常检测算法在审计智能化的应用
异常检测算法速览(Python代码)
异常检测是通过数据挖掘方法发现与数据集分布不一致的异常数据,也被称为离群点、异常值检测等等。
算法进阶
2022/06/01
9840
异常检测算法速览(Python代码)
机器学习中的异常检测手段
总体来讲,异常检测问题可以概括为两类:一是对结构化数据的异常检测,二是对非结构化数据的异常检测。
Bo_hemian
2020/09/10
1.1K0
机器学习中的异常检测手段
风控ML[14] | 风控中的异常检测原理与应用
今天来介绍一下风控中的异常检测,从最基础的概念开始讲起,因为本人对这块的内容平时工作也做得不多,更多滴偏向于“纸上谈兵”,有什么说得不对的地方,也欢迎各位朋友指正~谢谢。
Sam Gor
2022/04/12
3.3K0
风控ML[14] | 风控中的异常检测原理与应用
收藏!14 种异常检测方法总结
来源:宅码本文约7800字,建议阅读10分钟本文收集整理了公开网络上一些常见的异常检测方法(附资料来源和代码)。 本文收集整理了公开网络上一些常见的异常检测方法(附资料来源和代码)。不足之处,还望批评指正。 一、基于分布的方法 1. 3sigma 基于正态分布,3sigma准则认为超过3sigma的数据为异常点。 图1: 3sigma def three_sigma(s):     mu, std = np.mean(s), np.std(s)     lower, upper = mu-3*std
数据派THU
2022/06/29
1.3K0
收藏!14 种异常检测方法总结
干货 | 关于数据的异常检测,看这一篇就够了
束开亮,携程大市场部BI团队,负责数据分析与挖掘。同济应用数学硕士,金融数学方向,法国统计学工程师,主修风险管理与金融工程。
携程技术
2019/04/22
5.9K0
干货 | 关于数据的异常检测,看这一篇就够了
【sklearn | 6】无监督学习与聚类分析
在前几篇教程中,我们探讨了 sklearn 的基础、高级功能,异常检测与降维,时间序列分析与自然语言处理,模型部署与优化,以及集成学习与模型解释。本篇教程将专注于无监督学习和聚类分析,这在探索性数据分析和数据挖掘中非常重要。
颜淡慕潇
2024/07/24
2710
【sklearn | 6】无监督学习与聚类分析
14种异常检测方法汇总(附代码)!
今天给大家分享一篇关于异常检测的文章,重点介绍了14种公开网络上一些常见的异常检测方法(附资料来源和代码)。
小白学视觉
2022/12/27
3K0
14种异常检测方法汇总(附代码)!
异常检测与鲁棒学习
在机器学习和人工智能的应用中,异常检测(Anomaly Detection)和鲁棒学习(Robust Learning)是非常重要的研究领域,尤其在处理现实世界中的数据时,数据通常并不完美。离群点(Outliers)和噪声数据会对模型的性能产生显著影响,可能导致模型的过拟合或低泛化能力。因此,了解如何有效地识别和处理离群点,以及如何设计鲁棒模型来减少异常数据的影响,是机器学习领域的一项基本技能。
LucianaiB
2025/02/02
1460
教你用java实现时序数据异常检测(1)LOF-ICAD方法
我们这次着重介绍的是时序数据的异常检测, 我们来讨论讨论LOF方法, 并且给出相应的代码实现
Mezereon
2018/09/13
1.8K0
教你用java实现时序数据异常检测(1)LOF-ICAD方法
Python+Sklearn实现异常检测
离群检测和新颖性检测都用于异常检测,其中人们对检测异常或不寻常的观察感兴趣。离群检测也称为无监督异常检测,新奇检测称为半监督异常检测。
雾海梦曦
2023/02/06
1.3K0
【数据分析】异常值检测
什么是异常(outlier)?Hawkins(1980)给出了异常的本质性的定义:异常是在数据集中与众不同的数据,使人怀疑这些数据并非随机偏差,而是产生于完全不同的机制。聚类算法对异常的定义:异常是聚
陆勤_数据人网
2018/02/26
1.9K0
基于机器学习算法的时间序列价格异常检测(附代码)
异常检测也称为异常值检测,是一种数据挖掘过程,用于确定数据集中发现的异常类型并确定其出现的详细信息。 在当今世界,由于大量数据无法手动标记异常值,自动异常检测显得至关重要。 自动异常检测具有广泛的应用,例如欺诈检测,系统健康监测,故障检测以及传感器网络中的事件检测系统等。
量化投资与机器学习微信公众号
2019/02/26
6.3K0
相关推荐
R语言预处理之异常值问题
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档