1、什么是异常检测
异常检测(Outlier Detection),顾名思义,是识别与正常数据不同的数据,与预期行为差异大的数据。通俗的来说,就是发现与大部分对象不同的对象,也就是离群点,一般规定数据具有“正常”模型,而异常被认为是与这个正常模型的偏差。在实际应用中对异常的定义也是特定的。
识别如信用卡欺诈,工业生产异常,网络流里的异常(网络侵入)等问题,针对的是少数的事件。
1.1 异常的类别
点异常:指的是少数个体实例是异常的,大多数个体实例是正常的,例如正常人与病人的健康指标;
上下文异常:又称上下文异常,指的是在特定情境下个体实例是异常的,在其他情境下都是正常的,例如在特定时间下的温度突然上升或下降,在特定场景中的快速信用卡交易;
群体异常:指的是在群体集合中的个体实例出现异常的情况,而该个体实例自身可能不是异常,例如社交网络中虚假账号形成的集合作为群体异常子集,但子集中的个体节点可能与真实账号一样正常。
1.2 异常检测任务分类
有监督:训练集的正例和反例均有标签
无监督:训练集无标签
半监督:在训练集中只有单一类别(正常实例)的实例,没有异常实例参与训练
1.3 异常检测场景
-
故障检测
-
物联网异常检测
-
欺诈检测
-
工业异常检测
-
时间序列异常检测
-
视频异常检测
-
日志异常检测
-
医疗日常检测
-
网络入侵检测
2、异常检测常用方法
2.1 传统方法
2.1.1 基于统计学的方法
统计学方法对数据的正常性做出假定。**它们假定正常的数据对象由一个统计模型产生,而不遵守该模型的数据是异常点。**统计学方法的有效性高度依赖于对给定数据所做的统计模型假定是否成立。
异常检测的统计学方法的一般思想是:学习一个拟合给定数据集的生成模型,然后识别该模型低概率区域中的对象,把它们作为异常点。
即利用统计学方法建立一个模型,然后考虑对象有多大可能符合该模型。
假定输入数据集为 { x ( 1 ) , x ( 2 ) , . . . , x ( m ) } \{x^{(1)}, x^{(2)}, ..., x^{(m)}\} { x(1),x(2),...,x(m)},数据集中的样本服从正态分布,即 x ( i ) ∼ N ( μ , σ 2 ) x^{(i)}\sim N(\mu, \sigma^2) x(i)∼N(μ,σ2),我们可以根据样本求出参数 μ \mu μ和 σ \sigma σ。
μ =