《R语言数据挖掘》读书笔记:七、离群点(异常值)检测

   2023-03-08 学习力0
核心提示:第七章、异常值检测(离群点挖掘)概述:        一般来说,异常值出现有各种原因,比如数据集因为数据来自不同的类、数据测量系统误差而收到损害。根据异常值的检测,异常值与原始数据集中的常规数据显著不同。开发了多种解决方案来检测他们,其中包括

第七章、异常值检测(离群点挖掘)

概述:

        一般来说,异常值出现有各种原因,比如数据集因为数据来自不同的类、数据测量系统误差而收到损害。根据异常值的检测,异常值与原始数据集中的常规数据显著不同。开发了多种解决方案来检测他们,其中包括基于模型的方法(Model-based method)【也叫基于统计分布Distribution的】基于相似度的方法(proximity-based method)【基于偏差Deviation的】、基于距离的(Distance-based method)以及基于密度的方法等(density-based method)

        当考虑数据间的空间关系时,常用的检测方法有两种:基于图的异常检测(Graph-based outlier detection)基于多维空间的异常检测(Multi-dimensional space-based outlier detection)

        异常值检测方法的分类:

                    《R语言数据挖掘》读书笔记:七、离群点(异常值)检测

        异常值检测系统的输出可分为两类:一类是标记结果(labeled result),另一类是计分结果(scored result)【或者有序列表(an ordered list)】

1.统计方法和信用卡欺诈检测

    1.1 基于似然的异常值检测算法(基于统计方法或已有模型进行检测)

        异常值定义为不属于表示原始数据集的模型的对象,即该模型不会生成异常值。

        对于特定的数据集,在可采用的精确模型之间,有很多种可用的选择,比如高斯和泊松。如果使用错误的模型来检测异常值,那么正常的数据点可能会被错误地识别为异常值。除了应用单一的分布模型外,分布模型的混用也很实用。

        算法的核心思想:(参考风雪夜归子:https://blog.csdn.net/u013719780/article/details/48901183

        统计学方法是基于模型的方法,即为数据创建一个模型,并且根据对象拟合模型的情况来评估它们。大部分用于离群点检测的统计学方法都是构建一个概率分布模型,并考虑对象有多大可能符合该模型。离群点的概率定义:离群点是一个对象,关于数据的概率分布模型,它具有低概率。这种情况的前提是必须知道数据集服从什么分布,如果估计错误就造成了重尾分布。异常检测的混合模型方法:对于异常检测,数据用两个分布的混合模型建模,一个分布为普通数据,而另一个为离群点。

        聚类和异常检测目标都是估计分布的参数,以最大化数据的总似然(概率)。聚类时,使用EM算法估计每个概率分布的参数。然而,这里提供的异常检测技术使用一种更简单的方法。初始时将所有对象放入普通对象集,而异常对象集为空。然后,用一个迭代过程将对象从普通集转移到异常集,只要该转移能提高数据的总似然(其实等价于把在正常对象的分布下具有低概率的对象分类为离群点)。(假设异常对象属于均匀分布)。异常对象由这样一些对象组成,这些对象在均匀分布下比在正常分布下具有显著较高的概率。

        优缺点:(1)有坚实的统计学理论基础,当存在充分的数据和所用的检验类型的知识时,这些检验可能非常有效;(2)对于多元数据,可用的选择少一些,并且对于高维数据,这些检测可能性很差。

    1.2 信用卡欺诈检测

        对于信用卡欺诈检测,主要包括两个应用,信用卡欺诈性申请和信用卡欺诈性使用。欺诈表示信用卡特定使用者的平均使用量行为异常,即用户的交易记录异常。

        这种异常值在统计上表示信用卡被盗用,在这种情形下,异常值的一些例子包括购买率高和非常高的付款额等。

        付款的地点、用户以及背景都是数据集中的可能属性。聚类算法是可能的解决方案。

2.基于邻近度的方法和活动监控——涉及手机的欺诈检测

    两种主要的基于邻近度的方法基于距离的基于密度的异常值检测算法。

    基于邻近度的方法:如果它远离大部分点,那么这一个对象是异常的。这种方法比统计学方法更一般、更容易使用,因为确定数据集的有意义的邻近性度量比确定它的统计分布更容易。一个对象的离群点得分由到它的k-最近邻的距离给定。离群点得分对k的取值高度敏感。如果k太小(例如1),则少量的邻近离群点可能导致较低的离群点得分;如果K太大,则点数少于k的簇中所有的对象可能都成了离群点。为了使该方案对于k的选取更具有鲁棒性,可以使用k个最近邻的平均距离。

    优缺点:(1)简单;(2)缺点:基于邻近度的方法需要O(m2)时间,大数据集不适用;(3)该方法对参数的选择也是敏感的;(4)不能处理具有不同密度区域的数据集,因为它使用全局阈值,不能考虑这种密度的变化。

    基于距离算法详细解析(2.1-2.3): https://max.book118.com/html/2018/0708/6000102233001204.shtm

    2.1 NL算法

        嵌套-循环(Neted-Loop,NL)算法

        主要思想:假设N是数据集中的对象数,缓冲区的大小为数据集大小的B%,算法将整个缓冲区分成两个阵列,分别称为第一阵列和第二阵列。将数据集中的数据划分成块,每块大小为0.5B%。对象以块为单位读入阵列中,然后直接计算数据对象间的距离。第一阵列中的每个对象都有一个计时器,用于记录对象dmin邻域内的对象数目。某个计数器的值一旦大于一个异常的dmin邻域内最多对象数目M=N(1-pct),该计数器停止计数。

        NL算法具体步骤(摘自上面网址,因为要找,所以直接贴出来)

        《R语言数据挖掘》读书笔记:七、离群点(异常值)检测《R语言数据挖掘》读书笔记:七、离群点(异常值)检测

        

    基于单元的算法分为两个:FindAllOutsM算法和FindAllOutsD算法

    2.2 FindAllOutsM算法

        此算法适用于检测存储于主存的数据集中的异常。

        FM算法使用了性质1~性质4(具体4个性质看上文链接)来检测异常和非异常,这种检测是以单元-单元为基础的,而不是以对象-对象为基础的,这样的目的将大量不可能是异常的对象排除,只有不满足性质4(的小性质)的单元才会进行对象-对象之间的处理。

    2.3 FindAllOutsD算法

        此算法适用于处理大型、磁盘数据集。

        FD算法的方法是挑选对象子集保存在主存中,将磁盘上的数据页分类。各类数据页按一定顺序读入,从而使读页次数最小化。被挑选的子集由映射到白色单元中的对象构成。这些对象称为白色对象,他们需要进行对象-对象的计算。白色单元中的对象数目被限定在M(判断是否异常的标准)以内。

    2.4 基于距离的算法(主要是上面的两种:NL算法+基于单元的算法)

    2.5 Dolphin算法(基于距离的算法)

        (网络上资料很少,暂不记录)

    2.6 活动监控和手机欺诈检测

        异常值检测的目的就是找到源数据集中不符合标准行为的模式。这里的数据集包含呼叫记录以及在于呼叫记录中的模式。

        对于每一个特定的领域,开发了许多特殊的算法。手机滥用称为手机诈骗。研究的主题就是呼叫活动或者呼叫记录。相关的属性包括但不限于,呼叫持续时间、呼叫城市、呼叫日以及各种呼叫服务的比率。

3.基于密度的方法和入侵检测

    异常值检测和表示(LOF、LRD等概念和应用在链接内有很清晰的表述): https://www.cnblogs.com/bigmonkey/p/11052019.html

    这里使基于LOF(Local Reachability Density,LRD 局部可达密度)、LRD(Local Outlier Factor,LOF 局部异常因子)等概念的异常值形式化的正式定义。一般来说,异常值是指一个数据点偏离其他数据点太多以致它似乎不是来自相同的分布函数,而其他数据点都是来自相同的分布函数。

    3.1 OPTICS-OF算法

        该算法利用了 squeezer 算法对矩阵进行分析

        相关资料没有,论文也没有找到将此算法的,但是找到了一个《基于OPTICS和IncLOF的异常数据挖掘算法》的论文。

        有兴趣可以直接百度。

    3.2 高对比度子空间算法(High Contrast Subspace,HiCS)

        具体参看江苏大学的一篇硕士学位论文(讲的很多,很全面):基于高对比性子空间的离群点挖掘算法研究》

    3.3 入侵检测

                                    《R语言数据挖掘》读书笔记:七、离群点(异常值)检测

4.基于聚类的方法和入侵检测

    基于聚类算法的异常值检测技术的策略专注于数据对象和类之间的关系。

    4.1 层次聚类检测异常值

        使用层次聚类算法的异常值检测基于k最近邻图

        (具体参看前面的第四章的kNN算法)

    4.2 基于k均值的算法

        使用k均值算法的异常值检测的具体过程:

        阶段一、数据准备

            ①应该调整目标观测值和属性以便提高k均值聚类算法的结果和性能的准确性。

            ②如果原始数据集有缺失数据,那么必须对它们处理。将EM算法估计的最大似然数据作为输入来填补缺失数据。

        阶段二、异常值检测程序

            ①应该确定k值以便运行k均值聚类算法。确定合适的k值要参考立方聚类准则(Cubic Clustering Criterion)的值。

            ②k均值聚类算法根据所确定的k值运行。完成后,专家检查聚类结果中的外部和内部异常值。如果其他组的异常值的消除更有意义,那么他就停止该程序。如果其他组需要重新计算,那么他就再次运行k均值聚类算法,但不包括已检测的异常值。

        阶段三、审查和验证

            上一阶段的结果只是这个阶段的一个候选结果。通过考虑领域知识,可以找到真正的异常值。

    4.3 ODIN算法

        使用入度数的ODIN算法(indegree number)的异常值检测基于k最近邻图

        算法基本过程:设置T入度阈值

        对S进行计算生成KNN图,对于图内的节点i,如果节点i的入度小于阈值T,则标记此节点为离群点

5.基于分类的方法和监控网络服务器的性能

    分类算法可以用来检测异常值。普通的策略仅针对训练数据集中的正常数据点训练一类模型,没有被该模型接受的任何数据点都表及为异常值。

    5.1 OCSVM算法

        一类支持向量机(One Class SVM,OCSVM)算法将输入数据投影到高维特征空间。随着该过程的进行,它反复发现最大间隔超平面。超平面(hyperplane)定义在高斯再生核Hilbert空间(Gaussian reproducing kernel Hilbert space)中,它最好地将训练数据从原始数据中分离出来。

        详细算法解析(引自知乎习翔宇): https://zhuanlan.zhihu.com/p/32784067

    5.2 一类最近邻算法

        该算法基于k最近邻算法。

    5.3 监控网络服务器的性能

        网络服务器性能测试对于业务和操作系统管理是非常重要的。这些测试的形式可以是CPU使用率、网络带宽和存储等。

        数据集成来自各种渠道,比如基准数据、日志等。在网络服务器监控期间出现的异常值类型有点异常值(point outlier)、下文异常值(contextual outlier)和集体异常值(collective outlier)。

6.文本的新奇性检测、话题检测与上下文异常值挖掘

    6.1 条件异常值检测算法(Conditional Anomaly Detection,CAD)

    6.2 文本的新奇性检测与话题检测

        异常值检测的一个应用就是从来自报纸的文档或者文章中找出新奇的话题。主要检测包括观点检测,这主要是从很多观点中找出一个不寻常的观点。

7.空间中的集体异常值

    给定一个数据集,如果相关数据实例的集合相对整个数据集是异常的,那么就将他们定义为集体异常值。

    7.1 路径异常值检测算法(Route Outlier Detection,ROD)

        网络上几乎没有提到的

    7.2 集体异常值的特征

        集体异常值表示与输入数据集相对比不正常的数据集合,作为主要特征,只有同时出现的数据集合才将是集体异常值,但该集合中的具体数据本身不会与绝对不是异常值的数据集合中的其他数据一起出现。集体异常值的另一个特征是它可以是上下文异常值。集体异常值可能是序列数据、空间数据等。

8.高维数据中的异常值检测

    高维数据中的异常值检测有一些特征,使得它与其他异常值检测问题不同。

    8.1 Brute-Force算法(蛮力算法)

        匹配效果较好,但是速度慢

        参考解析: https://www.cnblogs.com/coder2012/p/3279916.html

    8.2 HilOut算法

        这个网上资料甚少。

        在这里推荐一篇硕士论文:高维数据空间中离群点检测算法的研究》——吴晓燕(知网上有,可以去搜索学习一下)

        这篇文章对离群点的挖掘给出了比较详细的介绍,尤其是对高维空间的离群点挖掘作了大量介绍,也给出了一些算法,感兴趣可以学习。

 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 拓端tecdat|R语言VAR模型的不同类型的脉冲响应
    原文链接:http://tecdat.cn/?p=9384目录模型与数据估算值预测误差脉冲响应识别问题正交脉冲响应结构脉冲反应广义脉冲响应参考文献脉冲响应分析是采用向量自回归模型的计量经济学分析中的重要一步。它们的主要目的是描述模型变量对一个或多个变量的冲击的演化
    03-16
  • Visual Studio 编辑R语言环境搭建
    Visual Studio 编辑R语言环境搭建关于Visual Studio 编辑R语言环境搭建具体的可以看下面三个网址里的内容,我这里就讲两个问题,关于r包管理和换本地的r的服务。1.r包管理:Ctrl+72.R本地服务管理:Ctrl+9Visual Studio R官方帮助文档(中文): https://docs
    03-16
  • 拓端tecdat|R语言代写实现向量自回归VAR模型
    原文链接:http://tecdat.cn/?p=8478 澳大利亚在2008 - 2009年全球金融危机期间发生了这种情况。澳大利亚政府发布了一揽子刺激计划,其中包括2008年12月的现金支付,恰逢圣诞节支出。因此,零售商报告销售强劲,经济受到刺激。因此,收入增加了。VAR面临的批
    03-16
  • [译]用R语言做挖掘数据《五》 r语言数据挖掘简
    一、实验说明1. 环境登录无需密码自动登录,系统用户名shiyanlou,密码shiyanlou2. 环境介绍本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到程序:1. LX终端(LXTerminal): Linux命令行终端,打开后会进入Bash环境,可以使用Linux命令2. GVim:非常好
    03-08
  • 拓端tecdat|Mac系统R语言升级后无法加载包报错 package or namespace load failed in dyn.load(file, DLLpath = DLLpath, ..
    拓端tecdat|Mac系统R语言升级后无法加载包报错
    问题重现:我需要安装R软件包stochvol,该软件包 仅适用于3.6.0版的R。因此,我安装了R(3.6.0 版本),并使用打开它 RStudio。但是现在  ,即使我成功 使用来 安装软件包,也无法加载任何库 。具体来说,我需要加载的库是stochvol  ,Rcpp和 caret
    03-08
  • 拓端数据tecdat|R语言k-means聚类、层次聚类、主成分(PCA)降维及可视化分析鸢尾花iris数据集
    拓端数据tecdat|R语言k-means聚类、层次聚类、
    原文链接:http://tecdat.cn/?p=22838 原文出处:拓端数据部落公众号问题:使用R中的鸢尾花数据集(a)部分:k-means聚类使用k-means聚类法将数据集聚成2组。 画一个图来显示聚类的情况使用k-means聚类法将数据集聚成3组。画一个图来显示聚类的情况(b)部分:
    03-08
  • 拓端数据tecdat|R语言中实现广义相加模型GAM和普通最小二乘(OLS)回归
    拓端数据tecdat|R语言中实现广义相加模型GAM和
    原文链接:http://tecdat.cn/?p=20882  1导言这篇文章探讨了为什么使用广义相加模型 是一个不错的选择。为此,我们首先需要看一下线性回归,看看为什么在某些情况下它可能不是最佳选择。 2回归模型假设我们有一些带有两个属性Y和X的数据。如果它们是线性
    03-08
  • 拓端数据tecdat|R语言时间序列平稳性几种单位根检验(ADF,KPSS,PP)及比较分析
    拓端数据tecdat|R语言时间序列平稳性几种单位根
    原文链接:http://tecdat.cn/?p=21757 时间序列模型根据研究对象是否随机分为确定性模型和随机性模型两大类。随机时间序列模型即是指仅用它的过去值及随机扰动项所建立起来的模型,建立具体的模型,需解决如下三个问题模型的具体形式、时序变量的滞后期以及随
    03-08
  • 拓端tecdat|R语言风险价值VaR(Value at Risk)和损失期望值ES(Expected shortfall)的估计
    拓端tecdat|R语言风险价值VaR(Value at Risk)
    原文链接: http://tecdat.cn/?p=15929 风险价值VaR和损失期望值ES是常见的风险度量。首先明确:时间范围-我们展望多少天?概率水平-我们怎么看尾部分布?在给定时间范围内的盈亏预测分布,示例如图1所示。  图1:预测的损益分布 给定概率水平的预测的分
    03-08
  • 拓端tecdat|R语言代写基于copula的贝叶斯分层混合模型的诊断准确性研究
    拓端tecdat|R语言代写基于copula的贝叶斯分层混
    原文链接:http://tecdat.cn/?p=3060 在对诊断测试准确性的系统评价中,统计分析部分旨在估计测试的平均(跨研究)敏感性和特异性及其变异性以及其他测量。灵敏度和特异性之间往往存在负相关,这表明需要相关数据模型。由于用户,分析在统计上具有挑战性处理
    03-08
点击排行