isodata

算法简介
 
ISODATA [1]算法是在k-均值算法的基础上,增加对聚类结果的“合并”和“分裂”两个操作,并设定算法运行控制参数的一种聚类算法。
全称:Iterative Selforganizing Data Analysis Techniques Algorithm
即:迭代自组织数据分析算法
“合并”操作:
当聚类结果某一类中样本数太少,或两个类间的距离太近时,进行合并。
“分裂”操作:
当聚类结果某一类中样本某个特征类内方差太大,将该类进行分裂

算法特点

使用误差平方和作为基本聚类准则
设定指标参数来决定是否进行“合并”或“分裂”
设定算法控制参数来决定算法的运算次数
具有自动调节最优类别数k的能力
算法规则明确,便于计算机实现

算法思想

Isodata, [2]迭代自组织分析,通过设定初始参数而引入人机对话环节,并使用归并与分裂的机制,当某两类聚类中心距离小于某一阈值时,将它们合并为一类,当某类标准差大于某一阈值或其样本数目超过某一阈值时,将其分为两类。在某类样本数目少于某阈值时,需将其取消。如此,根据初始聚类中心和设定的类别数目等参数迭代,最终得到一个比较理想的分类结果

算法步骤

算法步骤 [2]如下:
①初始化
设定控制参数:
c:预期的类数;
Nc:初始聚类中心个数(可以不等于c);
TN:每一类中允许的最少样本数目(若少于此数,就不能单独成为一类);
TE:类内各特征分量分布的相对标准差上限(大于此数就分裂);
TC:两类中心间的最小距离下限(若小于此数,这两类应合并);
NT:在每次迭代中最多可以进行“合并”操作的次数;
NS:允许的最多迭代次数。
选定初始聚类中心
②按最近邻规则将样本集{xi}中每个样本分到某一类中
③依据TN判断合并:如果类ωj中样本数nj< TN,则取消该类的中心zj,Nc=Nc-1,转至② 。
④计算分类后的参数:各类重心、类内平均距离及总体平均距离
计算各类的重心:
计算各类中样本到类心的平均距离:
计算各个样本到其类内中心的总体平均距离:
⑤判断停止、分裂或合并。
a、若迭代次数Ip =NS,则算法结束;
b、若Nc ≤c/2,则转到⑥ (将一些类分裂);
c、若Nc ≥2c,则转至⑦ (跳过分裂处理);
d、若c/2< Nc<2c,当迭代次数Ip是奇数时转至⑥ (分裂处理);迭代次数Ip是偶数时转至⑦ (合并处理)。
⑥分裂操作
计算各类内样本到类中心的标准差向量
σj=(σ1j, σ2j,…., σnj)T , j=1,2,…..,Nc
计算其各个分量。
求出每一类内标准差向量σj中的最大分量
若有某是所有样本在该特征上的标准差,同时又满足下面两个条件之一:
则将该类ωj分裂为两个类,原zj取消且令Nc=Nc+1。
两个新类的中心zj+和zj-分别是在原zj中相应于的分量加上和减去,而起它分量不变,其中0<k≤1。
分裂后,Ip=Ip+1, 转至②。
⑦合并操作
计算各类中心间的距离Dij,i=1,2,…,Nc-1; j=1,2,…,Nc
依据TC判断合并。将Dij与TC比较,并将小于TC的那些Dij按递增次序排列,取前NT个。
从最小的Dij开始,将相应的两类合并,并计算合并后的聚类中心。
在一次迭代中,某一类最多只能合并一次。
Nc=Nc-已并掉的类数。
⑧如果迭代次数Ip=NS或过程收敛,则算法结束。否则,Ip=Ip+1,若需要调整参数,则转至①;若不改变参数,则转至②;
参考资料
  • 1.基于ISODATA的用户访问路径聚类算法.百度文库 [引用日期2013-04-15] .

  • 2.ISODATA算法.百度文库 [引用日期2013-04-15] .

    l  算法:

    第一步:输入N个模式样本{xi, i = 1, 2, …, N}

    预选Nc个初始聚类中心,它可以不等于所要求的聚类中心的数目,其初始位置可以从样本中任意选取。

    预选:K  = 预期的聚类中心数目;

    θN = 每一聚类域中最少的样本数目,若少于此数即不作为一个独立的聚类;

    θS = 一个聚类域中样本距离分布的标准差;

    θc = 两个聚类中心间的最小距离,若小于此数,两个聚类需进行合并;

    L  = 在一次迭代运算中可以合并的聚类中心的最多对数;

    I  = 迭代运算的次数。

    第二步:将N个模式样本分给最近的聚类Sj,假若,即||x-zj||的距离最小,则。

    第三步:如果Sj中的样本数目Sj<θN,则取消该样本子集,此时Nc减去1

    (以上各步对应基本步骤(1))

     

     

    第四步:修正各聚类中心

    第五步:计算各聚类域Sj中模式样本与各聚类中心间的平均距离

    第六步:计算全部模式样本和其对应聚类中心的总平均距离

    (以上各步对应基本步骤(2))

     

    第七步:判别分裂、合并及迭代运算

    1.       若迭代运算次数已达到I次,即最后一次迭代,则置θc =0,转至第十一步。

    2.       若,即聚类中心的数目小于或等于规定值的一半,则转至第八步,对已有聚类进行分裂处理。

    3.       若迭代运算的次数是偶数次,或,不进行分裂处理,转至第十一步;否则(即既不是偶数次迭代,又不满足),转至第八步,进行分裂处理。

    (以上对应基本步骤(3))

     

    第八步:计算每个聚类中样本距离的标准差向量

    其中向量的各个分量为

    式中,i = 1, 2, …, n为样本特征向量的维数,j = 1, 2, …, Nc为聚类数,NjSj中的样本个数。

    第九步:求每一标准差向量{σj, j = 1, 2, …, Nc}中的最大分量,以{σjmax, j = 1, 2, …, Nc}代表。

    第十步:在任一最大分量集{σjmax, j = 1, 2, …, Nc}中,若有σjmax>θS,同时又满足如下两个条件之一:

    1.       Nj > 2(θN + 1),即Sj中样本总数超过规定值一倍以上,

    2.      

    则将zj 分裂为两个新的聚类中心和,且Nc1。中对应于σjmax的分量加上kσjmax,其中;中对应于σjmax的分量减去kσjmax

    如果本步骤完成了分裂运算,则转至第二步,否则继续。

    (以上对应基本步骤(4)进行分裂处理)

     

    第十一步:计算全部聚类中心的距离

    Dij = || zi - zj ||i = 1, 2, …, Nc-1j =i+1, …, Nc

    第十二步:比较Dij与θc 的值,将Dij <θc的值按最小距离次序递增排列,即

    式中,。

    第十三步:将距离为的两个聚类中心和合并,得新的中心为:

    k = 1, 2, …, L

    式中,被合并的两个聚类中心向量分别以其聚类域内的样本数加权,使为真正的平均向量。

    (以上对应基本步骤(5)进行合并处理)

     

    第十四步:如果是最后一次迭代运算(即第I次),则算法结束;否则,若需要操作者改变输入参数,转至第一步;若输入参数不变,转至第二步。

    在本步运算中,迭代运算的次数每次应加1

     

    [算法结束]

    摘自:计算向量相似度的问题

    在向量空间模型中,文本泛指各种机器可读的记录。用D(Document)表示,特征项(Term,用t表示)是指出现在文档D中且能够代表该文档内容的基本语言单位,主要是由词或者短语构成,文本可以用特征项集表示为D(T1,T2,…,Tn),其中Tk是特征项,1<=k<=N。例如一篇文档中有a、b、c、d四个特征项,那么这篇文档就可以表示为D(a,b,c,d)。对含有n个特征项的文本而言,通常会给每个特征项赋予一定的权重表示其重要程度。即D=D(T1,W1;T2,W2;…,Tn,Wn),简记为D=D(W1,W2,…,Wn),我们把它叫做文本D的向量表示。其中Wk是Tk的权重,1<=k<=N。在上面那个例子中,假设a、b、c、d的权重分别为30,20,20,10,那么该文本的向量表示为D(30,20,20,10)。在向量空间模型中,两个文本D1和D2之间的内容相关度Sim(D1,D2)常用向量之间夹角的余弦值表示,公式为:  
    http://marssection.bbs.topzj.com/attachments/m12//12/85/12856/forumid_19946/zrTDMP7_968uATrvfvgg.jpg  
    其中,W1k、W2k分别表示文本D1和D2第K个特征项的权值,1<=k<=N。  
    在自动归类中,我们可以利用类似的方法来计算待归类文档和某类目的相关度。例如文本D1的特征项为a,b,c,d,权值分别为30,20,20,10,类目C1的特征项为a,c,d,e,权值分别为40,30,20,10,则D1的向量表示为D1(30,20,20,10,0),C1的向量表示为C1(40,0,30,20,10),则根据上式计算出来的文本D1与类目C1相关度是0.86  
     
    那个相关度0.86是怎么算出来的?    
     
    —————————————————————  
     
    是这样的,抛开你的前面的赘述  
     
    在数学当中,n维向量是  V{v1,  v2,  v3,  …,  vn}  
    他的模:    ¦v  ¦  =  sqrt  (  v1*v1  +  v2*v2  +  …  +  vn*vn  )  
    两个向量的点击  m*n  =  n1*m1  +  n2*m2  +  ……  +  nn*mn  
    相似度  =  (m*n)  /(  ¦m  ¦*  ¦n  ¦)  
    物理意义就是两个向量的空间夹角的余弦数值  
    对于你的例子  
    d1*c1  =  30*40  +  20*0  +  20*30  +  10*20  +  0*10  =  2000  
     ¦d1  ¦  =  sqrt(30*30  +20*20  +  20*20  +  10*10  +  0*0)  =  sqrt(1800)  
     ¦c1  ¦  =  sqrt(40*40  +  0*0  +  30*30  +  20*20  +  10*10)  =  sqrt(3000)  
    相似度  =  d1*c1/(  ¦d1  ¦*  ¦c1  ¦)=  2000/sqrt(1800*3000)=  0.86066


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值