聚類算法:ISODATA算法


本文轉載自http://www.cnblogs.com/huadongw/p/4101422.html

1. 與K-均值算法的比較
–K-均值算法通常適合於分類數目已知的聚類,而ISODATA算法則更加靈活;
–從算法角度看, ISODATA算法與K-均值算法相似,聚類中心都是通過樣本均值的迭代運算來決定的;
–ISODATA算法加入了一些試探步驟,並且可以結合成人機交互的結構,使其能利用中間結果所取得的經驗更好地進行分類。
 
2. ISODATA算法基本步驟和思路

(1)  選擇某些初始值。可選不同的參數指標,也可在迭代過程中人為修改,以將N個模式樣本按指標分配到各個聚類中心中去。

(2)  計算各類中諸樣本的距離指標函數。

(3)~(5)按給定的要求,將前一次獲得的聚類集進行分裂和合並處理((4)為分裂處理,(5)為合並處理),從而獲得新的聚類中心。

(6)  重新進行迭代運算,計算各項指標,判斷聚類結果是否符合要求。經過多次迭代后,若結果收斂,則運算結束。

3. ISODATA算法流程圖:

4.ISODATA算法

第一步:輸入NN個模式樣本{xi,i=1,2,,N}{xi,i=1,2,…,N}

           預選NcNc個初始聚類中心{z1,z2,zNc}{z1,z2,…zNc},它可以不等於所要求的聚類中心的數目,其初始位置可以從樣本中任意選取。

           預選:KK  = 預期的聚類中心數目;

                    θNθN = 每一聚類域中最少的樣本數目,若少於此數即不作為一個獨立的聚類;

                    θSθS = 一個聚類域中樣本距離分布的標准差;

                    θcθc= 兩個聚類中心間的最小距離,若小於此數,兩個聚類需進行合並;

                    LL= 在一次迭代運算中可以合並的聚類中心的最多對數;

                    II  = 迭代運算的次數。

第二步:將NN個模式樣本分給最近的聚類SjSj,假若Dj=min{xzi,i=1,2,Nc}Dj=min{∥x−zi∥,i=1,2,⋯Nc}

           ,即||xzj||||x−zj||的距離最小,則xSjx∈Sj。

第三步:如果SjSj中的樣本數目SjN,則取消該樣本子集,此時Nc減去1。

           (以上各步對應基本步驟(1))

 

第四步:修正各聚類中心

 

zj=1NjxSjx,j=1,2,,Nczj=1Nj∑x∈Sjx,j=1,2,⋯,Nc

 

第五步:計算各聚類域Sj中模式樣本與各聚類中心間的平均距離

 

D¯j=1NjxSjxzj,j=1,2,,NcD¯j=1Nj∑x∈Sj∥x−zj∥,j=1,2,⋯,Nc

 

第六步:計算全部模式樣本和其對應聚類中心的總平均距離

 

D¯=1Nj=1NNjD¯jD¯=1N∑j=1NNjD¯j

 

(以上各步對應基本步驟(2))

 

第七步:判別分裂、合並及迭代運算

  1. 若迭代運算次數已達到I次,即最后一次迭代,則置θc =0,轉至第十一步。
  2. NcK2Nc≤K2
    ,即聚類中心的數目小於或等於規定值的一半,則轉至第八步,對已有聚類進行分裂處理。
  3. 若迭代運算的次數是偶數次,或Nc2KNc≥2K
    ,不進行分裂處理,轉至第十一步;否則(即既不是偶數次迭代,又不滿足Nc2KNc≥2K),轉至第八步,進行分裂處理。

(以上對應基本步驟(3))

 

第八步:計算每個聚類中樣本距離的標准差向量

 

σj=(σ1j,σ2j,,σnj)Tσj=(σ1j,σ2j,…,σnj)T

 

          其中向量的各個分量為

 

σij=1Njk=1Nj(xikzij)2−−−−−−−−−−−−−−−⎷σij=1Nj∑k=1Nj(xik−zij)2

 

          式中,i = 1, 2, …, n為樣本特征向量的維數,j = 1, 2, …, Nc為聚類數,Nj為Sj中的樣本個數。

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

第十步:在任一最大分量集{σjmax, j = 1, 2, …, Nc}中,若有σjmaxS ,同時又滿足如下兩個條件之一:

  1. D¯j>D¯D¯j>D¯和Nj > 2(θN + 1),即Sj中樣本總數超過規定值一倍以上,
  2. NcK2Nc≤K2

       則將zj 分裂為兩個新的聚類中心和,且Nc加1。 中對應於σjmax的分量加上kσjmax,其中;中對應於σjmax的分量減去kσjmax

       如果本步驟完成了分裂運算,則轉至第二步,否則繼續。

      (以上對應基本步驟(4)進行分裂處理)

 

第十一步:計算全部聚類中心的距離

                 

Dij=||zizj||i=1,2,,Nc1j=i+1,,NcDij=||zi−zj||,i=1,2,…,Nc−1,j=i+1,…,Nc

 

第十二步:比較Dij 與θc 的值,將Dij <θc 的值按最小距離次序遞增排列,即

 

{Di1j1,Di2j2,,DiLjL}{Di1j1,Di2j2,…,DiLjL}

 

             式中Di1j1<Di2j2<<DiLjLDi1j1<Di2j2<…<DiLjL。

第十三步:將距離為DikjkDikjk的兩個聚類中心ZikZik和ZjkZjk合並,得新的中心為:

             

zk=1Nik+Njk[Nikzik+Njkzjk],k=1,2,,Lzk∗=1Nik+Njk[Nikzik+Njkzjk],k=1,2,⋯,L

 

              式中,被合並的兩個聚類中心向量分別以其聚類域內的樣本數加權,使ZkZk∗為真正的平均向量。

             (以上對應基本步驟(5)進行合並處理)

 

第十四步:如果是最后一次迭代運算(即第I次),則算法結束;否則,若需要操作者改變輸入參數,轉至第一步;若輸入參數不變,轉至第二步。

              在本步運算中,迭代運算的次數每次應加1。

 [算法結束]

5.例子:試用ISODATA算法對如下模式分布進行聚類分析:

 

{x1(0,0),x2(3,8),x3(2,2),x4(1,1),x5(5,3),x6(4,8),x7(6,3),x8(5,4),x9(6,4),x10(7,5)}{x1(0,0),x2(3,8),x3(2,2),x4(1,1),x5(5,3),x6(4,8),x7(6,3),x8(5,4),x9(6,4),x10(7,5)}

 

 

我們可以知道,N=10,n=2。假設取初始值Nc=1Nc=1,z1=x1=(0 0)T,則運算步驟如下:

(1)   設置控制參數

            取K=3,θN=1,θS=1,θc=4,L=1,I=4

(2)   按最小距離原則將模式集(xi)中每個模式分到某一類中。

          由於此時只有一個聚類中心,因此S1={x1, x2, …, x10},N1=10

(3)   因N1N ,無子集可拋

(4)   修改聚類中心

 

z1=1N1xS1x=(3.93.8)z1=1N1∑x∈S1x=(3.93.8)

 

(5)   計算模式樣本與聚類中心間的平均距離D¯1D¯1

 

D¯1=1N1xS1xz1=3.0749D¯1=1N1∑x∈S1∥x−z1∥=3.0749

 

(6)   計算全部模式樣本和其對應聚類中心的總平均距離

 

D¯=D¯1=3.0749D¯=D¯1=3.0749

 

(7)   因不是最后一次迭代,且Nc<K/2Nc<K/2,進入(8)

(8)   計算S1中的標准差向量

 

σ1=(2.21132.5219)σ1=(2.21132.5219)

 

(9) σ1maxσ1max  中的最大分量是2.5219,因此 σ1max=2.5219σ1max=2.5219。

(10)因σ1max>θsσ1max>θs 且Nc<K2Nc<K2,可將z1分裂成兩個新的聚          類。設rj=0.5σ1max1.261rj=0.5σ1max≈1.261.則

 

z+1=(3.95.061),z1=(3.92.539)z1+=(3.95.061),z1−=(3.92.539)

 

           為方便起見,將z+1z1+和z1z1−表示為z1和z2,Nc加1 ,Nc=2Nc=2.

(11)   重新進行分類

樣本點

特征值

到z1的距離

到z2的距離

聚類結果

X1

0

0

6.3893

4.6537

S2

X2

3

8

3.0737

5.5347

S1

X3

2

2

3.6027

1.975

S2

X4

1

1

4.9902

3.2831

S2

X5

5

3

2.3362

1.1927

S2

X6

4

8

2.9407

5.4619

S1

X7

6

3

2.9424

2.15

S2

X8

5

4

1.5283

1.8288

S1

X9

6

4

2.3528

2.5582

S1

X10

7

5

3.1006

3.9581

S1

 

S1={x2,x6,x8,x9,x10},N1=5S1={x2,x6,x8,x9,x10},N1=5

 

 

S2={x1,x3,x4,x5,x7},N2=5S2={x1,x3,x4,x5,x7},N2=5

 

(12)   因N1N 且N2N,無子集可拋。

(13)   修改聚類中心

 

z1=1N1xS1x=(55.8)z1=1N1∑x∈S1x=(55.8)

 

 

z2=1N2xS2x=(2.81.8)z2=1N2∑x∈S2x=(2.81.8)

 

(14)   計算模式樣本與聚類中心間的平均距離D¯j,j=1,2D¯j,j=1,2

 

D¯1=1N1xS1xz1=2.2806D¯1=1N1∑x∈S1∥x−z1∥=2.2806

 

 

D¯2=1N2xS2xz2=2.4093D¯2=1N2∑x∈S2∥x−z2∥=2.4093

 

(15)   計算全部模式樣本和其對應聚類中心的總平均距離D¯

 

D¯=1Nj=1NNjD¯j=110j=12NjD¯j=2.345D¯=1N∑j=1NNjD¯j=110∑j=12NjD¯j=2.345

 

(16)   因是偶數次迭代,所以進行合並

(17)   計算聚類對之間的距離

 

D12=z1z2=4.5651D12=∥z1−z2∥=4.5651

 

(18)   比較D12D12 與θc ,D12D12>θc,所以聚類中心不發生合並

(19)   沒有達到所需的聚類數,所以繼續進行,重新分類

樣本點

特征值

到z1的距離

到z2的距離

聚類結果

X1

0

0

7.6577

3.3287

S2

X2

3

8

2.9732

6.2032

S1

X3

2

2

4.8415

0.82462

S2

X4

1

1

6.2482

1.9698

S2

X5

5

3

2.8

2.506

S2

X6

4

8

2.4166

6.3151

S1

X7

6

3

2.9732

3.4176

S1

X8

5

4

1.8

3.1113

S1

X9

6

4

2.0591

3.8833

S1

X10

7

5

2.1541

5.2802

S1

 

S1={x2,x6,x7,x8,x9,x10},N1=6S1={x2,x6,x7,x8,x9,x10},N1=6

 

 

S2={x1,x3,x4,x5},N2=4S2={x1,x3,x4,x5},N2=4

 

(20)   因N1N 且N2N,無子集可拋。

(21)   修改聚類中心

 

z1=1N1xS1x=(5.16675.3333)z1=1N1∑x∈S1x=(5.16675.3333)

 

 

z2=1N2xS2x=(21.5)z2=1N2∑x∈S2x=(21.5)

 

(22)   計算模式樣本與聚類中心間的平均距離,D¯1,j=1,2D¯1,j=1,2

 

D¯1=1N1xS1xz1=2.2673D¯1=1N1∑x∈S1∥x−z1∥=2.2673

 

 

D¯2=1N2xS2xz2=1.868D¯2=1N2∑x∈S2∥x−z2∥=1.868

 

(23)   計算全部模式樣本和其對應聚類中心的總平均距離D¯

 

D¯=1Nj=1NNjD¯j=110j=12NjD¯j=2.1076D¯=1N∑j=1NNjD¯j=110∑j=12NjD¯j=2.1076

 

(24)   此次是奇數次迭代,並且Nc>K2Nc>K2,所以進行分裂操作

(25)   計算S1={x2,x6,x7,x8,x9,x10}S1={x2,x6,x7,x8,x9,x10}

S21={x1,x3,x4,x5}S21={x1,x3,x4,x5}

的標准差

 

σ1=(1.34371.972),σ2=(1.87081.118)σ1=(1.34371.972),σ2=(1.87081.118)

 

(26)σ1max=1.972,σ2max=1.8708σ1max=1.972,σ2max=1.8708

(27)此時,σ1max=1.972>θs,N1=6>2(θN+1)=4σ1max=1.972>θs,N1=6>2(θN+1)=4且D¯1>D¯D¯1>D¯,所以滿足分裂的條件,將S1進行分裂。

\rj=0.5σ1max0.986\rj=0.5σ1max≈0.986,則

 

z+1=(5.16676.3193),z1=(5.16674.3473)z1+=(5.16676.3193),z1−=(5.16674.3473)

 

 為方便起見,將Z+1Z1+和Z_^-Z_^-表示為Z11Z11和Z12Z12,NcNc加1,Nc=3Nc=3.

(28)重新進行分類

樣本點

特征值

到的距離

到的距離

到的距離

聚類結果

X1

0

0

8.1626

6.7523

2.5

S2

X2

3

8

2.7421

4.247

6.5765

S11

X3

2

2

5.3558

3.9418

0.5

S2

X4

1

1

6.7569

5.3447

1.118

S2

X5

5

3

3.3235

1.3576

3.3541

S12

X6

4

8

2.046

3.8345

6.8007

S11

X7

6

3

3.4223

1.5842

4.272

S12

X8

5

4

2.3253

0.38524

3.9051

S12

X9

6

4

2.4645

0.90278

4.717

S12

X10

7

5

2.2587

1.946

6.1033

S12

 

S11={x2,x6},N11=2S11={x2,x6},N11=2

 

 

S12={x5,x7,x8,x9,10},N12=5S12={x5,x7,x8,x9,10},N12=5

 

(29)   因N11N 且N12N且N2N,無子集可拋

(30)   修改聚類中心

 

S2={x1,x3,x4},N2=3S2={x1,x3,x4},N2=3

 

 

z11=1N11xS11x=(3.58)z11=1N11∑x∈S11x=(3.58)

 

 

z12=1N12xS12x=(5.83.8)z12=1N12∑x∈S12x=(5.83.8)

 

 

z2=1N2xS2x=(11)z2=1N2∑x∈S2x=(11)

 

(31)   計算模式樣本與聚類中心間的平均距離D¯jD¯j

 

D¯11=1N11xS11xz11=0.5D¯11=1N11∑x∈S11∥x−z11∥=0.5

 

 

D¯12=1N12xS12xz12=0.9521D¯12=1N12∑x∈S12∥x−z12∥=0.9521

 

 

D¯2=1N2xS2xz2=0.94281D¯2=1N2∑x∈S2∥x−z2∥=0.94281

 

(32)   計算全部模式樣本和其對應聚類中心的總平均距離D¯

 

D¯=1NNjD¯j=110NjD¯j=0.85889D¯=1N∑NjD¯j=110∑NjD¯j=0.85889

 

(33)   因是偶數次迭代,所以進行2016-04-11合並

(34)   計算聚類對之間的距離

 

 Z11 Z12  Z13 
 Z11

0

4.7885

7.433

Z12 

4.7885

0

5.557

Z2 

7.433

5.557

0

所以

 

D1112=z11z12=4.7885>θc=4D1112=∥z11−z12∥=4.7885>θc=4

 

 

D112=z11z2=7.433>θc=4D112=∥z11−z2∥=7.433>θc=4

 

 

D122=z12z2=5.557>θc=4D122=∥z12−z2∥=5.557>θc=4

 

            故沒有可以合並的類

(35)   最后一次迭代,算法結束。

             最終的聚類結果是

 

S1={x2,x6},S2={x5,x7,x8,x9,x10},S3={x1,x3,x4},N2=3S1={x2,x6},S2={x5,x7,x8,x9,x10},S3={x1,x3,x4},N2=3

 

6 .聚類結果的評價
     迅速評價聚類結果,在上述迭代運算中是很重要的,特別是具有高維特征向量的模式,不能直接看清聚類效果,因此,可考慮用以下幾個指標來評價聚類效果:
    –聚類中心之間的距離
          •距離值大,通常可考慮分為不同類
    –聚類域中的樣本數目
          •樣本數目少且聚類中心距離遠,可考慮是否為噪聲
    –聚類域內樣本的距離方差
          •方差過大的樣本可考慮是否屬於這一類
 
     模式聚類目前還沒有一種通用的放之四海而皆准的准則,往往需要根據實際應用來選擇合適的方法。

 

該資料整理於國科大《模式識別》講稿和作業。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM