基于改进遗传算法聚类新方法.docVIP

  • 7
  • 0
  • 约3.53千字
  • 约 9页
  • 2018-08-29 发布于福建
  • 举报
基于改进遗传算法聚类新方法

基于改进遗传算法聚类新方法   摘要: 提出一种基于改进遗传算法的聚类新方法(GAKME),该方法采用遗传算法和k-medoids算法相结合,既可以很好地解决局部最优的问题,也可以很好地解决孤立点的问题,同时还可以加快遗传算法的收敛速度,节约时间成本。   关键词: 遗传算法;聚类;k-medoids算法   中图分类号:TP18 文献标识码:A 文章编号:1671-7597(2011)1110044-01   0 引言   聚类是一个将数据集划分为若干组或类的过程,并使得同一个组内的数据对象具有较高的相似度,而不同组中的数据对象则是不相似的,相似或不相似的度量通常是利用距离进行描述的。聚类算法有很多,基于划分的k均值聚类算法[2]是目前聚类分析中应用最广泛的算法,但该方法受初始值影响很大,通常只能以局部最优结束,并且对孤立点很敏感。K-medoids算法也是基于划分的聚类算法,与k均值相似,与k均值不同的是,k-medoids算法不是采用均值作为聚类中心,而是采用数据集中任意一个数据作为聚类中心,因此可以很好地解决k均值对孤立点敏感的问题,极大地提高了聚类的精度。但是该方法同样受初始值影响很大,通常不能得到全局最优解。遗传算法是一种基于自然选择和遗传的随机优化算法[1,3],已经有人尝试用遗传算法进行聚类[6],但是要么是时间成本太高,要么是效果不佳。也有人采用了k均值和遗传算法结合进行聚类[5],取得了一定的效果,但仍不能解决孤立点的问题。   本文采用k-medoids和遗传算法相结合,提出一种新的聚类方法(GAKME),既可以很好地解决局部最优的问题,也可以很好地解决孤立点的问题,同时由于和k-medoids相结合,可以加快遗传算法的收敛速度,节约了时间成本,并通过仿真进行了验证。   1 基于改进遗传算法的聚类方法   1.1 算法流程   该算法流程如下:   1)初始特征种群的生成;   2)对初始种群进行选择;   3)用k-medoids算法对选择出来的个体进行优化,并用优化后的个体代替原来的个体;   4)对优化后的个体进行交叉、变异;   5)终止条件判定。   1.2 对个体进行编码   针对本文的实际问题,本文采用实数编码。染色体中实数的数量代表需要聚类的数量,每个实数代表数据集中的一个数据对象,该数据对象即为一个聚类中心,例如某个染色编码如下:(123……k),就代表需要将数据集划分为k个类,123……k就代表每一个类的聚类中心。k值的取值范围为1≤k≤n,n为需要进行聚类的数据库中的数据的个数。   采用实数编码的理由如下:   1)本文是以聚类的各个中心对象作为染色体(即种群中的个体)的基因片断,采用实数编码能够形象地体现个体中各个聚类中心对象的分布。   2)显然实数编码比采用二进制编码时染色体中基因的个数要少得多,因此用实数编码可以极大地减少染色体的长度,提高遗传算法的收敛速度。   3)实数编码比二进制编码在变异操作上能够保持更好的种群多样性,能够使得遗传算法更好地收敛于全局最优解。   4)本文采用的实数编码符合编码原则的三个特性,即:完备性、健全性、非冗余性。   1.3 初始种群的生成   初始种群采用随机函数生成,形成一个初始种群矩阵,其中每一行代表一个个体,每一行中的每个元素代表一个聚类中心。矩阵的行数代表种群中个体的数目,列数代表需要聚类的数目。用实数进行编码生成初始种群。用随机函数生成初始种群矩阵如下图所示:         上式即为一个5行5列的种群矩阵,其表示的含义为:行数5表示该种群中有5个个体,列数5表示每个个体含有5个基因,也即需要聚类的类数。每一行中的每个数字代表的是其在数据库中的序列数。矩阵中每个元素的取值范围为[l,100]。   1.4 适应度函数的确定   本文采用均方差[138]作为适应度函数,定义如下:         其中E为所有数据对象与相应聚类中心的均方差之和,p为代表对象的空间中的一个点,m1为聚类C1的均值。   1.5 选择算子的实现   本文采用锦标赛选择法(tournamentSeleCtion),锦标赛选择的参数为竞争规模Tour。其基本思想是每次选取几个个体之中适应度最高的一个个体遗传到下一代群体中。在锦标赛选择操作中,只有个体适应度之间的大小比较运算,而无个体适应度之间的算术运算,所以它对个体适应度是取正值还是负值无特别要求。   锦标赛选择法选择的具体操作过程是:   1)从群体中随机选取N个个体进行适应度大小的比较,将其中适应度最好的个体遗传到下一代群体中。   2)将上述过程重复盯次,就可以得到下一代群体中的盯个个体。   1.6 交叉算子的实现

文档评论(0)

1亿VIP精品文档

相关文档