模糊数学笔记:五、模糊聚类
模糊聚類分析是模糊數學中應用最為廣泛的方法之一。近年來也涌現出了多種不同的模糊聚類方法,本文直接從其操作流程出發,介紹模糊聚類分析的主要內容。
1、一般流程
數據預處理相似關系建立聚類分析2、數據預處理方法
這一過程通常是將數據壓縮到區間 [0,1][0,1][0,1]上以便于建立模糊矩陣。常用方法如下:
- 平移-標準差變換
xik′=xik?xk ̄sk(i=1,…,n;k=1,…,m)x_{i k}^{\prime}=\frac{x_{i k}-\overline{x_{k}}}{s_{k}}(i=1, \ldots, n ; k=1, \ldots, m) xik′?=sk?xik??xk???(i=1,…,n;k=1,…,m)
其中,xk ̄=1n∑i=1nxik,sk=1n∑i=1n(xik?xk)2\overline{x_{k}}=\frac{1}{n} \sum_{i=1}^{n} x_{i k}, s_{k}=\sqrt{\frac{1}{n} \sum_{i=1}^{n}\left(x_{i k}-x_{k}\right)^{2}}xk??=n1?∑i=1n?xik?,sk?=n1?∑i=1n?(xik??xk?)2?
- 平移-極差變換
x′′=xik′?min?1≤i≤n{xik′}max?1≤i≤n{xik′}?min?1≤i≤n{xik′}(k=1,…,m)x^{\prime \prime}=\frac{x_{i k}^{\prime}-\min _{1 \leq i \leq n}\left\{x_{i k}^{\prime}\right\}}{\max _{1 \leq i \leq n}\left\{x_{i k}^{\prime}\right\}-\min _{1 \leq i \leq n}\left\{x_{i k}^{\prime}\right\}}(k=1, \ldots, m) x′′=max1≤i≤n?{xik′?}?min1≤i≤n?{xik′?}xik′??min1≤i≤n?{xik′?}?(k=1,…,m)
3、相似關系的建立方法
相似關系建立主要分為:相似系數法、距離法和主觀評分法,其中前2者使用最多。
第一類:相似系數法
- 數量積法
rij={1i=j1M∑k=1mxikxjki≠jr_{i j}=\left\{\begin{matrix} 1 & i=j \\ \frac{1}{M} \sum_{k=1}^{m} x_{i k} x_{j k} & i \neq j \end{matrix} \right. rij?={1M1?∑k=1m?xik?xjk??i=ji?=j?
其中 M=max?i≠j∑k=1mxikxjkM=\max _{i \neq j} \sum_{k=1}^{m} x_{i k} x_{j k}M=maxi?=j?∑k=1m?xik?xjk?, 此時 rij∈[?1,1]r_{i j} \in[-1,1]rij?∈[?1,1]
若存在 rij<0r_{i j}<0rij?<0 令所有 rij′=(1+rij)/2r_{i j}^{\prime}=\left(1+r_{i j}\right) / 2rij′?=(1+rij?)/2 使得 rij′∈[0,1]r_{i j}^{\prime} \in[0,1]rij′?∈[0,1]
-
夾角余弦法: rij=∑k=1mxikxjk∑k=1mxik2∑k=1mx2jk\quad r_{i j}=\frac{\sum_{k=1}^{m} x_{i k} x_{j k}}{\sqrt{\sum_{k=1}^{m} x_{i k}^{2}} \sqrt{\sum_{k=1}^{m} x^{2}}_{j k}}rij?=∑k=1m?xik2??∑k=1m?x2?jk?∑k=1m?xik?xjk??
-
相關系數法:
rij=∑k=1m∣xik?xˉi∥xjk?xˉj∣∑k=1m(xik?xˉi)2∑k=1m(xjk?xˉj)2r_{i j}=\frac{\sum_{k=1}^{m}\left|x_{i k}-\bar{x}_{i} \| x_{j k}-\bar{x}_{j}\right|}{\sqrt{\sum_{k=1}^{m}\left(x_{i k}-\bar{x}_{i}\right)^{2}} \sqrt{\sum_{k=1}^{m}\left(x_{j k}-\bar{x}_{j}\right)^{2}}} rij?=∑k=1m?(xik??xˉi?)2?∑k=1m?(xjk??xˉj?)2?∑k=1m?∣xik??xˉi?∥xjk??xˉj?∣?
其中 xˉi=1m∑k=1mxik,xˉj=1m∑k=1mxjk,i,j=1,2,…\bar{x}_{i}=\frac{1}{m} \sum_{k=1}^{m} x_{i k}, \quad \bar{x}_{j}=\frac{1}{m} \sum_{k=1}^{m} x_{j k}, i, j=1,2, \dotsxˉi?=m1?∑k=1m?xik?,xˉj?=m1?∑k=1m?xjk?,i,j=1,2,…
-
指數相似系數法
ri=1m∑k=1mexp?{?34(xik?xjk)2sk2},i,j=1,2,…,n.sk=1n∑k=1n(xik?xk ̄)2,xk ̄=1n∑k=1nxik(k=1,…m)\begin{array}{l} r_{i}=\frac{1}{m} \sum_{k=1}^{m} \exp \left\{-\frac{3}{4} \frac{\left(x_{i k}-x_{j k}\right)^{2}}{s_{k}^{2}}\right\}, i, j=1,2, \dots, n. \\ s_{k}=\sqrt{\frac{1}{n} \sum_{k=1}^{n}\left(x_{i k}-\overline{x_{k}}\right)^{2}}, \overline{x_{k}}=\frac{1}{n} \sum_{k=1}^{n} x_{i k}(k=1, \ldots m) \end{array} ri?=m1?∑k=1m?exp{?43?sk2?(xik??xjk?)2?},i,j=1,2,…,n.sk?=n1?∑k=1n?(xik??xk??)2?,xk??=n1?∑k=1n?xik?(k=1,…m)?
- 最大最小法
rij=∑k=1m(xik∧xjk)∑k=1m(xik∨xjk)r_{i j}=\frac{\sum_{k=1}^{m}\left(x_{i k} \wedge x_{j k}\right)}{\sum_{k=1}^{m}\left(x_{i k} \vee x_{j k}\right)} rij?=∑k=1m?(xik?∨xjk?)∑k=1m?(xik?∧xjk?)?
- 算術平均最小法
rij=2∑k=1m(xik∧xjk)∑k=1m(xik+xjk)r_{i j}=\frac{2 \sum_{k=1}^{m}\left(x_{i k} \wedge x_{j k}\right)}{\sum_{k=1}^{m}\left(x_{i k}+x_{j k}\right)} rij?=∑k=1m?(xik?+xjk?)2∑k=1m?(xik?∧xjk?)?
- 幾何平均最小法
rij=∑k=1m(xik∧xjk)∑k=1mxikxjkr_{i j}=\frac{\sum_{k=1}^{m}\left(x_{i k} \wedge x_{j k}\right)}{\sum_{k=1}^{m} \sqrt{x_{i k} x_{j k}}} rij?=∑k=1m?xik?xjk??∑k=1m?(xik?∧xjk?)?
第二類:距離法
- 絕對值倒數法
rij={1,i=jMm∣xik?xjk∣,i≠jr_{i j} =\left\{\begin{matrix} 1, i=j \\ \frac{M}{m}\left|x_{i k}-x_{j k}\right| \end{matrix}, i \neq j\right. rij?={1,i=jmM?∣xik??xjk?∣?,i?=j
-
絕對值指數法
$$
r_{i j} =\exp \left{-\sum_{k=1}^{m}\left|x_{i k}-x_{j k}\right|\right}$$
-
絕對值減數法
rij={1?c∑k=1m∣xik?xjk∣,i≠jr_{i j} =\left\{1-c \sum_{k=1}^{m}\left|x_{i k}-x_{j k}\right|, \quad i \neq j\right. rij?={1?ck=1∑m?∣xik??xjk?∣,i?=j
其中ccc適當選取,使得 rijr_{ij}rij?在 [0,1][0,1][0,1] 內分散開
- 海明距離
rij=d(xi,xj)=∑k=1m∣xik?xjk∣r_{ij}=d\left(x_{i}, x_{j}\right)= \sum_{k=1}^{m}\left|x_{i k}-x_{j k}\right| rij?=d(xi?,xj?)=k=1∑m?∣xik??xjk?∣
- 歐式距離
rij=d(xi,xj)=∑k=1m(xik?xjk)2r_{ij}=d\left(x_{i}, x_{j}\right) =\sqrt{\sum_{k=1}^{m}\left(x_{i k}-x_{j k}\right)^{2}} rij?=d(xi?,xj?)=k=1∑m?(xik??xjk?)2?
- 切比雪夫距離
rij=d(xi,xj)=?k=1m∣xik?xjk∣r_{ij}=d\left(x_{i}, x_{j}\right)=\bigvee_{k=1}^{m}\left|x_{i k}-x_{j k}\right| rij?=d(xi?,xj?)=k=1?m?∣xik??xjk?∣
第三類:主觀判別法
這類方法是最為簡單的一類,首先由專家打分,給出所有關系的值,再對專家的意見進行加權求和即可。
用上述方法生成一個矩陣R=(rij)n×nR=(r_{ij})_{n\times n}R=(rij?)n×n?即是相似矩陣,由于通常都要進行歸一化處理,其所有元素均在[0,1][0,1][0,1]區間上,因此該矩陣是一個模糊矩陣。
4、動態聚類的方法I-傳遞閉包法
-
傳遞閉包法:
- 求出模糊相似矩陣RRR的傳遞閉包t(R)t(R)t(R);
- 按λ\lambdaλ由大到小進行聚類, 這里λ\lambdaλ是傳遞閉包中的元素,由大到小排列即可
- 畫出動態聚類圖
-
傳遞閉包法舉例:
設有5組數據:
x1=(80,10,6,2),x2=(50,1,6,4),x3=(90,6,4,6),x4=(40,5,7,3),x5=(10,1,2,4)x_{1}=(80,10,6,2), x_{2}=(50,1,6,4), x_{3}=(90,6,4,6), x_{4}=(40,5,7,3), x_{5}=(10,1,2,4) x1?=(80,10,6,2),x2?=(50,1,6,4),x3?=(90,6,4,6),x4?=(40,5,7,3),x5?=(10,1,2,4)
先對其進行歸一化處理,得到特性矩陣(每一行對應一組數據):
X=(0.8910.860.330.560.100.860.6710.600.5710.440.510.50.110.100.290.67)\boldsymbol{X}=\left(\begin{matrix} 0.89 & 1 & 0.86 & 0.33 \\ 0.56 & 0.10 & 0.86 & 0.67 \\ 1 & 0.60 & 0.57 & 1 \\ 0.44 & 0.5 & 1 & 0.5 \\ 0.11 & 0.10 & 0.29 & 0.67 \end{matrix}\right) X=???????0.890.5610.440.11?10.100.600.50.10?0.860.860.5710.29?0.330.6710.50.67????????
通過兩次合成,得到其傳遞閉包:
t(R)=R4=(10.630.620.630.530.6310.620.700.530.620.6210.620.530.630.700.6210.530.530.530.530.531)t(R)=R^{4}=\left(\begin{matrix} {1} & {0 . 6 3} & {0 . 6 2} & {0 . 6 3} & {0 . 5 3} \\ {0 . 6 3} & {1} & {0 . 6 2} & {0 . 7 0} & {0 . 5 3} \\ {0 . 6 2} & {0 . 6 2} & {1} & {0 . 6 2} & {0 . 5 3} \\ {0 . 6 3} & {0 . 7 0} & {0 . 6 2} & {1} & {0 . 5 3} \\ {0 . 5 3} & {0 . 5 3} & {0 . 5 3} & {0 . 5 3} & {1} \end{matrix}\right) t(R)=R4=???????10.630.620.630.53?0.6310.620.700.53?0.620.6210.620.53?0.630.700.6210.53?0.530.530.530.531????????
對所有元素排序,容易得到:
1>0.70>0.63>0.62>0.531>0.70>0.63>0.62>0.53 1>0.70>0.63>0.62>0.53
因此依次取λ\lambdaλ截矩陣,便可得到聚類結果:
- λ=1\lambda=1λ=1時: XXX 被分成 5 類:
{x1},{x2},{x3},{x4},{x5}\left\{x_{1}\right\},\left\{x_{2}\right\},\left\{x_{3}\right\},\left\{x_{4}\right\},\left\{x_{5}\right\} {x1?},{x2?},{x3?},{x4?},{x5?}
- λ=0.7\lambda=0.7λ=0.7時: XXX 被分成 4 類:
{x1},{x3},{x2,x4},{x5}\left\{x_{1}\right\},\left\{x_{3}\right\},\left\{x_{2},x_{4}\right\},\left\{x_{5}\right\} {x1?},{x3?},{x2?,x4?},{x5?}
- λ=0.63\lambda=0.63λ=0.63時: XXX 被分成 3 類:
{x1,x2,x4},{x3},{x5}\left\{x_{1},x_{2},x_{4}\right\},\left\{x_{3}\right\},\left\{x_{5}\right\} {x1?,x2?,x4?},{x3?},{x5?}
- λ=0.62\lambda=0.62λ=0.62時: XXX 被分成 2 類:
{x1,x2,x3,x4},{x5}\left\{x_{1},x_{2},x_{3},x_{4}\right\},\left\{x_{5}\right\} {x1?,x2?,x3?,x4?},{x5?}
- λ=0.53\lambda=0.53λ=0.53時: XXX 被分成 1 類:
{x1,x2,x3,x4,x5}\left\{x_{1},x_{2},x_{3},x_{4},x_{5}\right\} {x1?,x2?,x3?,x4?,x5?}
5、動態聚類的方法II-直接聚類法
- 直接聚類法:
直接聚類法實際上與傳遞閉包法只有一個區別:即不用計算傳遞閉包,而是直接由相似矩陣進行聚類。
- 例:
仍以上例數據為基礎,直接根據相似矩陣給出λ\lambdaλ由大到小的排序:
1>0.70>0.63>0.62>0.56>0.55>0.54>0.53>0.38>0.37>0.241>0.70>0.63>0.62>0.56>0.55>0.54>0.53>0.38>0.37>0.24 1>0.70>0.63>0.62>0.56>0.55>0.54>0.53>0.38>0.37>0.24
類似傳遞閉包的方法,此時仍然要考慮λ=1,0.7,0.63,0.62\lambda=1,0.7,0.63,0.62λ=1,0.7,0.63,0.62幾種情況的聚類,而上述方法已經將這些聚類結果給出了,因此只需要考慮其后的聚類。
- λ=0.56,0.55,0.54\lambda=0.56,0.55,0.54λ=0.56,0.55,0.54時: XXX 被分成 2 類:
{x1,x2,x3,x4},{x5}\left\{x_{1},x_{2},x_{3},x_{4}\right\},\left\{x_{5}\right\} {x1?,x2?,x3?,x4?},{x5?}
也就是說,實際上0.54≤λ≤0.620.54 \leq \lambda \leq 0.620.54≤λ≤0.62時聚類水平不變。而由上例知,在λ=0.53\lambda=0.53λ=0.53時所有類別已全部歸為同一類,因此不需要再繼續聚類了。
6、小結
模糊聚類的操作步驟內容豐富,但其主干框架實際上只有幾個關鍵的步驟,即本文開頭的那副圖。其中最關鍵的地方在于具體的聚類方法。
通過上述兩個例子的對比,可以看到這兩類方法各有優缺點:
- 傳遞閉包:
- 優點:由傳遞閉包進行聚類時不會出現重復的聚類,在考慮聚類水平時操作簡單
- 缺點:需要計算傳遞閉包,也就是在繼續聚類之前需要額外的操作
- 直接聚類:
- 優點:不需要計算傳遞閉包,手工操作更加簡單
- 缺點:由于相似矩陣本身不一定具有傳遞性,因此聚類過程中可能會出現較多的重復聚類的情況
那么自然地,在具體的問題中應根據實際情況選擇更有優勢的方法。
總結
以上是生活随笔為你收集整理的模糊数学笔记:五、模糊聚类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python Numpy中返回下标操作函
- 下一篇: 模糊数学笔记:六、模糊模型识别-I(最大