学习笔记:数据异常检测

1、数据异常检测:

1.1、数据异常种类:

     1、点异常:少数个体是异常的而多少数据是正常的,大多数数据由于数据采样设备的问题,导致产生个别异常数据

     2、条件异常:是在特定情况下是异常的而在大多数情况下是正常的,这个判断需要根据外界条件辅助判断,

     3、群体异常:个体本身可能正常,但处于异常子集中而整体异常

1.2、常用检测方法

 1.2.1.基于统计的方法

         基本思想是学习一个拟合给定数据集的生成模型,然后识别该模型低概率区域中的对象,把它们作为异常点

 1.2.2.基于线性模型

        主要的方法有:PCA主成分分析:将高维的数据映射到低维的空间,保留原始的主要特征,从而检测出异常点

  1.2.3.基于邻近度的方法

基于统计学的方法(3天)

统计学的方法基本思想是学习一个拟合给定数据集的生成模型,然后识别该模型低概率区域中的对象,把它们作为异常点

学习目标:

  • 掌握基于高斯分布的异常检测方法
  • 理解非参数异常检测方法
  • 掌握HBOS算法

1基于高斯分布的异常检测方法

大部分异常检测算法都可以被认为是一种估计相似度,无论是通过密度、距离、夹角或是划分超平面,比如最简单的K近邻,一个样本和它第k个近邻的距离就可以被当做是异常值;

基于密度分析如LOF 、LOCI和LoOP主要是通过局部的数据密度来检测异常

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

data = np.random.randn(5000) * 20 + 20
sns.boxplot(data=data)
plt.show()

制作箱型图,箱线图对数据分布做了一个简单的统计可视化,利用数据集的上下四分位数(Q1和Q3)、中点等形成。异常点常被定义为小于Q1-1.5IQR或大于Q3+1.5IQR的那些数据

2、非参数的方法:

直方图是一种频繁使用的非参数统计模型,可以用来检测异常点。该过程包括如下两步:

步骤1:构造直方图。使用输入数据(训练数据)构造一个直方图。该直方图可以是一元的,或者多元的(如果输入数据是多维的)。

尽管非参数方法并不假定任何先验统计模型,但是通常确实要求用户提供参数,以便由数据学习。例如,用户必须指定直方图的类型(等宽的或等深的)和其他参数(直方图中的箱数或每个箱的大小等)。与参数方法不同,这些参数并不指定数据分布的类型。

步骤2:检测异常点。为了确定一个对象是否是异常点,可以对照直方图检查它。在最简单的方法中,如果该对象落入直方图的一个箱中,则该对象被看作正常的,否则被认为是异常点。

对于更复杂的方法,可以使用直方图赋予每个对象一个异常点得分。例如令对象的异常点得分为该对象落入的箱的容积的倒数。

使用直方图作为异常点检测的非参数模型的一个缺点是,很难选择一个合适的箱尺寸。一方面,如果箱尺寸太小,则许多正常对象都会落入空的或稀疏的箱中,因而被误识别为异常点。另一方面,如果箱尺寸太大,则异常点对象可能渗入某些频繁的箱中,因而“假扮”成正常的。

基于角度的方法:

从图中看出它的主要思想上通过边角的关系将一些处于边际,远离中心的异常点找出,A点没有被连线全部包围可判定为异常点,而B点能够被连线包围,判定为正常点。

 

3、HBOS

BOS全名为:Histogram-based Outlier Score。它是一种单变量方法的组合,不能对特征之间的依赖关系进行建模,但是计算速度较快,对大数据集友好。其基本假设是数据集的每个维度相互独立。然后对每个维度进行区间(bin)划分,区间的密度越高,异常评分越低。

1.为每个数据维度做出数据直方图。对分类数据统计每个值的频数并计算相对频率。对数值数据根据分布的不同采用以下两种方法:

  • 静态宽度直方图:标准的直方图构建方法,在值范围内使用k个等宽箱。样本落入每个桶的频率(相对数量)作为密度(箱子高度)的估计。时间复杂度:$O(n)$

  • 2.动态宽度直方图:首先对所有值进行排序,然后固定数量的$\frac{N}{k}$个连续值装进一个箱里,其中N是总实例数,k是箱个数;直方图中的箱面积表示实例数。因为箱的宽度是由箱中第一个值和最后一个值决定的,所有箱的面积都一样,因此每一个箱的高度都是可计算的。这意味着跨度大的箱的高度低,即密度小,只有一种情况例外,超过k个数相等,此时允许在同一个箱里超过$\frac{N}{k}$值。

    时间复杂度:$O(n\times log(n))$

2.对每个维度都计算了一个独立的直方图,其中每个箱子的高度表示密度的估计。然后为了使得最大高度为1(确保了每个特征与异常值得分的权重相等),对直方图进行归一化处理。最后,每一个实例的HBOS值由以下公式计算:

$$ H B O S(p)=\sum_{i=0}^{d} \log \left(\frac{1}{\text {hist}_{i}(p)}\right) $$

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值