最小化局部边际的合并聚类算法(中篇)

ACMOM算法是一种合并聚类方法,旨在处理数据集中的噪声并构建系统树图。算法首先通过LOF检测孤立点,然后基于MkNN关系进行相似度合并,接着将孤立点分配到最近类簇,最后对剩余类簇使用ALINK算法合并。复杂度分析中,时间复杂度主要集中在k最近邻查询,空间复杂度与k最近邻列表等相关结构有关。实验表明ACMOM在聚类质量和系统树图表示上表现优越。
摘要由CSDN通过智能技术生成

作者:钱烽

三、合并聚类算法

基于定义2所提出的相似度定义,我们在图2中给出最小化局部边际的合并聚类算法详细执行过程.首先,针对数据集中可能存在的噪声数据,我们对所有样本点进行孤立点检测.然后,作为ACMOM算法的主要过程,我们采用基于MkNN关系的相似度对检测结果为非孤立的样本点进行合并聚类.接着,为了构建完整的系统树图,我们将其余孤立样本点赋予距离它最近的类簇.最后,对于不存在任何MkNN连接的少数剩余类簇集合,我们使用ALINK算法进行合并操作并输出系统树图形式的聚类结果.

84203c1b-5793-41ec-aaf4-228295ae3f68

该算法的具体执行步骤如下:

(1) 初始化基本类簇(第1~6行): 算法首先初始化类簇集合GS和孤立点集合OS为空集,然后遍历数据集中的样本点.为了避免噪声数据的影响,ACMOM算法对于每一个样本点都使用了LOF技术[28]来检测其是否为孤立点.其中,由于LOF检测也涉及样本点的最近k邻居计算,我们使用了相同的最近邻参数k值.对于检测结果为孤立点的样本点,我暂时将其加入孤立点集合OS中.而对于其余样本点,我们初始化每个样本点自成一类,并将它们加入到类簇集合GS中,使之成为系统树图的叶子节点.


(2) 合并最相似类簇对(第7~11行): 接着,算法开始执行合并操作.在每次合并操作开始时,ACMOM算法首先根据定义2更新所有可能的类簇间相似度,并从中找出最大值.对于满足相似度最大值的类簇对1ee57d92-fe71-42d5-a94c-a3d9067e36a05a2093e8-41c5-4fb2-9f4f-374eb1a4c18f,我们将其合并为一个新的类簇7364dc69-990a-4e29-b9c7-1075f6bff886,并在系统树图中将其赋为1ee57d92-fe71-42d5-a94c-a3d9067e36a05a2093e8-41c5-4fb2-9f4f-374eb1a4c18f的父亲节点.最后,我们在类簇集合6ee6dbe2-7f9e-4a3e-b414-8afca8730236中用新类簇7364dc69-990a-4e29-b9c7-1075f6bff886替换原来的子类簇1ee57d92-fe71-42d5-a94c-a3d9067e36a05a2093e8-41c5-4fb2-9f4f-374eb1a4c18f.ACMOM算法将不断重复上述合并操作直至任意类簇间相似度都为0或所有样本点都合并至同一类簇为止。

(3) 合并孤立样本点(第12~15行): 对于剩余的每个孤立样本点,ACMOM算法首先找到距离其最近的非孤立点邻居,然后将其合并至该邻居所在的类簇中.


(4) 返回合并聚类结果(第16、17行): 上述算法流程执行完毕后,如果所有的样本点都已合并至类簇集合GS中的唯一类簇,我们直接将其作为系统树图的根节点返回给用户.否则,我们使用ALINK算法对集合GS中的剩余类簇做进一步合并操作并返回最终的系统树图结果.为了保证一致性,我们使用类簇间的样本间距均值来记录所返回系统树图中的节点高度。

四、复杂度分析

本节中,我们将更加具体地描述ACMOM算法的实现细节,从而详细分析其时间复杂度和空间复杂度.4时间复杂度分析

准备工作: 为了计算类簇间相似度以及使用LOF技术对样本点进行孤立点检测,我们需要事先为每个样本点计算其最近k邻居集合.ACMOM算法通过构建k-d树结构来实现这一操作.根据文献[29,30]的描述,构建k-d树的时间复杂度为O(nlogn),而为任意样本点查找k个最近邻居需要O(dn1-1/d+k)时间.其中,n表示数据集中样本点的个数,spacer.gif表示样本点的维度.因此,为数据集中的n个样本点构建k最近邻列表的总体时间复杂度为O(dn2-1/d+kn).


算法步骤(1): 根据文献[28]的描述,在已知k最近邻列表的前提下对n个样本点进行LOF检测的时间复杂度为O(n).而将数据集中的所有样本点加入基本类簇集合GS或孤立点集合OS的时间复杂度也是O(n).因此,算法步骤(1)的总体时间复杂度是O(n).

算法步骤(2): 算法从O(n)个基本类簇开始,每次选择两个现有类簇合并为一个新类簇,执行过程最多包含O(n)次合并操作.在此之前,ACMOM算法通过扫描样本点的k最近邻列表来构建数据集的MKNN连接集.这需要O(kn)的时间复杂度.基于所得的连接集,我们为每个基本类簇保存一个哈希表结构[31],其中存储了与其相邻的类簇序号.与序号一起保存的还有参与类簇之间MKNN连接的边界样本点集合(即定义2中的PK和PL).这些操作可以通过扫描一遍MKNN连接集完成,因而时间复杂度也是O(kn).在每次进行合并操作时,我们需要找到满足相似度最大的类簇对.为了加速算法执行,我们将与每个类簇最相似的类簇序号以及对应相似度存储在一个最大堆结构[32]中.构建最大堆结构的时间复杂度是O(nlogn),而每次从其中查找满足最大相似度的类簇对仅需要常数项时间.在进行合并操作时,除了使用常数项时间将原有类簇的样本点合并至新的类簇外,我们还需要将原有类簇的邻居列表进行合并,并且更新其最相似邻居.由于这一列表存储在哈希表结构中,而类簇的平均邻居数为O(k),因而所需的时间复杂度也是O(k).此外,我们还需要更新与被合并类簇相邻的其他类簇.假设这些相关类簇的平均数量为24e61cca-db0e-4b9d-a37e-b5db77c4e847个,则对它们的邻居列表进行更新的时间复杂度为f1eb349f-23a0-41c9-8570-55b7e68ec3be.最后,在最大堆结构中更新这些相关类簇以及新合并类簇的最近邻信息需要1c73451f-f3d2-424e-89c5-b90bea4c8f56时间.综上所述,对数据集进行O(n)此合并操作的时间复杂度为a332c9fd-1982-4eb2-b49e-bdba51e2426a,这也是算法步骤(2)的总体时间复杂度.

算法步骤(3): 为了对每个孤立样本点查找其最近非孤立点邻居,我们首先在它的最近k邻居列表中进行搜索,这需要最多O(kn)时间.而对于剩余的孤立样本点,我们通过进一步查询k-d树进行判断.设这些剩余样本点的个数为8956b002-f855-4f27-ae6d-c7ad71c14b80,查询的最坏时间复杂度为140e8048-e98f-4935-b9c2-3c1e2ce06809.之后,将所有孤立样本点合并至最近类簇的时间复杂度为O(n).因而算法步骤

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值