(十一) 异常检测分析

此部分内容来自对《Python数据分析与数据化运营》4.5节 异常检测 的读书笔记。
数据中的异常数据通常被认为是异常点、离群点或孤立点,特点是这些数据的特征与大多数数据不一致,呈现出异常的特点,检测出这些数据的方法称为异常检测
常用的异常检测方法分为基于统计的异常检测方法(如基于泊松分布、正态分布等分布规律找到异常分支点)、基于距离的异常检测方法(如基于K均值找到离所有分类最远的点)、基于密度的离群检测方法、基于偏移的异常检测方法、基于时间序列的异常检测方法。
异常检测常用于异常订单识别、风险客户预警、黄牛识别、贷款风险识别、欺诈检测、技术入侵等针对个体的分析场景。

12.1 异常检测中的“新奇检测模式”

1.离群点检测
大多数场景下我们定义的异常数据都属于离群点数据,离群点检测的训练数据集中包含“离群点”数据,对这些数据训练完之后再在新的数据集中寻找异常数据。
2.新奇检测
所谓新奇检测是识别新的或未知数据模式和规律的检测方法,这些规律和知识在已有机器学习系统的训练集中没有被发掘出来。
新奇检测主要应用于新的模式、主题、趋势的探索和识别。
新奇检测和异常检测有关,一开始的新奇点往往都以一种离群的方式出现在数据中,这种离群方式一般被认为是离群点,因此二者的检测和识别模式非常类似。但是,当一段时间之后,新奇数据一旦被证实为正常模式,新奇数据就不再属于异常值的范畴。

12.2 将数据异常与业务异常相分离

数据异常只是数据层面的离群分布,而这些离群分布未必都是业务意义上的“异常”,很多时候数据的异常是对特殊运营状态的反映,因此属于数据异常单业务正常的范畴。

12.3 面临维度灾难时,异常检测可能会失效

当原始数据集的维度非常多时,普通的异常检测方法可能会失效,原因是随着维度的增加,数据之间的相似程度将严重受到维度数量的影响。
解决高维空间下的异常检测问题,通常有三种思路:

  • 扩展现有的离群点检测模式
  • 发现子空间中的离群点
  • 对高维数据进行建模
    在异常检测面对高维数据集时,跟聚类遇到的问题非常类似。

12.4 异常检测的结果能说明异常吗

在做异常检测分析时,输出的结果是永辉是否异常的标签,如1,-1,这种标签只是客观上基于数据相似度或密度的识别结果。但是,即使在业务没有任何特殊动作导致的“假异常”的前提下,仍然无法判断结果是否真的异常。
异常检测的结果要根据实际情况,由业务介入做进一步筛查和审核。
在大多是场景下,通过非监督式方法实现的异常检测的结果只是用来缩小排查范围,为业务的执行提供更加精准和高效的执行目标而已。

Python异常分析

sklearn中提供了one-class SVM和EllipticEnvelope两种方法用于异常检测,前者基于libsvm实现的非监督式异常检测方法,可用于做高维度分布的评估;后者只能做基于高斯分布数据集的异常检测。

OneClassSVM
one-class SVM用于异常检测,它的基本原理是在给定的一组样本中,检测数据集的边界以便于区分新的数据点是否属于该类。它是基于密度检测的一种,属于无监督学习算法。one-class SVM属于SVM的一种,可用于高维数据的异常检测。

你可能感兴趣的:((十一) 异常检测分析)