聚類分析


聚類分析

聚類分析和判別分析有相似的作用,都是起到分類的作用。但是,判別分析是已知分 類然后總結出判別規則,是一種有指導的學習;而聚類分析則是有了一批樣本,不知道它們 的分類,甚至連分成幾類也不知道,希望用某種方法把觀測進行合理的分類,使得同一類的 觀測比較接近,不同類的觀測相差較多,這是無指導的學習。

所以,聚類分析依賴於對觀測間的接近程度(距離)或相似程度的理解,定義不同的距離 量度和相似性量度就可以產生不同的聚類結果。

SAS/STAT中提供了譜系聚類、快速聚類、變量聚類等聚類過程。

譜系聚類方法介紹

譜系聚類是一種逐次合並類的方法,最后得到一個聚類的二叉樹聚類圖。其想法是, 對於 個觀測,先計算其兩兩的距離得到一個距離 矩陣,然后把離得最近的兩個觀測合並為一類,於是我們現在只剩了 個類(每個單獨的未合並的觀測作為一個類 )。計算這 個類兩兩之間的距離,找到離得最近的兩個 類將其合並,就只剩下了 個類……直到剩下兩個類,把它們合並為一 個類為止。當然,真的合並成一個類就失去了聚類的意義,所以上面的聚類過程應該在某個 類水平數(即未合並的類數)停下來,最終的類就取這些未合並的類。決定聚類個數是一個 很復雜的問題。

設觀測個數為 ,變量個數為 , 為在某一聚類水平上的類的個數, 為第 個觀測, 是當前(水平 )的第 類, 為 中的觀測個數, 為均值向量, 為類 中的均值向量(中心), 為歐氏長度, 為總離差平方和, 為類 的類內離差平方和, 為聚類水平 對應的各類的類內離差平方和的總和。假設 某一步聚類把類 和類 合並為下一水平的類,則定義 為合並導致的類內離差平方和的增量。用 代表兩個觀測之間的距離或非相似性測度, 為第 水平的類 和類 之間的距離或非相似性測度。

進行譜系聚類時,類間距離可以直接計算,也可以從上一聚類水平的距離遞推得到。觀測 間的距離可以用歐氏距離或歐氏距離的平方,如果用其它距離或非相似性測度得到了一個觀 測間的距離矩陣也可以作為譜系聚類方法的輸入。

根據類間距離的計算方法的不同,有多種不同的聚類方法。其中幾種介紹如下:

 

一、類平均法(METHOD=AVERAGE)

測量兩類每對觀測間的平均距離,即

在 時若類 和類 合並為下一水平的類 類,則類 和類 的距離的遞推公式為

 

 

二、重心法(METHOD=CENTROID)

重心法測量兩個類的重心(均值)之間的(平方)歐氏距離。即

當觀測間距離為平方歐氏距離時有遞推公式

 

 

三、最長距離法(METHOD=COMPLETE)

計算兩類觀測間最遠一對的距離,即

遞推公式為 

 

四、最短距離法(METHOD=SINGLE)

計算兩類觀測間最近一對的距離,即

遞推公式為 

 

五、密度估計法(METHOD=DENSITY)

密度估計法按非參數密度來定義兩點間的距離 。如果兩個點 和 是近鄰(兩點距離小於某指定常數或 在距離 最近的若干點內)則距離是兩點密度估計的 倒數的平均,否則距離為正無窮。密度估計有最近鄰估計(K=)、均勻核估計(R=)和Wong 混合法(HYBRID)。

 

六、Ward最小方差法(或稱Ward離差平方和法,METHOD=WARD)

當觀測間距離為 時遞推公式為

Ward方法並類時總是使得並類導致的類內離差平方和增量最小。

其它的聚類方法還有EML法、可變類平均法(FLEXIBLE)、McQuitty相似分析法(MCQUITTY )、中間距離法(MEDIAN)、兩階段密度估計法(TWOSTAGE)等。

 

譜系聚類類數的確定

譜系聚類最終得到一個聚類樹,可以把所有觀測聚為一類。到底應該把觀測分為幾類 是一個比較困難的問題,因為分類問題本身就是沒有一定標准的,關於這一點《實用多元統 計分析》(王學仁、王松桂,上海科技出版社)第十章給出了一個很好的例子,即撲克牌的 分類。我們可以把撲克牌按花色分類,按大小點分類,按橋牌的高花色低花色分類,等等。

決定類數的一些方法來自統計的方差分析的思想,我們在這里作一些介紹。

 

一、 統計量

其中 為分類數為 個類時的總類內離差平方和, 為所有變量的總離差平方和。 越大,說明分為 個類時每個類內的離差平方和都比較小,也 就是分為 個類是合適的。但是,顯然分類越多,每個 類越小, 越大,所以我們只能取 使得 足夠大,但 本身比較小,而且 不再大幅度增加。

 

二、半偏相關

在把類 和類 合並為下一水平的類 時,定義半偏相關

半偏 

其中 為合並類引起的類內離差平方和的增量,半 偏相關越大,說明這兩個類越不應該合並,所以如果由 類合並為 類時如果半偏相關很大就應該取 類。

 

三、雙峰性系數

其中 是偏度, 是峰度。大於0.555的 值(這時為均勻分布)可能指示有雙峰或多 峰邊緣分布。最大值1.0(二值分布)從僅取兩值的總體得到。

 

四、偽F統計量

偽F統計量評價分為 個類的效果。如果分為 個類合理,則類內離差平方和(分母)應該 較小,類間平方和(分子)相對較大。所以應該取偽F統計量較大而類數較小的聚類水平。

 

五、偽 統計量

用此統計量評價合並類 和類 的效果,該值大說明不應合並這兩個類,所 以應該取合並前的水平。

 

用CLUSTER過程和TREE過程進行譜系聚類

一、CLUSTER過程用法

CLUSTER過程的一般格式為:

		PROC CLUSTER DATA=輸入數據集 METHOD=聚類方法  選項;

 

			VAR 聚類用變量;
		COPY 復制變量;
		RUN;

其中的VAR語句指定用來聚類的變量。COPY語句把指定的變量復制到OUTTREE=的數據集中。 PROC CLUSTER語句的主要選項有:

  • METHOD=選項,這是必須指定的,此選項決定我們要用的聚類方法,主要由類間距離定義 決定。方法有AVERAGE、CENTROID、COMPLETE、SINGLE、DENSITY、WARD、EML、FLEXIBLE、MCQUITTY 、MEDIAN、TWOSTAGE等,其中DENSITY、TWOSTAGE等方法還要額外指定密度估計方法(K=、R= 或HYBRID)。
  • 輸入DATA=數據集,可以是原始觀測數據集,也可以是距離矩陣數據集。
  • OUTTREE=輸出譜系聚類樹數據集,把譜系聚類樹輸出到一個數據集,可以用TREE過程繪 圖並實際分類。
  • STANDARD選項,把變量標准化為均值0,標准差1。
  • PSEUDO選項和CCC選項。PSEUDO選項要求計算偽F和偽 統計量,CCC選項要求計算 、半偏 

和CCC統計量。其中CCC統計量也是一種考察聚類效果的統計量,CCC較大的聚類水平是較好的 。

 

二、TREE過程用法

TREE過程可以把CLUSTER過程產生的OUTTREE=數據集作為輸入,畫出譜系聚類的樹圖,並 按照用戶指定的聚類水平(類數)產生分類結果數據集。一般格式如下:

		PROC TREE DATA=輸入聚類結果數據集 OUT=輸出數據集 GRAPHICS  NCLUSTER=類數 選項;
			COPY 復制變量;
		RUN;

其中COPY語句把輸入數據集中的變量復制到輸出數據集(實際上這些變量也必須在CLUSTER 過程中用COPY語句復制到OUTTREE=數據集)。PROC TREE語句的重要選項有:

    • DATA=數據集,指定從CLUSTER過程生成的OUTTREE=數據集作為輸入。

 

    • OUT=數據集,指定包含最后分類結果(每一個觀測屬於哪一類,用一個CLUSTER變量區 分)的輸出數據集。

 

 

  • NCLUSTERS=選項,由用戶指定最后把樣本觀測分為多少個類。
  • GRAPHICS,這是指定畫譜系聚類的樹圖時使用高分辨率圖形(要求有SAS/GRAPH模塊)。
  • HORIZONTAL,畫樹圖時橫向畫。

 

三、例子

我們以多元分析中一個經典的數據作為例子,這是Fisher分析過的鳶尾花數據,有三 種不同鳶尾花(Setosa、Versicolor、Virginica),種類信息存入了變量SPECIES,並對每 一種測量了50棵植株的花瓣長(PETALLEN)、花瓣寬(PETALWID)、花萼長(SEPALLEN)、 花萼寬(SEPALWID)。這個數據已知分類,並不屬於聚類分析的研究范圍。這里我們為了示 例,假裝不知道樣本的分類情況(既不知道類數也不知道每一個觀測屬於的類別),讓SAS取 進行聚類分析,如果得到的類數和分類結果符合真實的植物分類,我們就可以知道聚類分析 產生了好的結果。

這里我們假定數據已輸入SASUSER.IRIS中(見系統幫助菜單的“Sample Programs | SAS/STAT | Documentation Example 3 from Proc Cluster”)。為了進行譜系聚類並產生幫助確定 類數的統計量,使用如下過程:

proc cluster data=sasuser.iris method=ward outtree=otree pseudo ccc;
  var petallen petalwid sepallen sepalwid;
  copy species;
run;

可以顯示如下的聚類過程(節略):

                                                                            T  
                                                              Pseudo Pseudo i  
NCL -Clusters Joined-   FREQ   SPRSQ    RSQ    ERSQ     CCC      F    t**2  e  
                                                                               
149 OB16     OB76          2 0.000000 1.0000  .          .        .      .     
148 OB2      OB58          2 0.000007 1.0000  .          .    1854.1     .  T  
147 OB96     OB107         2 0.000007 1.0000  .          .    1400.1     .  T  
146 OB89     OB113         2 0.000007 1.0000  .          .    1253.1     .  T  
145 OB65     OB126         2 0.000007 1.0000  .          .    1182.9     .  T  
……………………………………
 25 CL50     OB57          7 0.000634 0.9824 0.973335   6.446  291.0    5.6 
 24 CL78     CL62          7 0.000742 0.9817 0.972254   6.430  293.5    9.8 
 23 CL68     CL38          9 0.000805 0.9809 0.971101   6.404  296.0    6.9 
 22 CL30     OB137         6 0.000896 0.9800 0.969868   6.352  298.3    5.1  
 21 CL70     CL33          4 0.000976 0.9790 0.968545   6.290  300.7    3.2 
 20 CL36     OB25         10 0.001087 0.9779 0.967119   6.206  302.9    9.8  
 19 CL40     CL22         19 0.001141 0.9768 0.965579   6.146  306.1    7.7  
 18 CL25     CL39         10 0.001249 0.9755 0.963906   6.082  309.5    6.2  
 17 CL29     CL45         16 0.001351 0.9742 0.962081   6.026  313.5    8.2  
 16 CL34     CL32         15 0.001462 0.9727 0.960079   5.984  318.4    9.0  
 15 CL24     CL28         15 0.001641 0.9711 0.957871   5.929  323.7    9.8  
 14 CL21     CL53          7 0.001873 0.9692 0.955418   5.850  329.2    5.1 
 13 CL18     CL48         15 0.002271 0.9669 0.952670   5.690  333.8    8.9  
 12 CL16     CL23         24 0.002274 0.9647 0.949541   4.632  342.4    9.6  
 11 CL14     CL43         12 0.002500 0.9622 0.945886   4.675  353.3    5.8  
 10 CL26     CL20         22 0.002694 0.9595 0.941547   4.811  368.1   12.9   
  9 CL27     CL17         31 0.003060 0.9564 0.936296   5.018  386.6   17.8  
  8 CL35     CL15         23 0.003095 0.9533 0.929791   5.443  414.1   13.8  
  7 CL10     CL47         26 0.005811 0.9475 0.921496   5.426  430.1   19.1  
  6 CL8      CL13         38 0.006042 0.9414 0.910514   5.806  463.1   16.3  
  5 CL9      CL19         50 0.010532 0.9309 0.895232   5.817  488.5   43.2  
  4 CL12     CL11         36 0.017245 0.9137 0.872331   3.987  515.1   41.0  
  3 CL6      CL7          64 0.030051 0.8836 0.826664   4.329  558.1   57.2  
  2 CL4      CL3         100 0.111026 0.7726 0.696871   3.833  502.8  115.6  
  1 CL5      CL2         150 0.772595 0.0000 0.000000   0.000     .   502.8

 

偽F圖形

 

 

CCC圖形

 

圖形

 

半偏圖形

 

這個輸出列出了把150個觀測每次合並兩類,共合並149次的過程。NCL列指定了聚類水平G (即這一步存在的單獨的類數)。“-Clusters Joined-”為兩列,指明這一步合並了哪兩個 類。其中OBxxx表示哪一個原始觀測,而CLxxx表示在哪一個聚類水平上產生的類。 比如,NCL為149時合並的是OB16和OB76,即16 號觀測和76號觀測,NCL為1(最后一次合並)合並的是CL5和CL2,即類水平為5時得到的類和 類水平為2時得到的類,CL5又是由CL9和CL19合並得到的,CL2是由CL4和CL3合並得到的,等 等。FREQ表示這次合並得到的類有多少個觀測。SPRSQ是半偏 ,RSQ是 ,ERSQ是在均勻零假設下的 的近似期望值,CCC為CCC統計量,Pseudo F 為偽F統計量,Pseudo t**2為偽 統計量,Norm RMS Dist是正規化的的兩類 元素間距離的均方根,Tie指示距離最小的候選類對是否有多對。

因為我們假裝不知道數據的實際分類情況,所以我們必須找到一個合理的分類個數。 為此,考察CCC、偽F、偽 和半偏 統計量。我們打開INSIGHT界面,調入上面 產生的OTREE數據集,繪制各統計量的圖形。因為類水平太大時的信息沒有多少用處,所以我 們對OTREE數據集取其類水平不超過30的觀測,即:

data ot;
  set otree;
  where _ncl_ <= 30;
run;

各統計量的圖形見圖2-圖5。CCC統計量建議取5類或3類(局部最大值),偽F建議3類( 局部最大值),偽 建議3類(局部最大值處是不應合並的,即 局部最大值處的類數加1),半偏 建議3類。由這些指標看比較一致的是3類, 其次是5類。為了看為什么不能明顯地分為三類,我們對四個變量求主分量,畫出前兩個主分 量的散點圖(見圖6)。可以看出Setosa(紅色)與其它兩類分得很開,而Versicolor(綠色 )與Virginica(藍色)則不易分開。

 

因為我們知道要分成3類,所以我們用如下的TREE過程繪制樹圖並產生分類結果數據 集:

 

proc tree data=otree graphics horizontal nclusters=3 out=oclust;
  copy species;
run;

樹圖見圖7,因為觀測過多所以圖顯得雜亂。從圖中也可以看出,分為兩類可以分得很開 ,而分成三類時距離則不夠遠。如果上面的TREE過程去掉輸出數據集要求,可以用包含最后 的聚類過程的OT數據集來作為輸入。這個TREE過程用NCLUSTERS=3指定了分成3個類,結果數 據集OCLUST中有一個CLUSTER變量代表生成的分類。我們把這個數據集調入INSIGHT中用不同 顏色代表SPECIES(實際種類),用不同符號代表不同聚類過程分類,作前兩個主分量散點圖 (見圖8)。可以看出,有Virsicolor和Virginica兩類互相都有分錯為對方的。

為了統計分類結果,可以用FREQ過程作表:

proc freq data=oclust;
  tables species*cluster /
      nopct norow nocol;
run;

                   SPECIES(Species)     CLUSTER                      
                                                                        
                   Frequency  |       1|       2|       3|  Total   
                   -----------+--------+--------+--------+           
                   Setosa     |      0 |      0 |     50 |     50    
                   -----------+--------+--------+--------+           
                   Versicolor |     49 |      1 |      0 |     50    
                   -----------+--------+--------+--------+           
                   Virginica  |     15 |     35 |      0 |     50    
                   -----------+--------+--------+--------+              
                   Total            64       36       50      150       

可見Virginica被分錯的較多。

讀者可以自己試用其它的類間距離來聚類,可以得到不同的結果。

 

(寫的太好,摘抄於此, 原文鏈接“http://www.math.pku.edu.cn/teachers/lidf/docs/statsoft/html/sas-5/cluster.html”)


免責聲明!

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



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