R-語言 聚類分析


  聚類分析是一種數據歸約技術,旨在揭露一個數據集中觀測值的子集。它可以把大量的觀測值歸約為若干類。最常用的兩種聚類方法是層次聚類(hierarchical agglomeration clustering)和划分聚類(partitioning clustering)。在層次聚類中,每一個觀測值自成一類,這些類每次兩兩合並,直到所有的類合並成一類為止。在划分聚類中,首先指定類的個數K,然后觀測值被隨機分成K類,再重新形成聚合的類。

一、聚類分析的一般步驟

  1. 選擇合適的變量。第一步是選擇你感覺可能對識別和理解數據中不同觀測值分組有重要影響的變量。
  2. 縮放數據。如果我們在分析中選擇的變量變化范圍很大,那么該變量對結果的影響也是最大的。這往往是不可取的,分析師往往在分析之前縮放數據。最常用的方法是將每個變量標准化為均值為0標准差為1的變量。通常可以使用scale()函數來將變量標准化到均值為0何標准差為1的變量。
  3. 尋找異常點。許多聚類方法對異常值是十分敏感的,它能扭曲我們得到的聚類方案。
  4. 計算距離。盡管不同的聚類算法之間的差異很大,但是它們它們通常需要計算被聚類的屍體之間的距離。兩個觀測值之間最常用的距離度量是歐幾里得距離,其他可選距離包括曼哈頓距離、蘭氏距離等。
  5. 選擇聚類算法。接下來選擇對數據聚類的方法,層次聚類對於小樣本來說很實用(如150個觀測值或更少),而且這種情況下使用嵌套聚類更實用。划分的方法能處理更大的數據量,但是需要事先確定聚類的個數。一旦選定了層次方法和划分方法,就必須選擇一個特定的聚類算法。
  6. 獲得一種或多種聚類方法。
  7. 確定類的數目。為了得到最終的聚類方案,你必須確定類的數目。
  8. 獲取最終的聚類解決方案。一旦類的個數確定下來,就可以提取出子群,形成最終的聚類方案了。  
  9. 結果可視化。可視化可以幫助你判定聚類方案的意義和用處。層次聚類的結果通常表現為一個樹狀圖。划分的結果通常利用可視化雙變量聚類圖來表示。
  10. 解讀類。一旦聚類方案確定,你就必須解釋(或命名)這個類。一個類中的觀測值有何相似之處?不同類之間的觀測值有何不同?這一步通常通過獲得類中的每一變量的匯總統計來完成。對於連續數據,每一類中變量的均值和中位數都被計算出來。對於混合數據(數據中包括分類變量),結果中將返回各類的眾數或類別分布。
  11. 驗證結果。驗證聚類方案相當於問:“這種划分結果並不是因為數據集或聚類方法的某種特性,而是確實給出了一個某種程度上有實際意義的結果嗎?”如果采用不同的聚類方法或不同的樣本,是否會產生相同的類?fpc、clv、和clValid包包含了評估聚類解的穩定性的函數。

二、計算距離

  聚類分析的第一步都是度量樣本單元間的距離、相異性或相似性。R軟件中自帶dist()函數能用來計算矩陣貨數據框中所有行(觀測值)之間的距離。合適是dist(x,method=?),這里的x表示輸入數據,並且默認使用的方法為歐幾里得距離。函數默認返回一個下三角矩陣,但是as.matrix()函數可使用標准括號符號得到距離。對於營養數據集的數據框來說,前四行的距離為:

> d <- dist(nutrient)
> as.matrix(d)[1:4,1:4]
             BEEF BRAISED HAMBURGER BEEF ROAST BEEF STEAK
BEEF BRAISED      0.00000   95.6400   80.93429   35.24202
HAMBURGER        95.64000    0.0000  176.49218  130.87784
BEEF ROAST       80.93429  176.4922    0.00000   45.76418
BEEF STEAK       35.24202  130.8778   45.76418    0.00000

  需要注意的是,在營養數據集中,距離很大程度上有能量(energy)這個變量控制,這是因為該變量變化范圍更大。縮放數據有利於均衡各變量的影響。

三、層次聚類

  如前所述,在層次聚類中,起初每一個實例或觀測值屬於一類。聚類就是把每一次把兩類聚成新的一類,直到所有的類聚成單個類為止,算法實現如下:

  (1)定義每個觀測值為一類

  (2)計算每類和其他各類的距離

  (3)把距離最短的兩類合並成一類,這樣類的個數就減少一個

  (4)重復步驟(2)和(3),直到包含所有觀測值的類合並成單個類為止

  在層次聚類算法中,主要的區別是它們對類的定義不同(步驟2)。常用的五種聚類方法和其中兩類之間的距離的定義如下:

  (1)單聯動。一個類中的點到另一個類中的點的最小距離。

  (2)全聯動。一個類中的點到另一個類中的點的最大距離。

  (3)平均聯動。一個類中的點和另一個類中的點的平均距離。

  (4)質心。兩類中質心(變量均值向量)之間的距離。對於單個觀測值來說,質心就是變量的值。

  (5)Ward法。兩個類之間所有變量的方差分析的平方和

  單聯動聚類方法傾向於發現細長的、雪茄型的類。它也通常展示一種鏈式現象,即不相似的觀測值分到一類中,因為它們和它們的中間值很相像。全聯動聚類傾向於發現大致相等的直徑緊湊類。它對異常值很敏感。

 


免責聲明!

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



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