数据挖掘中基于聚类的异常值检测方法
聚类分析是将一组数据对象划分为子集的过程。每个子集都是一个集群,使得对象彼此相似。从聚类分析得到的聚类集合可以称为聚类。例如:将零售市场中的客户划分为常客和新客户。
聚类的基本方法:
- 分区方法
- 分层方法
- 基于密度的方法
- 基于网格的方法
分区方法:
用于查找互斥的球形星团。它基于远程集群。它使用迭代移动技术来改进分区。为了表示集群的中心,我们可以使用均值或中心点。这对于中小型数据集非常有效。
分层方法:
创建数据对象的指定数据记录的层次分解。它们可以基于距离或密度和连续性。它们分为凝聚法和分割法。如果是这样,这是一个异常值。
基于密度的方法:
该方法是一种基于密度的方法,用于查找任意形状的集群。基于密度的方法的一般思想是只要密度超过某个阈值,就继续增长给定的集群。他们主要考虑排他簇,而不考虑泡沫簇。它们可以从全空间扩展到子空间聚类。
基于网格的方法:
在这里,我们将对象量化为形成网格结构的有限网格数量的单元。所有操作仅在网格结构上执行。这种方法的主要优点是处理时间更快并且与对象的数量无关。
检测异常值的基于集群的方法:
基于聚类的异常值检测方法假设正常数据对象属于大而密集的簇,而异常值属于小或稀疏的簇,或者不属于任何簇。基于聚类的方法通过提取对象和聚类之间的关系来检测异常值。一个对象是异常值,如果
- 该对象是否属于任何集群?如果不是,则将其识别为异常值。
- 物体和它最近的簇之间是否有很大的距离?如果是,则为异常值。
- 对象是小簇还是稀疏簇的一部分?如果是,那么该集群中的所有对象都是异常值。
检查异常值:
- 为了检查不属于任何集群的对象,我们使用基于密度的集群(DBSCAN)
- 为了检查离群点检测使用到最近集群的距离,我们使用 K-MEANS CLUSTERING (K-Means)
这个 K-Means 利用了一个比率
在哪里,
co 是离对象 o 最近的中心,并且
dist(o, co) 是 o 和 co 之间的距离
x 是 co 和 o 之间的平均距离
请注意,到目前为止,我们看到的每个程序都将单个对象项目检测为异常值,因为它们分别评估项目而不是信息集中的集群。然而,在一个庞大的信息集中,一些异常值可以进行比较并形成一个小集群。到目前为止所提到的程序都可以通过这种异常值的方式进行欺骗。
为了克服这个问题,第三种基于聚类的完全异常值检测方法识别出小的或稀疏的聚类,并将聚类中的项目也宣布为异常值。该方法的一个实例是 FindCBLOF 规则集,匹配如下。
1. 在信息集中找到簇,逐个输入,减少长度。这组规则假设信息因子的最大值不是异常值。它利用参数 α (0 ≤ α ≤ 1) 来区分大集群和小集群。任何包含至少一个百分比 α(例如,α = 90%)的信息集的集群都被视为“巨大的集群”。最后的集群被称为“小集群”。
2. 对于每个信息因子,分配一个基于集群的完全邻近异常因子(CBLOF)。对于一个属于一个巨大簇的因子,它的 CBLOF 是由簇的长度和因子与簇的相似度决定的。对于一个属于一个小簇的因子,它的 CBLOF 是由小簇的维度和因子与最近的大簇的相似度计算得出的。 CBLOF 以统计方式定义因子与集群之间的相似性,表示因子属于集群的机会。值越大,因子与聚类的可比性越强。 CBLOF 评级可以定位可能与任何聚类有一定距离的异常因素。此外,考虑到可能与任何大集群有一定距离的小集群以包含异常值。 CBLOF 排名最低的因素是可疑的异常值。为了检测小集群中的异常值,我们寻找基于集群的局部异常值因子。要找到 CBLOF,我们应该遵循以下步骤:
- 找到簇并按降序对它们进行排序。
- 对于每个集群,点会添加一个局部异常值因子。
- 如果对象 p 属于簇的较大部分,则 CBLOF = 簇大小与点与簇相似度的乘积。
- 如果对象 p 属于较小的对象,则 CBLOF = 聚类大小与点与最近的较大聚类之间的相似度的乘积。
如果必须在检测异常值之前发现集群,则基于集群的完全程序还会额外产生过多的计算费用。为了提高效率,已经提出了几种策略。例如,固定宽度聚类是一种线性时间方法,在一些异常值检测方法中使用。这个概念简单但有效。如果集群的中间在距因子的预定义距离阈值之内,则将因子分配给集群。如果无法将因子分配给任何当前集群,则会创建新集群。
基于集群的异常值检测的优势和劣势:
优点:基于聚类的异常值检测方法具有以下优点。首先,它们可以在不标记数据的情况下检测异常值,即它们是失控的。您处理多种类型的数据。您可以将集群视为数据的集合。一旦获得了聚类,基于聚类的方法只需将对象与聚类进行比较,即可判断该对象是否为异常值。这个过程通常很快,因为相比之下集群的数量通常很小。在对象总数中。
缺点:聚类异常值检测的弱点是其有效性,这在很大程度上取决于所使用的聚类方法。这些方法无法针对异常值检测进行优化。大型数据集的聚类技术通常很昂贵,这可能是一个瓶颈。