Task2:基于统计学的方法
根据如何指定和学习模型,异常检测的统计学方法可以划分为两个主要类型:参数方法和非参数方法。
- 参数方法:假定正常的数据对象被一个以 Θ \Theta Θ 为参数的参数分布产生。
- 非参数方法:不假定先验统计模型,试图从输入数据确定模型。
参数方法
基于正态分布的一元异常点检测
- 一元数据:仅涉及一个属性或变量的数据。
- 正态分布:数据集{x(1), x(2), x(3),…, x(m)}服从正态分布,即x(i)~N(μ, σ2)。根本样本求出参数μ、σ。
- 根据概率密度函数计算数据点服从该分布的概率。正态分布的概率密度函数为
- 若计算出来的概率低于阈值,则认为该数据点是异常点。(阈值:在验证集上使得评估指标值最大的阈值)
- EG: 3σ法则检验异常点,异常点被定义为小于Q1-1.5IQR或大于Q3+1.5IQR的数据。代码如下:
supplement:numpy.random.randn(d0,d1,…,dn)
randn函数返回一个或一组样本,具有标准正态分布。
dn表格每个维度
返回值为指定维度的array
numpy.random.randn(50000)#生成50000个点
多元异常点检测
- 多元数据:涉及两个或多个属性/变量的数据。
- 检测的思想:把多元异常点检测转换为一元异常点检测。
- 各个维度的特征之间相互独立的情况下,将每一维度的概率密度函数连乘:
- 各个维度的特征之间有相关性,要用多元高斯分布:
使用混合参数分布
许多情况下:假定数据正态分布。
数据复杂时:假定数据是被混合参数分布产生。
非参数方法
例:使用直方图检测异常点。
直⽅图是⼀种频繁使⽤的⾮参数统计模型,可以⽤来检测异常点。
步骤如下:
- step1:构造直方图。
- step2:检测异常点。例如1:如果某个点落入直方图的一个箱子中,则该点被认为正常,否则异常。例如2:用直方图赋予每个对象一个异常点得分。
- shortcoming:很难选择合适的箱尺寸。
HBOS
HBOS:histogram-based outlier score
- 基本假设:数据集每个维度相互独立。
- 对每个维度进行区间(bin)划分,区间密度越高,异常评分越低。
- 算法流程:
- 1.为每个数据维度做出数据直方图。
- 2.每个维度都计算了一个独立的直方图,其中每个箱子的高度表示密度的估计。(对直方图做归一化处理)
- HBOS advantage:全局异常检测表现良好,比标准算法快
- HBOS disadvantage:不能检测局部异常值。