异常检测是数据挖掘中的一个过程,涉及识别一系列数据中的异常值。此过程也称为异常值分析。在有监督的异常检测中,可以将数据标记为“正常”或“异常”,以便可以开发模型并将这些模型应用于新数据。在无监督机器学习中,可以通过利用历史数据对未标记数据进行异常检测,分析值的概率分布,然后确定新值是否不太可能,使其成为异常。
可以对单个变量(这称为单变量异常检测)以及变量组合(这称为多变量异常检测)进行异常检测。
异常检测基本假设
- 数据中很少出现异常。
- 异常和正常实例的特征存在显着差异。
什么是数据异常?
在数据集中,不符合预期数据模式的事件,被称为异常。异常本质上是对常规业务的偏离。但异常不一定是好事或坏事,只是代表偏离了正常情况下的状态。
异常的类型有哪些?
基本上存在三种类型的异常。它们是更新异常、删除异常和插入异常。
1.更新异常:数据冗余和部分更新导致更新异常。
2.删除异常:是指由于删除其他数据而导致数据意外丢失。
3.插入异常:当由于数据库中不存在某些其他数据而无法将数据添加到数据库时,就会出现插入异常。
异常检测有什么用?
异常检测可用于多种用途。这里有3个:
- 提高应用程序性能。
- 提高产品质量。
- 增强用户体验。
如何识别异常?
最简单的识别方法是通过统计标记偏离分布的中位数、平均值、众数和数量的数据点。而本文介绍基于机器学习的方法来识别异常:
基于密度的异常检测
这种方法基于k-最近邻算法。它假设正常数据点位于密集邻域周围,而异常数据点位于很远的地方。它涉及在分数的帮助下评估最近的一组数据点。该分数可以是欧几里得距离或其他度量。这取决于数据类型是分类的还是数值的。它们可以分为两种算法:k-最近邻(kNN)和数据的相对密度,也就是局部异常因子(LOF)。
基于聚类的异常检测
聚类是无监督学习中非常流行的概念。它假设相似的数据点往往属于相似的集群(组),由它们与局部质心的距离决定。k-means聚类算法创建“k”个相似的数据点聚类,从这些集群中掉出的数据实例可以被认为是异常。
基于支持向量机的异常检测
支持向量机(SVM)也可用于异常检测。OneClassCVM等扩展可用于无监督问题中的异常检测。该算法学习一个软边界以在训练集中创建正常数据点的集群,然后利用测试实例来检测落在学习区域之外的异常。