关于数据的异常检测,看这一篇就够了 – 携程技术中心的文章 – 知乎
https://zhuanlan.zhihu.com/p/65023844
文章目录
-
-
- 前言
- 一、应用场景
- 二、检测方法
-
-
- 1、概率统计模型
- 2、机器学习方法
- 3、业务经验,逻辑规则
- 4、判定规则
-
- 三、实际应用
-
-
- 1、从3 Sigma准则说起
- 2、BOX-COX转化
- 3、幂律分布(Power Law Distribution)vs 正态分布(Normal Distribution)
- 4、回归分析
- 5、基于密度的方法
- 6、业务数据的时序监控
-
- 四、结束语
-
前言
制造厂商需要抽样检测流水线上生产的产品,数据公司同样也需要对自己的数据产品质量进行把控。检测的目的无非是及时发现产品或数据中的异常,从而修正偏差改善产品质量。
异常值在不同文献中有其不同的定义,通俗的说就是那些与其他观测值有显著偏差的观测点,有时也会称作是极端值、离群点或孤立点等,这些名词在数学的细分领域都有其不同的定义,这里不做区分。
异常值产生的原因主要是数据生成机制的不同,异常值本身不是一个贬义词,异常观测也会涵盖有用的信息,帮助分析师理解数据的分布,保证线上流程的稳健性。
一、应用场景
异常检测与监控的应用场景多样,主要包括以下:
1、ELT流程中的数据异常。ETL工程师在上层数据汇总过程中通常会考虑标记数据的极端值,比如单个用户的日pv数过千过万或单个用户周订单过百过千等,这将有助于数据分析师获取数据异常的先验信息。
2、特征工程中的数据异常。分箱操作是特征工程中常用的一种异常处理方式,在线性模型中,将变量分箱离散化可将极端值圈定在某一固定的组别,不仅能消除极端值对模型鲁棒性的影响,也能在线性性基础上引入非线性性。
5、欺诈检测。金融场景中的欺诈案例也属于异常数据,机器学习中有很多优秀的算法可用来支持欺诈检测。
6、其他场景中的异常检测和监控不一一列举。
二、检测方法
1、概率统计模型
概率给出总体的分布来推断样本性质,统计则从样本出发来验证总体分布的假设。所以概率统计模型需要我们去验证模型假设的正确性,比如概率分布是否正确,参数的设置是否合理。
2、机器学习方法
机器学习无外乎监督、非监督以及半监督学习方法等,比如常见的聚类,二分,回归。此类方法往往注重模型的泛化能力,而弱化概率统计中的假设检验。历史数据的异常如果已标注,那么二分类方法是适用的,但业务数据的异常大多没有显示的人工标注,无法应用监督学习。
3、业务经验,逻辑规则
业务经验的丰富以及对数据的敏感性能更加直接地帮助理解异常数据,在一些轻量级的任务中,配置简单的逻辑规则也能达到很好的检测效果。
4、判定规则
异常值的判定规则主要采用以下两种方式:
a)区间判定
给出一个阈值区间,实际观测落在区间之外则判定为异常。例如,在时间序列和回归分析中,预测值与真实值的残差序列便可构建这样一个区间。
b)二分判定
二分判定的前提是数据包含人工标注。异常值标注为1,正常值标注为0,通过机器学习方法给出观测为异常的概率。
三、实际应用
1、从3 Sigma准则说起
借助正态分布的优良性质,3σ准则常用来判定数据是否异常。由于正态分布关于均值μ对称,数值分布在(μ-σ,μ+σ)中的概率为0.6827,数值分布在(μ-3σ,μ+3σ)中的概率为0.9973。也就是说只有0.3%的数据会落在均值的±3σ之外,这是一个小概率事件。为了避免极端值影响到模型整体的鲁棒性,常将其判定为异常值并从数据中剔除。
第一四分位数 (Q1)、第二四分位数 (Q2,也叫“中位数”)和第三四分位数 (Q3)分别等于该样本中所有数值由小到大排列后第25%、第50%和第75%的数字。第三四分位数与第一四分位数的差距又称四分位距(interquartile range, IQR)。
2、BOX-COX转化
当原始数据的分布是有偏的,不满足正态分布时,可通过BOX-COX转化,在一定程度上修正分布的偏态。转换无需先验信息,但需要搜寻最优的参数λ。
3、幂律分布(Power Law Distribution)vs 正态分布(Normal Distribution)
除了常见的正态分布,还有一种极其重要却极易被忽略的分布-幂律分布。在日常的数据分析中,订单数据和浏览数据常呈现近似幂律分布。
下图展现的是 交 络中用户数和用户粉丝数的关系,可以看出拥有200(横轴)以上的粉丝的用户数(纵轴)占极少数,而拥有
柯克距离(Cook Distance)是统计分析中一种常见的距离,用于诊断各种回归分析中是否存在异常数据。较大的Cook距离表明从回归统计量和计算中排除个案之后,系数会发生根本变化
Cook距离表征了包含此观测点和剔除此观测点前后模型的拟合效果的差别,差别越大,此点对模型影响越大,可考虑删除,因为在一个稳健的模型中每个点对模型的影响都认为是均匀的。删除强影响点之后,橘色的曲线对大部分的点的拟合都比较满意。
5、基于密度的方法
在一维空间中的固有思维是较大或较小的数据会是异常,但是在高维空间中,数据是不能直接拿来比较大小的。仍以一维数据为例,考虑以下序列的异常情况:
{1,2,3,2,50,97,97,98,99}
50更有可能认为是异常或离群点,而非1或99。当数据分布的假设不是必要条件时,计算数据点的密度来判定异常也是一个行之有效的方法。
点的密度可有多种定义,但多数都会依赖距离的定义,多维空间的距离计算较为复杂,尤其当数据混入分类变量和连续数值变量的时候。以一个简单的密度方法为例,在LOF(Breunig,M., Kriegel, H., Ng, R., and Sander, J. (2000). LOF:identifying density-based local outliers.)算法中,数据的异常判定依赖于计算每个观测的局部离群因子。
离群因子表征了数据点与周围邻居点的密切程度,或者不合群的程度。因子值越大,其为异常点的可能性越大。上述一维序列的各点离群因子值如下左图,第5个点(50)对应的离群因子最高,可被判定是异常值。下右图是维基百科上一个二维空间的例子,根据局部离群因子同样可以识别出数据中的离群点。
T时刻基于[1, T-2]时间段内的数据建立模型或规则来判定T-1时刻数据的是否异常。为了保证规则和模型的稳健,对于历史的异常值往往会采用平滑的方式处理。
a、配置恒定阈值
数据无趋势性,近似平稳,可配置简单的恒定阈值。时刻T配置的恒定阈值是对历史数据的恒定,在T+1时刻,这个阈值会被新加入的数据更新。
c、监控差分序列
对原始序列作一阶差分,如果差分序列稳定,可对差分序列配置恒定阈值,从而判定原序列的异常情况。
原始序列:
d、时间序列分解法
如果业务数据既有趋势性又有周期性,可将时间序列模型运用于监控任务中,如Arima,STL,TBATS等时间序列模型。在STL鲁棒加权回归时间序列分解法中,模型通过加权最小二乘回归将原始序列分解成周期序列,趋势序列和残差序列。下图从上到下依次是原始序列,周期序列,趋势序列和残差序列。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!