本文轉載自http://www.cnblogs.com/huadongw/p/4101422.html
(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{∥x−zi∥,i=1,2,⋯Nc}Dj=min{∥x−zi∥,i=1,2,⋯Nc}
,即||x−zj||||x−zj||的距離最小,則x∈Sjx∈Sj。
第三步:如果SjSj中的樣本數目Sj<θN,則取消該樣本子集,此時Nc減去1。
(以上各步對應基本步驟(1))
第四步:修正各聚類中心
第五步:計算各聚類域Sj中模式樣本與各聚類中心間的平均距離
第六步:計算全部模式樣本和其對應聚類中心的總平均距離
(以上各步對應基本步驟(2))
第七步:判別分裂、合並及迭代運算
- 若迭代運算次數已達到I次,即最后一次迭代,則置θc =0,轉至第十一步。
- 若Nc≤K2Nc≤K2
,即聚類中心的數目小於或等於規定值的一半,則轉至第八步,對已有聚類進行分裂處理。 - 若迭代運算的次數是偶數次,或Nc≥2KNc≥2K
,不進行分裂處理,轉至第十一步;否則(即既不是偶數次迭代,又不滿足Nc≥2KNc≥2K),轉至第八步,進行分裂處理。
(以上對應基本步驟(3))
第八步:計算每個聚類中樣本距離的標准差向量
其中向量的各個分量為
式中,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}中,若有σjmax>θS ,同時又滿足如下兩個條件之一:
- D¯j>D¯D¯j>D¯和Nj > 2(θN + 1),即Sj中樣本總數超過規定值一倍以上,
- Nc≤K2Nc≤K2
則將zj 分裂為兩個新的聚類中心和,且Nc加1。 中對應於σjmax的分量加上kσjmax,其中;中對應於σjmax的分量減去kσjmax。
如果本步驟完成了分裂運算,則轉至第二步,否則繼續。
(以上對應基本步驟(4)進行分裂處理)
第十一步:計算全部聚類中心的距離
第十二步:比較Dij 與θc 的值,將Dij <θc 的值按最小距離次序遞增排列,即
式中Di1j1<Di2j2<…<DiLjLDi1j1<Di2j2<…<DiLjL。
第十三步:將距離為DikjkDikjk的兩個聚類中心ZikZik和ZjkZjk合並,得新的中心為:
式中,被合並的兩個聚類中心向量分別以其聚類域內的樣本數加權,使Z∗kZk∗為真正的平均向量。
(以上對應基本步驟(5)進行合並處理)
第十四步:如果是最后一次迭代運算(即第I次),則算法結束;否則,若需要操作者改變輸入參數,轉至第一步;若輸入參數不變,轉至第二步。
在本步運算中,迭代運算的次數每次應加1。
[算法結束]
5.例子:試用ISODATA算法對如下模式分布進行聚類分析:
我們可以知道,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) 因N1>θN ,無子集可拋
(4) 修改聚類中心
(5) 計算模式樣本與聚類中心間的平均距離D¯1D¯1
(6) 計算全部模式樣本和其對應聚類中心的總平均距離
(7) 因不是最后一次迭代,且Nc<K/2Nc<K/2,進入(8)
(8) 計算S1中的標准差向量
(9) σ1maxσ1max 中的最大分量是2.5219,因此 σ1max=2.5219σ1max=2.5219。
(10)因σ1max>θsσ1max>θs 且Nc<K2Nc<K2,可將z1分裂成兩個新的聚 類。設rj=0.5σ1max≈1.261rj=0.5σ1max≈1.261.則
為方便起見,將z+1z1+和z−1z1−表示為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 |
(12) 因N1>θN 且N2>θN,無子集可拋。
(13) 修改聚類中心
(14) 計算模式樣本與聚類中心間的平均距離D¯j,j=1,2D¯j,j=1,2
(15) 計算全部模式樣本和其對應聚類中心的總平均距離D¯D¯
(16) 因是偶數次迭代,所以進行合並
(17) 計算聚類對之間的距離
(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 |
(20) 因N1>θN 且N2>θN,無子集可拋。
(21) 修改聚類中心
(22) 計算模式樣本與聚類中心間的平均距離,D¯1,j=1,2D¯1,j=1,2
(23) 計算全部模式樣本和其對應聚類中心的總平均距離D¯D¯
(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}
的標准差
(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σ1max≈0.986\rj=0.5σ1max≈0.986,則
為方便起見,將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 |
(29) 因N11>θN 且N12>θN且N2>θN,無子集可拋
(30) 修改聚類中心
(31) 計算模式樣本與聚類中心間的平均距離D¯jD¯j
(32) 計算全部模式樣本和其對應聚類中心的總平均距離D¯D¯
(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 |
所以
故沒有可以合並的類
(35) 最后一次迭代,算法結束。
最終的聚類結果是
該資料整理於國科大《模式識別》講稿和作業。