基于JAVA的聚类分析实现
2013-04-29谭琳
谭琳
摘要:由于聚类技术的不断发展,近几年运用范围越来越大,在生物学上,营销分析学上,在对Internet上的Web中文档管理上都有很大的运用。但是这些跨领域,跨专业的运用需要一个公用平台来实现,这就是本篇文章提倡的基于Java来实现聚类分析。
关键词:聚类技术、Java
中图分类号:TP3 文献标识码:A 文章编号:1009-3044(2013)08-1894-06
1 研究背景
JAVA是一种跨平台的语言,灵活性比较大,运用范围广,能运用到各种系统和领域中。聚类技术最近几年越来越受到大家的追捧,聚类算法的应用也得到了推广,在生物学上,聚类能通过基因和蛋白质的这两类的分类或者聚类,对种群中固定结果的重新认识和分析,从而推导出不同的植物或者动物种类:在市场关系上,市场分析人员也可以通过聚类发现客户数据中不同的客户群体,对这些群体的不相同类的特征进行模式刻画,从而能预测某客户群体的购买类型。不仅如此,聚类也能对internet上的web中的文档或者文件进行分类,而发现对人们有价值的知识,此外聚类还可以对其他方法进行预处理过程,对这些方法起辅助作用。
基于JAVA的聚类分析的实现,给聚类技术的推广起到推风助浪的作用,使得聚类技术能在更多的领域中拓宽。
2 聚类分析概念
聚类是运用数据对象之间的距离,并运用相关的聚类分析原则将对象逐一划分到多个簇(clusters)中。每一个簇中中也包含了多个相同类属对象,同一个簇钟的对象之间的相似度要比不同簇的相似度大,最终的聚类能使得各簇种对象的相似度最小,这样就达到聚类的目的了。这样的聚类分析不仅可以对数据分析和知道的挖掘提供数据依据,也可以解开事物数据之间的内在联系和区分,这使得聚类分析爱成为数据挖掘技术中不可缺少的成员。
3.2 层次聚类
层次聚类是根据凝聚或分裂的层次分解形式对数据对象集合进行层次分解。分裂的方法是自顶向下的方法,首先把所有的数据对象点归为一类,然后以此分裂成更小的类,分裂到每个对象能够单独在一个类中为止。凝聚与分裂的方法相反,是一种自底向上的方法,“底”在这里指的是单个数据点,首先以单个数据点作为一个类,然后对相近的数据对象进行合并归纳成新的类,直到所有的数据对象合并成一个类为止,这个类在层次上面叫着的最上层,整个运作过程是自底向上的方式运作。常用的算法有利用层次方法的平衡迭代归约和聚类—BIRCH。
3.3 基于密度的方法
基于密度的方法就是让最近区域密度值达到一定的标准,也就是有一个具体的阀值即对象的个数,还有就是该区域半径值,以这些标准来对对象进行聚类。用这种方法的好处是避免了划分方法中发现球状簇的局限。例如基于高密度连接区域的密度聚类方法——DBSCAN。
3.4 基于网格的方法
基于网格的方法就是在网格接结构的基础上对数据进行聚类,我们将采用量化的方式把空间对象分成有限的数目单元,这样就是对空间对象进行网格。这种算法有—CLIQUE算法。
3.5 基于模型的方法
基于模型的方式就是给定一个模型,根据模型的要求寻找最合适的对象的方法。在对象空间的密度数来构建一个模型,通过统计数字自动来决定聚类的数目,从而去掉不需要的噪声数据,使得聚类的方法更有力。这种方法有COBWEB算法,网络神经方法有SOM算法。
3.6 基于约束的方法
对数据的个体对象进行约束,或者设置聚类参数来约束,来进行聚类的方法。因为在我们的客观世界中聚类的问题存在很多的约束条件,但是这些条件都是很发杂的,往往不被有效的利用出来,从而不能对这方法进行进行广泛的推广和应用。这种方法有COD (Clustering with Ob2structed Distance)。
第三步:计算每个聚类中所有对象的均值,得出新的聚类中心。
第四步:对新的聚类中心重复上面的第二和第三步,并得到新的聚类中心,直止新的聚类点不再更新。得出最终的聚类中心。
初值的好坏直接影响到K—Means算法的最后结果,也可以因为初值的问题导致聚类的结果有天差万别,因此要改变K—Means算法的初值的取法,是K—Means算法的改进的关键。
中心点的选取不同直接影响到聚类结果不同,因此初始聚类中心的选择在 K—Means算法中非常重要。实际应用中,我们即希望中心点能够尽量分散,也希望这些中心点具有一定的代表性,这也是我们聚类的目的。我们运用一种基于试探性的算法---最大最小距离算法可以对初始聚类中心的选择做出相对较好判断,它能相对智能地确定最佳的初始聚类的中心,可以提高划分初始数据集的效率,避免过去K—Means算法中选取初始聚类过于邻近,而导致聚类结果不佳的情况。
参考文献:
[1] 朱福喜. Java程序设计技巧与开发实例[M].北京:人民邮电出版社,2004,2.
[2] 陆惠恩.实用软件工程[M].北京:清华大学出版社,2006,5.
[3] (美)Bruce Eckel著,陈昊天译.Java编程思想[M].北京:机械工业出版社,2007,6.
[4] 朱福喜,黄昊.Java项目开发与毕业设计指导[M].北京:清华大学出版社,2008,6.
[5] 郑人杰,殷人昆.陶永雷.实用软件工程[M].北京:清华大学出版社,2004,11.