2. ISODATA聚类算法ISODATA 算法:Iterative Se1f—Organizing Data AnalysisTechnigues Algorithm,迭代自组织的数据分析算法ISODATA算法特点:可以通过类的自动合并(两类合一)与分裂(一类分为二),得到较合理的类型数目C具体算法步骤:⑴给定控制参数K:预期的聚类中心数目每一聚类中最少的样本数目,如果少于此数就不能作为一个独 立的聚类 —个聚类域中样本距离分布的标准差(阈值)0:两个聚类中心之间的最小距离,如果小于此数,两个聚类合并L:每次迭代允许合并的最大聚类对数目/:允许的最多迭代次数给定〃个混合样本,令7 = 1(迭代次数),预选c个起始聚合中心,Z*J), j = 1,2,...,c o(2) 计算每个样本与聚合中心距离:D(xt,Z.(J)) o若:D(Xk,Zj(J))= min {D(s,Z (/))』= 1,2,, 则:xk e w. o把全部样本划分到c个聚合中去,且〃/表示各子集七中的样木数目3) 判断:若n. < 0„ , j = 1,2,..则舍去子集X,, c = c-l,返回②⑷ 计算修改聚合中心:Zj(J) = —^x(kn ? j = 1,2,..o⑸计算类内距离平均值— 1D/=一2>(/,Z”)),,= l,2,...,c nj k=l⑹ 计算类内总平均距离万(全部样本对其相应聚类中心的总平均距离):万"Ze〃 j=i⑺ 判别分裂、合并及迭代运算等步骤。
a) 如迭代运算次数已达/次,即最后一次迭代,置Q.=o,跳 到(11),运算结束b) 如即聚类中心的数目等于或不到规定值的一半,则2转⑻,将已有的聚类分裂C)如迭代运算的次数是偶数,或C22K,则不进行分裂,跳到(11) ,若不符合上述两个条件,则进入⑻,进行分裂处理⑻ 计算每个聚合的标准偏差向量:b, = (a cr ajd)T每个分量为:ct,= — (x.-Z..(J))2 , i = l,2,...,d, j = 1,2,_coV巧5X,.表示x的第,个分量,Z/表示Zj的第j个分量d为维数0)求出每个聚合的最大标准偏差分量<7/max:6如=.骨{b/J, ,= 1,2,...,CI — I.Z,...■([(10)考查b,max,,= 1,2,...,C若有叽x>Q.,同时满足以下两条件之一,J J(a) 叨> 万及勺>20+1),(样本数目超过规定值一倍以上)b) C<^o2则把该集合分为两个新的聚合,聚合中心分别为:Z;G/) = Z”) + “,Zj(J) = Zj(J) — 〃j其中:5 = kbj 或 rj =灶0,r max,O,.•.,()],0 < m令:C = C + l 9 J = J + 1 返回(2)其中,K的选择很重要,应使X,.中的样木到Z;O)和Z;0)的距离不 同,但又使样本全部在这两个集合中。
11) 计算两两聚合中心间的距离n,:D.. = D(Z,(J),Z.(J)) , i = l,2,...,c-l , j = i + \,….,c12) 比较厂与并把小于的%.按递增次序排队:⑶<2,2 %,乙为给定的合并参数13) 考查(12)中的不等式,对每一个以以,相应有两个聚类中心和 ZjL,假使在同一次迭代中,还没把Z,L和Z’z合并,则把两者合并,合并 后中心为:Zl(J) = —1—[催・ZjL(J) + .L • Z/L0)],令 C = C + 1 如 + njL(14)若J vl,贝lj J = J +1,如果修改给定参数则返回⑴,不修改参数返回⑵,否则/=/,算法结束注意:⑻〜(10)步为分裂,(11)〜(13)为合并。