论文摘要
随着现实生活中人们要处理的数据量急剧增长,海量的数据以数据流形式广泛存在于各个领域中并伴随有数据按时间顺序到达、数据分布快速变化、数据量潜在无限的特点。许多学者通过扩展针对静态数据的经典聚类算法而提出针对数据流的聚类算法,这些算法大多采用集中式的策略,需要获取一些先验知识(如类簇数目等)才能完成聚类,然而用户无法预知数据分布从而无法给出与实际相符的先验知识,因而该类算法无法获得良好的聚类效果。本文利用群智能的分布性、鲁棒性和可扩展性等优点采用多智能体来解决数据流聚类问题,首先对基于多智能体的聚类算法(FClust)进行改进而提出针对静态数据的多智能体聚类算法(AIFClust),该算法中具有和鸟群个体相同行为规则的智能体(agent)与邻居智能体相互影响,通过智能体自身的运动作用于生存环境--可视化面板,最终智能体代表的数据聚集成簇,且整个聚类过程为一个可视化过程加强了算法的用户体验。通过改进后算法与原算法的对比实验表明:改进智能体之间作用力的IFClust算法提高了算法的聚类质量并增强了算法发现类簇的能力,增加对智能体向心力作用的AFClust算法加快了算法的收敛速度而且增强了算法的稳定性,综合两种改进方案的AIFClust算法则同时继承了这两种算法的优势表现出了比FClust算法更优的聚类性能。通过对AIFClust算法与蚁群聚类算法及经典K-means算法的对比实验表明:AIFClust算法发现类簇数目的能力比蚁群聚类算法更强且聚类结果的准确率与K-means算法相当。鉴于AIFClust算法在静态数据聚类问题中表现出的良好性能,本文对AIFClust算法进行扩展运用于存在级不确定性数据流的聚类问题上而提出基于多智能体的数据流聚类算法(FClustStream)。该算法采纳数据流聚类算法中经典的二层聚类模型,将聚类过程分为在线-离线两个阶段:算法在线阶段维护核心agent缓冲区和潜在agent缓冲区,缓冲区内存储的智能体通过概率引力作用来吸收流入的数据点并通过不确定聚类特征来概括数据信息以此形成微簇,同时算法实时更新这两个缓冲区,将过期的智能体删除并保证具有较大权值的智能体储存在核心agent缓冲区中;算法离线阶段则对核心agent缓冲区的智能体进行AIFClust聚类。通过对FClustStream算法和EMicro算法的对比实验表明,采用分布式群智能聚类方案的FClustStream算法比采用集中处理方式的EMicro算法具有更快的处理速度,在未知类簇数目的情况下能获得更紧凑的聚簇和更合理的聚类结果,且算法具备可扩展性。