1
模式识别与智能计算的MATLAB实现
1.4.4.4 2.4.4 动态聚类法
2.4.4 动态聚类法

动态聚类法选择若干样本作为聚类中心,再按照某种聚类规则,如最短距离准则,将其余样本归入最近的中心,得到最初的分类。然后判断初始分类是否合理,若不合理,则按照特定规则重新修改不合理的分类,如此反复迭代,直到分类合理。

(1)c-均值算法(或K-均值法)

c-均值算法的指导思想是,假设样本集中的全体样本可分为c类,并选定c个初始聚类中心,然后按照最小距离原则将每个样本分配到某一类中,之后不断地迭代计算各类的聚类中心并依新的聚类中心调整聚类情况,直到迭代收敛。

设样本集为{X1,X2,…,XN},类别数为ω1,ω2,…,ωc,各类中心分别为m1,m2,…,mc,则该方法采用的准则函数为

alt

如果类别数c不能通过先验知识确定,则可采用作图法近似求出。对c从小到大应用c-均值算法进行聚类,在不同的c下取得不同的J值,然后作J-c曲线。若曲线上存在一个拐点,则拐点对应的类别数即为欲求的最佳类别数;若拐点不明显,则该方法失效。

(2)ISODATA算法

ISODATA算法(Iterative Self-Organizing Data Analysis Techniques Algorithm)的基本思想见图2.3。

alt

图2.3 ISODATA算法框架

具体算法的步骤如下:

①规定下列控制参数:

K——期望得到的聚类数;

θN——一个聚类中的最小样本数,若少于此数,则不能单独成为一类;

θs——标准偏差,若大于此数,则对应的聚类就要分裂;

θc——两聚类中心的最小距离,若小于此数,则相应的两个聚类进行合并;

L——每次迭代允许合并的最大聚类对数;

I——允许迭代的次数。

设初始的聚类数为c和初始的聚类中心为mi(i=1,2,…,c)。

②按照下述关系:

若‖X-mi‖<‖X-mj‖(j=1,2,…,c;i≠j),则X∈ωi。将所有样本分到对应的各个类中。

③若有任何一个聚类中心,其基数Ni<θN,则舍去ωi,并令c=c-1。

④按照关系

alt

计算更新的均值向量。

⑤计算ωi中的所有样本距其相应的聚类中心mi的平均距离alt

alt

⑥计算所有样本距其相应的聚类中心的平均距离alt

alt

⑦判断分裂、合并及迭代运算等步骤如下:

(a)若这是最后一次迭代(由参数I确定),则置θc=0,转第⑪步;

(b)若c≤K/2,转第⑧步;

(c)若是偶数迭代,或若c≥2K,则转第⑪步,否则往下进行。

⑧对每一聚类ωi,求标准偏差公式为

σi=(σi1,σi1,…,σin), 其中alt

式中,alt是第k个样本的第j个分量;mij是第i个聚类中心的第j个分量;σij是第i个聚类的标准偏差的第j个分量;n是样本X的维数。

⑨对每一个聚类,求出具有最大标准偏差的分量σimax(i=1,2,…,c)。

⑩若对任一个σimax(i=1,2,…,c),存在σimax>θS,并且有

alt 且 Ni>2(θN+1)或c≤K/2

则把ωi分裂成两个聚类,其中心相应为altalt,把原来的mi取消,且令c=c+1。altalt的计算如下:

给定一个α值,令γi=ασimax,则

alt

式中,α的值应选得使ωi中的样本到altalt的距离不同,但又应使ωi中的样本仍然在这两个新的集中。

⑪对于所有的聚类中心,计算两两之间的距离公式为

Dij=‖mi-mj‖  (i=1,2,…,c-1; j=i+1,i+2,…,c)

⑫比较Dij和θc,将Dij<θc的值按上升次序排列为

Di1j1<Di2j2<…<Diljl,l≤L

⑬从最小的Di1j1开始,将距离为Diljl的两类聚类中心mil和mjl合并,得新的聚类中心为

alt

并令c=c-1。

⑭若这是最后一次迭代,则算法终止;否则,若根据经验需要改变参数,则转第①步;若不需要改变参数,则转第②步,并将迭代计数器加1。