论文部分内容阅读
在基于划分方法的聚类算法中,k-means算法因为简单易实现的特点而得到广泛的应用。然而它存在诸多的缺点特别是对于大规模数据不能进行有效的聚类分析。本文主要研究了如何在k-means算法中应用网格的思想,如何改进网格方法中存在的问题,以及如何改进k-modes聚类算法并如何将其应用到软件安全检测的问题。这些问题的研究在模式识别、数据分析、市场研究以及其它与聚类相关处理过程的分析中具有重要的意义。首先,本文提出了一种基于网格密度的改进聚类算法CABGD。在CABGD中,提出了网格中心密集度概念,通过计算网格中心密集度的值来识别网格内数据的分布,解决了传统网格算法中由于人为划分网格不当而导致聚类精度降低的问题。这种算法在聚类精度上优于传统基于网格的聚类算法。其次,提出了一种基于网格的改进的k-means聚类算法IKMG。将单个网格作为基本的处理单元,同时应用并进一步改进了中心密集度概念,并设计了一种新的数据结构—聚类树。通过聚类树来组织和调整聚类簇,树的生成合并过程就是聚类过程。最终生成k个聚类树即聚类结果。在聚类大规模数据时,IKMG较传统的k-means算法有更高的时间效率,能发现任意形状大小的簇,无需人为指定k值的优点。最后,设计了一种相似特征树的数据结构SFT,SFT作为一种软件故障检测的工具,主要用来提高软件安全检测的效率。为了构建SFT,提出了一种改进的k-modes聚类算法IKMD。在算法IKMD中,初始众数的选择进行于聚类的整个过程中。聚类结果以k棵树的形式给出。最后将包含这k棵树的森林转化为一个二叉树即SFT。SFT根据Apriori性质按照先左后右的原则对软件程序进行故障检测。分析结果显示该算法是可行有效的。