聚类篇——(四)有序样品聚类
本篇博文介紹另外一種聚類方法——有序樣品聚類。有序樣品聚類要求樣品按一定的順序排列,分類時是不能打亂次序的,即同一類樣品必須是互相鄰接的。比如要將新中國成立以來國民收入的情況劃分為幾個階段,此階段的劃分必須依年份的順序為依據,又如研究天氣演變的歷史時,樣品是按從古到今的年代排列的,年代的次序也是不能打亂的。
如果用X1,X2,?,Xn{{X}_{1}},{{X}_{2}},\cdots ,{{X}_{n}}X1?,X2?,?,Xn?表示nnn個有序的樣品,則每一類必須是這樣的形式:{Xi,Xi+1,?,Xi+k}\left\{ {{X}_{i}},{{X}_{i+1}},\cdots ,{{X}_{i+k}} \right\}{Xi?,Xi+1?,?,Xi+k?},其中1≤i≤n,k≥0,i+k≤n1\le i\le n,k\ge 0,i+k\le n1≤i≤n,k≥0,i+k≤n,即同一類樣品必須是相互鄰接的。研究這類問題稱為有序樣品的聚類法,該方法由Fisher在1958年提出。
有序樣品的聚類實質上是找一些分點,將有序樣品劃分為幾個分段,每個分段看做一個類,所以分類也稱為分割。顯然分點取在不同的位置就可以得到不同的分割。通常尋找最好分割的一個依據是使各段內部樣品之間的差異最小,而各段樣品之間的差異較大,所以有序樣品聚類法又稱為最優分割法。
有序樣品聚類的計算步驟
設有序樣品依次為X1,X2,?,Xn{{X}_{1}},{{X}_{2}},\cdots ,{{X}_{n}}X1?,X2?,?,Xn?(Xi{{X}_{i}}Xi?為ppp維向量)
定義類的直徑
設某一類GGG包含的樣品有{Xi,Xi+1,?,Xj}(j>i)\left\{ {{X}_{i}},{{X}_{i+1}},\cdots ,{{X}_{j}} \right\}\left( j>i \right){Xi?,Xi+1?,?,Xj?}(j>i),記
XˉG=1j?i+1∑t=ijXt{{\bar{X}}_{G}}=\frac{1}{j-i+1}\sum\limits_{t=i}^{j}{{{X}_{t}}}XˉG?=j?i+11?t=i∑j?Xt?
用D(i,j)D\left( i,j \right)D(i,j)表示這一類的直徑,常用的直徑有
D(i,j)=∑t=ij(Xt?XˉG)′(Xt?XˉG)D\left( i,j \right)=\sum\limits_{t=i}^{j}{{{\left( {{X}_{t}}-{{{\bar{X}}}_{G}} \right)}^{\prime }}\left( {{X}_{t}}-{{{\bar{X}}}_{G}} \right)}D(i,j)=t=i∑j?(Xt??XˉG?)′(Xt??XˉG?)
當p=1p=1p=1時,有時用直徑為:
D(i,j)=∑t=ij∣Xt?X~G∣D\left( i,j \right)=\sum\limits_{t=i}^{j}{\left| {{X}_{t}}-{{{\tilde{X}}}_{G}} \right|}D(i,j)=t=i∑j?∣∣∣?Xt??X~G?∣∣∣?
其中,X~G{{\tilde{X}}_{G}}X~G?是這一類數據的中位數。
定義分類的損失函數(或稱目標函數、誤差函數等)
用b(n,k)b\left( n,k \right)b(n,k)表示將nnn個有序樣品分為kkk類的某一種分法,常記分法為b(n,k)b\left( n,k \right)b(n,k)為{Xi1,Xi1+1,?,Xi2?1},{Xi2,Xi2+1,?,Xi3?1},?,{Xik,Xik+1,?,Xn}\left\{ {{X}_{{{i}_{1}}}},{{X}_{{{i}_{1}}+1}},\cdots ,{{X}_{{{i}_{2}}-1}} \right\},\left\{ {{X}_{{{i}_{2}}}},{{X}_{{{i}_{2}}+1}},\cdots ,{{X}_{{{i}_{3}}-1}} \right\},\cdots ,\left\{ {{X}_{{{i}_{k}}}},{{X}_{{{i}_{k}}+1}},\cdots ,{{X}_{n}} \right\}{Xi1??,Xi1?+1?,?,Xi2??1?},{Xi2??,Xi2?+1?,?,Xi3??1?},?,{Xik??,Xik?+1?,?,Xn?}或簡記為:
{i1,i1+1,?,i2?1},{i2,i2+1,?,i3?1},?,{ik,ik+1,?,n}\left\{ {{i}_{1}},{{i}_{1}}+1,\cdots ,{{i}_{2}}-1 \right\},\left\{ {{i}_{2}},{{i}_{2}}+1,\cdots ,{{i}_{3}}-1 \right\},\cdots ,\left\{ {{i}_{k}},{{i}_{k}}+1,\cdots ,n \right\}{i1?,i1?+1,?,i2??1},{i2?,i2?+1,?,i3??1},?,{ik?,ik?+1,?,n}
其中分點為:1=i1<i2<?<ik<n=ik+1?11={{i}_{1}}<{{i}_{2}}<\cdots <{{i}_{k}}<n={{i}_{k+1}}-11=i1?<i2?<?<ik?<n=ik+1??1,即ik+1=n+1{{i}_{k+1}}=n+1ik+1?=n+1
分類法的損失函數為:
L[b(n,k)]=∑t=1kD(it,it+1?1)L\left[ b\left( n,k \right) \right]=\sum\limits_{t=1}^{k}{D\left( {{i}_{t}},{{i}_{t+1}}-1 \right)}L[b(n,k)]=t=1∑k?D(it?,it+1??1)
當n,kn,kn,k固定時,L[b(n,k)]L\left[ b\left( n,k \right) \right]L[b(n,k)]越小表示各類的離差平方和越小,分類是合理的。因此要尋求一種分法b(n,k)b\left( n,k \right)b(n,k),使分類損失函數LLL達最小,記P(n,k)P\left( n,k \right)P(n,k)是使L[b(n,k)]L\left[ b\left( n,k \right) \right]L[b(n,k)]達極小的分類法。
L[b(n,k)]L\left[ b\left( n,k \right) \right]L[b(n,k)]的遞推公式
Fisher算法最核心的部分是利用以下兩個遞推公式:
L[b(n,2)]=min?2≤j≤n{D(1,j?1)+D(j,n)}L\left[ b\left( n,2 \right) \right]=\underset{2\le j\le n}{\mathop{\min }}\,\left\{ D\left( 1,j-1 \right)+D\left( j,n \right) \right\}L[b(n,2)]=2≤j≤nmin?{D(1,j?1)+D(j,n)}
L[b(n,k)]=min?k≤j≤n{L[P(j?1,k?1)]+D(j,n)}L\left[ b\left( n,k \right) \right]=\underset{k\le j\le n}{\mathop{\min }}\,\left\{ L\left[ P\left( j-1,k-1 \right) \right]+D\left( j,n \right) \right\}L[b(n,k)]=k≤j≤nmin?{L[P(j?1,k?1)]+D(j,n)}
以上兩個公式由定義即可證明。其中第二式表示,若要將nnn個樣品分為kkk類的最優分割,應建立在將j?1j-1j?1個樣品分為k?1k-1k?1類的最優分割基礎上,這里j=1,2,?,nj=1,2,\cdots ,nj=1,2,?,n。
最優解求法
若分類數kkk(1<k<n)\left( 1<k<n \right)(1<k<n),求分類法P(n,k)P\left( n,k \right)P(n,k)使它在損失函數意義下達到最小,其求法如下:
首先,找分點jk{{j}_{k}}jk?使L[P(n,k)]=L[P(jk?1,k?1)]+D(j,n)L\left[ P\left( n,k \right) \right]=L\left[ P\left( {{j}_{k}}-1,k-1 \right) \right]+D\left( j,n \right)L[P(n,k)]=L[P(jk??1,k?1)]+D(j,n)最小,于是得第kkk類Gk={jk,jk+1,?,n}{{G}_{k}}=\left\{ {{j}_{k}},{{j}_{k}}+1,\cdots ,n \right\}Gk?={jk?,jk?+1,?,n},然后找jk?1{{j}_{k-1}}jk?1?,使它滿足
L[P(jk?1,k?1)]=L[P(jk?1?1,k?2)]+D(jk?1,jk?1)L\left[ P\left( j_{k-1},k-1 \right) \right]=L\left[ P\left( {{j}_{k-1}}-1,k-2 \right) \right]+D\left( j_{k-1},j_k-1 \right)L[P(jk?1?,k?1)]=L[P(jk?1??1,k?2)]+D(jk?1?,jk??1)
得到第k?1k-1k?1類Gk?1={jk?1,?,jk?1}{{G}_{k-1}}=\left\{ {{j}_{k-1}},\cdots ,{{j}_{k}}-1 \right\}Gk?1?={jk?1?,?,jk??1},類似的方法依次可得到所有類G1,G2,?,Gk{{G}_{1}},{{G}_{2}},\cdots ,{{G}_{k}}G1?,G2?,?,Gk? ,這就是所求的最優解,即P(n,k)={G1,G2,?,Gk}P\left( n,k \right)=\left\{ {{G}_{1}},{{G}_{2}},\cdots ,{{G}_{k}} \right\}P(n,k)={G1?,G2?,?,Gk?}。
總之,最優分割法分類的依據是離差平方和,而算法的核心是兩個遞推公式。
下面以一個例子詳細說明有序樣本聚類法的計算過程。為了了解兒童的生長發育規律,今統計了男孩從出生到11歲每年平均增長的重量,如表1
- (1)計算直徑D(i,j)D\left( i,j \right)D(i,j)
因每個樣品只有一個指標(維度)即p=1p=1p=1,所以D(i,j)=∑t=ij(Xt?XˉG)D\left( i,j \right)=\sum\limits_{t=i}^{j}{\left( {{X}_{t}}-{{{\bar{X}}}_{G}} \right)}D(i,j)=t=i∑j?(Xt??XˉG?),得到的樣本的直徑矩陣表2。例如,計算D(5,7)D\left( 5,7 \right)D(5,7),此時類GGG包含三個樣品{X5,X6,X7}\left\{ {{X}_{5}},{{X}_{6}},{{X}_{7}} \right\}{X5?,X6?,X7?},故有
XˉG=13(1.5+1.3+1.4)=1.4{{\bar{X}}_{G}}=\frac{1}{3}\left( 1.5+1.3+1.4 \right)=1.4XˉG?=31?(1.5+1.3+1.4)=1.4,
D(5,7)=(1.5?1.4)2+(1.3?1.4)2+(1.4?1.4)2=0.02D\left( 5,7 \right)={{\left( 1.5-1.4 \right)}^{2}}+{{\left( 1.3-1.4 \right)}^{2}}+{{\left( 1.4-1.4 \right)}^{2}}=0.02D(5,7)=(1.5?1.4)2+(1.3?1.4)2+(1.4?1.4)2=0.02
- (2)計算最小分類損失函數{L[P(l,k)],3≤l≤11,2≤k≤10}\left\{ L\left[ P\left( l,k \right) \right],3\le l\le 11,2\le k\le 10 \right\}{L[P(l,k)],3≤l≤11,2≤k≤10},即分別計算將LLL個樣品分成2類、3類……時,最優分割的損失函數的所有結果,得到表3。其中,
L(P(3,2))=min?2≤j≤3{D(1,j?1)+D(j,3)}=min?{D(1,1)+D(2,3),D(1,2)+D(3,3)}=min?{0+0.005,28.125+0}=0.005L\left( P\left( 3,2 \right) \right)=\underset{2\le j\le 3}{\mathop{\min }}\,\left\{ D\left( 1,j-1 \right)+D\left( j,3 \right) \right\}=\min \left\{ D\left( 1,1 \right)+D\left( 2,3 \right),D\left( 1,2 \right)+D\left( 3,3 \right) \right\}=\min \left\{ 0+0.005,28.125+0 \right\}=0.005L(P(3,2))=2≤j≤3min?{D(1,j?1)+D(j,3)}=min{D(1,1)+D(2,3),D(1,2)+D(3,3)}=min{0+0.005,28.125+0}=0.005
L(P(4,3))=min?{L(P(2,2))+D(3,4),L(P(3,2))+D(4,4)}=min?{0.02,0.005}=0.005L\left( P\left( 4,3 \right) \right)=\min \left\{ L\left( P\left( 2,2 \right) \right)+D\left( 3,4 \right),L\left( P\left( 3,2 \right) \right)+D\left( 4,4 \right) \right\}=\min \left\{ 0.02,0.005 \right\}=0.005L(P(4,3))=min{L(P(2,2))+D(3,4),L(P(3,2))+D(4,4)}=min{0.02,0.005}=0.005
- (3)求最優分類
假如我們希望分成三類即k=3k=3k=3,由表3最后一行查得L[P(11,3)]=0.368L\left[ P\left( 11,3 \right) \right]=0.368L[P(11,3)]=0.368,括號中數字是8,這說明最優分類的損失函數是0.368,分類時首先分出第三類G3={X8~X11}{{G}_{3}}=\left\{ {{X}_{8}}\sim {{X}_{11}} \right\}G3?={X8?~X11?},再對其余的7個樣品考慮分為兩類的最優法,查表3中l=7,k=2l=7,k=2l=7,k=2的位置得L[P(7,2)]=0.280L\left[ P\left( 7,2 \right) \right]=0.280L[P(7,2)]=0.280,括號中數字是2,故G2={X2~X7}{{G}_{2}}=\left\{ {{X}_{2}}\sim {{X}_{7}} \right\}G2?={X2?~X7?},則G1={X1}{{G}_{1}}=\left\{ {{X}_{1}} \right\}G1?={X1?}。從而求得最優分類
P(11,3)P\left( 11,3 \right)P(11,3):{X1}\left\{ {{X}_{1}} \right\}{X1?},{X2~X7}\left\{ {{X}_{2}}\sim {{X}_{7}} \right\}{X2?~X7?},{X8~X11}\left\{ {{X}_{8}}\sim {{X}_{11}} \right\}{X8?~X11?}
當kkk取其余值時,分類情況列于表4中,
- (4)決定kkk
如果從生理角度預先能定出k當然最好,從表4即可知道分類,有時事先不能確定k,這時可作出L[P(l,k)]L\left[ P\left( l,k \right) \right]L[P(l,k)]隨kkk變化的曲線,如圖1,我們可以看到k=3,4k=3,4k=3,4處拐彎,以分成三類或四類為好。
經過上面的介紹我們對有序樣品聚類的基本思想、計算步驟,下面舉一個案例幫助大家更好的理解和使用有序樣品聚類。從三大產業構成角度,運用有序樣品聚類法對我國1978年-2009年國民經濟發展周期進行聚類分析,具體使用指標為第一產業占GDP的比重、第二產業占GDP的比重、第三產業占GDP的比重,如表5(注:數據來自于中國經濟社會大數據研究平臺)。
根據損失函數隨分類數變化趨勢圖可得,當分類數為6時,處于拐點位置。所以劃分為6類比較合適。然后根據表9的分類表可得,具體分類為1978–1981年、1982–1984年、1985–1992年、1993–1998年、1999–2004年、2005–2009年。結合GDP增長率對比分析,得出三大產業構成對經濟周期劃分的經濟含義, 1978–1981年是經濟周期的下降階段; 1982–1984年由于實行家庭聯產承包責任制,第一產業比重有所增加,且由于工業化水平有限,第一產業比重的增加促進了經濟的增長; 1985–1992年第三產業的比重大幅上升,服務業吸納了大量的勞動力,但由于工業化水平不高,經濟增長并不迅速; 1993–1998年第二產業的比重不斷增加,表明工業化進入一個新階段,產業結構趨于合理,但由于國企改革的困境,反而使經濟增長出現了下降; 1999–2004年第二產業和第三產業比重都在增加,促進了經濟的發展,經濟增長率開始增加; 2005–2009年經濟在進一步增長后,由于經濟危機、通貨膨脹等因素,經濟增長率有所下降。
附:由于表5-表9的圖片較大,不是特別清晰。為了方便小伙伴兒們查看具體數值,將其共享到網盤中了,如有需要請點擊以下鏈接自行下載。
鏈接:https://pan.baidu.com/s/1m8GivWh8iv2h_gZQ90KH4A
提取碼:gsy8
ps:初衷是通過撰寫博文記錄自己所學所用,實現知識的梳理與積累;將其分享,希望能夠幫到面臨同樣困惑的小伙伴兒。如發現博文中存在問題,歡迎隨時交流~~
總結
以上是生活随笔為你收集整理的聚类篇——(四)有序样品聚类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何拿到阿里、华为、美团等6个大厂的顶级
- 下一篇: 手机vr玩电脑上的3d游戏以及看视频