1
模式识别与智能计算的MATLAB实现
1.12.3.1 10.3.1 聚类数目已知的聚类问题的蚁群算法
10.3.1 聚类数目已知的聚类问题的蚁群算法

聚类数目已知的聚类问题是指通过先验知识已知样本集的总类数,但各样本的具体分类情况未知。

1.蚂蚁结构

每只蚂蚁都表示一种可能的聚类结果。与遗传算法一样,首先对每个样本随机生成类别号,以组成每只蚂蚁的结构。例如有10个样本,聚类数为4,其中的一只蚂蚁用如下的结构表示:Si=[2 2 4 4 1 3 4 2 3 1],表示第1、2和8个样本为第2类,第3、4和7为第4类,以此类推。

2.信息素矩阵

信息素是一个在迭代过程不断更新的N×n矩阵,其中N为样本数,n为类别数。算法开始时,矩阵被初始化为设定的同一值τij,表示样品i分配到它所属的类j的信息素值。

3.目标函数

已知样品集有N个样本和M个分类,每个样本有n个特征。以每个样本到聚类中心的距离之和的最小值作为目标函数,即

alt

其中

alt

其中,xip为第i个样本的第p个属性;cjp为第j个类中心的第p个属性。

4.更新蚁群

在每一次蚁群更新中,蚂蚁将通过信息素的间接通信实现把样本集划分为M个近似划分。当m只蚂蚁迭代结束后,再进行局部搜索以进一步提高类划分的质量,然后根据类划分的质量更新信息素矩阵。如此循环,直到满足循环条件后结束。

设t表示迭代的次数,每只蚂蚁依赖于第t-1次迭代提供的信息素来实现分类。对每只蚂蚁所构成的每个样本,系统产生一个随机数q,与预先定义一个数值在0~1间的概率q0比较,决定每只蚂蚁的更新:

·若q小于q0,则选择与样本间具有最大信息素的类为样本要归属的类。

·若q大于q0,则根据转换概率随机选择样本要转换的类。

转换概率由下述公式计算:

alt

其中,τij为样品i和所属类j间的标准化信息素。每个样本i根据转换概率分布,选择要转换到的类别。

从上可看出,第一种方式为利用已有的知识,第二种方式则是开发新解的空间。

5.局部搜索

为提高蚂蚁算法寻找最优解的效率,很多改进的蚁群算法都加入了局部搜索。局部搜索可对所有解进行,也可以只对部分解执行,此时执行的部分解为具有小的目标函数的前L个解。

对部分解执行局部搜索解的方法如下:

①为解集中的每个样本产生随机数,与预先设定一个0~1间的随机数ps相比。如果第i个样本被分配的随机数小于ps,那么这个样本要被分配到其他类中。

②选择类中心与这个样本的距离最短的类为第i个样本被分配的类,重新聚类。

③重新计算变换操作后的目标函数值,与原解集的目标函数值进行比较,若比原解集的目标函数小,则保留新解集;否则还原旧解集。

④对前L个解集进行上述操作。在前L只蚂蚁中选择具有最小目标函数的蚂蚁作为最优解。

6.信息素更新

执行过局部搜索之后,利用前L个蚂蚁对信息素进行更新,其公式为

alt

其中,ρ(0<ρ<1)为信息素蒸发参数;τij为样品i和所属类在t时刻的信息素浓度。设Js为蚂蚁s目标函数值,Q为一参数常量值,若蚂蚁s中的样本i属于j类,则alt;否则alt

至此,一次迭代结束。继续迭代,直到最大迭代次数,返回最优解为结果。