zoukankan      html  css  js  c++  java
  • 离群点检测

    离群点检测

    • 问题一:如何根据客户的消费记录记录检测是否为异常刷卡消费?
    • 问题二:如何检测是否有异常订单?
    • 这一类问题可以通过异常点来检测
    • 离群点检测是数据挖掘中重要的一部分,它的任务是发现与大部分其他对象显著不同的对象,大部分数据挖掘方法都将这种差异信息视为噪声而丢弃,然而在一些应用中,罕见的数据可能蕴含着更大的研究价值,
    • 在数据散步图中,因为离群点的属性值明显偏离期望的或常见的属性值,所以离群点检测也称偏差检测
    • 离群点检测已经被广泛应用于电信和信用卡的诈骗检测,贷款审批,电子商务,网络入侵和天气预报等领域,例如,可以利用离群点检测分析运动员的统计数据,以发现异常运动员.
    • 离群点的成因
      • 离群点的主要成因有:数据来源于不同的类,自然变异,数据测量和收集误差
    • 离群点的类型:
      • 离群点飞类表如下:
      • 分类标准
        分类名称
        分类描述
        从属性的个数 一维离群点和多维离群点 一个对象可能有一个或多个属性
        从数据类型 数值型离群点和分类型离群点 这是以数据集类型划分的
        从数据范围 全局离群点和局部离群点 从整体看,某些对象没有离群特征,但是从局部来看,却显示了一定的离群性.
      • 离群点检测方法
      • 离群点检测方法
        方法描述
        方法评估
        基于密度 考虑数据可能存在于不同密度区域这一事实,从基于密度观点分析,离群点是在低密度区域中的对象,一个对象的离群点得分是该对象周围密度的逆 给出了对象是离群点的定量度量,并且即使数据具有不同区域也能很好处理,大数据集不适用,参数选座位是困难的
        基于统计 大部分的基于统计的离群点检测方法是构建一个概率分布模型,并计算对象符合该模型的概率,把具有低概率的对象视为离群点 基于统计模型的离群点检测前提是必须直到数据集服从什么分布,对于高维数据,检验效果可能很差
        基于聚类 一种利用聚类检测离群点的方法是丢弃远离其他簇的小簇,另一种更系统的方法,首先聚类所有对象,然后评估对象属于簇的 程度(离群点得分) 基于聚类技术发现离群点可能是高度有效的;聚类算法产生的簇的质量对该算法产生的离群点的质量影响非常大.
        基于邻近度 通常可以在数据对象之间定义邻近性度量,把远离大部分点的对象视为离群点 简单,二维或三维数据可以做散点图观察,大数据集不适用,对于选择敏感,具有全局阈值,不能处理具有不同密度区域数据集
      • 基于统计模型的离群点检测方法需要满足统计学原理,如果分布已知,则检测可能非常有效,基于邻近度的离群点检测方法比统计学方法更一般,更容易使用,因为确定数据集有意义的邻近度量比确定它的统计分布更容易,基于密度的离群点检测与基于邻近度离群点检测密切相关,因为密度常用邻近度定义,一种是定义密度为到K个最邻近的平均距离的倒数,如果该距离小,则密度高,另一种是使用DBSCAN聚类算法,一个对象周围的密度等于该对象指定距离d内对象个数.
      • 基于模型的离群点检测方法
        • 通过估计概率分布的参数来建立一个数据模型.如果一个数据对象不能很好的嗯同该模型拟合,即如果它很可能不服从该分布,则它是一个离群点.
        • 一元正太分布中的离群点检测
        • 正太分布是统计学中最常用的分布之一.
        • 若随机变量x的密度函数φ(x) = 1 / (2π)1/2e-(x-u)2 / 2σ2(x€R),则称x服从正太分布,简称x服从正太分布N(μ,σ),其中参数μ和σ分别为均值和标准差
        • N(0,1)的数据对象出现在该分布的两边尾部的机会很小,因此可以用它作为检测数据对象是否是离群点的基础,数据对象落在3倍标准差中西想你区域之外的概率仅有0.0027
        • 混合模型的离群点检测
        • 这里先介绍一下混合模型,混合模型是一种特殊的统计模型,它使用若干统计分布对数据建模.每一个分布对应一个簇,而每个分布的参数提供对应的簇的描述,通常用中心和发散描述
        • 混合模型将数据看作从不同的概率分布得到的观测值的集合,概率分布可以是任何分布,但是通常是多元正太的,因为郑重类型的分布不难理解,容易从数学上进行处理,并且已经证明在许多情况下能产生好的结果,这种类型的分布可以对椭圆簇建模
        • 总的来说,混合模型书产生过程为:给定几个类型形同但参数不同的分布,随机地选取一个分布并由它产生一个对象.重复该过程m次,其中m是对象的个数
        • 具体的来讲,假定有K个分布和m个对象χ = {x1, x2, x3, ..., xm}.设第j个分布的参数为αj,并设A是所有参数的集合,即A = {α1, α2, ..., αk}.则P(xi | αj)是第i和对象来自j个分布的概率,选取第j个分布产生一个对象的概率由权值ωj(1 ≤ j ≤ K)给定,其中权值(概率)受限于其和为1的约束,即∑kj=1ωj = 1.于是,对象x的概率由一下公式给出:
          • P(x | A) = ∑kj=1ωjPj(x | θj)
        • 如果对象以独立的方式产生,则整个对象集的概率是每个个体对象xi的概率的乘积,公式如下:
          • P(x | α) = ∏mi=1P(xi | α) = ∏mi=1∑kj=1ωjPj(x | αj)
        • 对于混合模型,每个分布描述一个不同的组,即一个不同的簇,通过使用统计方法,可以由数据估计这些分布的参数,从而描述这些分布(簇).也可以识别那个对象属于那个簇,然而,混合模型只是给出具体对象属于特定簇的概率
        • 聚类时,混合模型方法假定数据来自混合概率分布,并且每个簇可以用这些分布之一识别,同样,对于离群点检测,用两个分布的混合模型建模,一个分布视为正常数据,另一个为离群点
        • 聚类和离群点检测的目标都是估计分布的参数,以最大化数据的总似然
        • 我们提供一种离群点检测常用的简单方法,先将所有数据对象放入正常数据集,这时离群点集为空集;再用一个迭代过程将数据对象从正常数据集转移到离群点集,该转移能提高数据的总似然.
          • 具体的才这样如下:
        • 假设数据集U包含来自两个该v分布的书对象;M是大多数(正常)数据对象的分布,而N是离群点对象分布.数据的总概率分布可以记作:
          • U(x) = (1-λ)M(x) + λN(x)其中, x是一个数据对象;λ€[0,1],给出离散群点的期望比例.分布M由数据估计得到,而分布N通常去均匀分布.设Mt和Nt分别为时刻t正常数据和离群点对象的集合,初始t=0,M0 = D,而N0 ≠ Φ.
          • 根据公式混合模型中公式P(x | A) = ∑kj=1ωjPj(x | αj)推导,再整个数据集的似然和对数似然分别由下面公式给出
            • Lt(U) = ∏xi € U Pu(xi) = ((1 - λ) | Mt | ∏xi € Mi PMi(xi))(λ | Nt | ∏xi €NiPNi(xi))
            • lnLt(U) = | Mt |ln(1-λ) + ∑xi € MilnPMi(xi) + | Nt |lnλ + ∑xi €NilnPNi(xi)
          • 其中PD, PMt, PNt分别是D,Mt, Nt的概率分布函数
          • 因为正常数据对象的数量比离群点对象的数量大很多,因此当一个数据对象移动大离群点集后,正常数据对象的分布变化不大,在这种情况下,每个正常数据对象的总似然的贡献保持不变,此外,如果假定离群点服从均匀分布,则移动到离群点集的每一个数据对象对离群点的似然贡献度一个固定的量,这样,当一个数据对象移动到离群点集时,数据总似然的改便粗略地等于该数据对象在均匀分布下的概率(用λ加权)减去该数据对象在正常数据点的分布下的概率(用1-λ加权).从而,离群点由这样一些数据对象组成.这样,数据对象在均匀分布下的概率比正常数据对象分布下的概率高
          • 在某些情况下时很难建立模型的.例如, 因为数据的统计分布未知或训练数据可用,在这种情况下,可以考虑其他不需要建立模型的检测方法.
    • 基于聚类的离群点检测方法
      • 聚类分析用于发现局部强相关的对象组,而异常检测用来发现不与其他对象强相关的对象,因此,聚类分析非常自然地可以用于离群点检测,
      • 丢弃远离其他簇的小簇
        • 一种利用聚类检测离群点的方法傻HI丢弃远离其他簇的小簇,通常,该过程可以简化为丢弃小于某个最小阈值的所有簇
        • 这个方法可以和其他任何聚类计数一期使用,但是需要最小簇大小和小簇与其他簇之间距离的阈值,而且这种方案对簇个数的选择高度敏感,使用这个方案很难将离群点得分附加到对象上
        • 聚类数 k =2, 可以直观的看出其中包含5个对象的小簇远离大部分对象,可以视为离群点
      • 基于原型的聚类
        • 基于原型的聚类时另一种跟系统的方法.首先聚类所有对象,然后评估对象属于簇的程度(离群点得分).在这种方法中,可以用对象到它簇中心的聚类来衡量属于簇的程度,特别的,如果删除一个对象导致该目标的显著改进,则可将该对象视为离群点,例如,在K均值算法中,删除远离其相关簇中心的对象能够显著的改进该簇的误差平方和
        • 对于基于原型的聚类,主要由两种方法评估对象属于簇的程度;一是度量对象到簇原型的距离,并用它作为该对象的离群点得分;二是考虑到簇具有不同的密度,可以度量簇到原型的相对距离,相对距离是点到质心的距离于簇中所有点到质心的距离中位数之比
          • 如果选择聚类簇数 K = 3,则对象A,B,C应分别属于距离他们最近的簇,但相对于簇内的其他对象,这3个点又分别远离各自的簇,所以有理由怀疑对象A,B,C是离群点
          • 诊断如下:
            • 进行聚类.选择聚类算法(如K-Means算法),将样本集聚为K簇,并找到各簇的质心
            • 计算各对象到它的最近质心的距离
            • 计算各对象到它最近质心的相对距离
            • 与给定的阈值作对比
          • 基于聚类的离群点的改进如下
            • 离群点对初始聚类的影响:通过聚类检测离群点,离群点会影响聚类的结果.为了处理该问题,可以使用方法:对象聚类,删除离群点,对象再次聚类(这个不能保证产生最优结果)
            • 还有一种更复杂的方法:取一组不能很好地拟合任何簇的特殊对象,这组对象代表潜在的离群点.随着聚类过程的进展,簇在变化,不再强调属于任何簇的特殊对象,这组对象代表潜在的离群点,随着聚类过程的进展,簇在变化,不再强调属于任何簇的对象被添加到潜在的离群点集合;测试当前该集合中的对象,如果它现在属于一个簇,就可以将它从潜在的离群点集合中移出,聚类过程结束时还留在该集合中的点被分类为离群点(这种方法也不能保证产生最优解,甚至不比前面的简单算法好,在使用相对距离计算离群点得分时,这个问题特别严重)
            • 对象是否被认为是离群点可能依赖于簇的个数(如K很大时的噪声簇).该问题特别严重的答案.一种策略是对于不同的簇个数重复该分析.另一种方法是找出大量的小簇,其方法如下:
              • 较小的簇倾向于更加凝聚;
              • 如果存在大量小簇时,一个对象时离群点,则它多半时一个真正的离群点
              • 不利的一面时一组离群点可能形成小簇,从而逃避检测.
  • 相关阅读:
    学就要学好 就要学明白
    URL的基础
    各种waf识别
    Linux命令行上的上传和下载文件命令
    Linux服务器安全加固(三)
    Linux服务器安全加固(二)
    Linux服务器安全加固(一)
    Centos7配置SNMP服务
    Windows Server 系统通用安全基线配置详细
    Windows Server 2016 部署AD域控制器及添加AD域控制器
  • 原文地址:https://www.cnblogs.com/ljc-0923/p/11788398.html
Copyright © 2011-2022 走看看