一種數據歸約技術,把大量的觀測值歸約爲若干個類,類被定義爲若干個觀測值組成的羣組,羣組內觀測值的類似度比羣間類似度高, 聚類有層次聚類和劃分聚類兩種經常使用方法算法
每個觀測值自成一類, 這些類每次兩兩合併,知道全部的類被聚成爲一類爲止app
經常使用的算法有函數
a、單聯動(single linkage)spa
b、全聯動(complete linkage)code
c、平均聯動(average linkage)it
d、質心(centroid)io
e、Wardfunction
首先指定類的個數 K,而後觀測值被隨機分紅 K 類,在從新造成聚合的類變量
經常使用的算法有可視化
a、K 均值(k-means)
b、圍繞點中心的劃分(PAM)
a、選擇合適的變量
第一(而且多是最重要的)步
b、縮放數據
一、分析中選擇的變量變化範圍很大,那麼該變量對結果的影響也是最大的,每每不可取
二、縮放數據的方法
1)最經常使用的是將每一個變量標準化爲均值爲0,標準差爲1的變量
2)使用 scale() 函數來將變量標準化到均值爲 0 和標準差爲 1 的變量,等價與 1)的方法
3)其餘的替代方法包括每一個個變量被其最大值相除或該變量減去它的平均值併除以變量的平均絕對誤差
df1 <- apply(mydata,2,function(x){(x-mean(x))/sd(x)}) #方法1 df2 <- apply(mydata,2,function(x){x/max(x)}) #方法3 df3 <- apply(mydata,2,function(x){(x-mean(x))/mad(x)})#方法3
c、尋找異常點
一、許多聚類方法對異常值比較敏感,會扭曲聚類方案
二、可使用 outliers 包中的函數篩選(和刪除)異常單變量離羣點,mvoutlier 包中包含了可以識別多元變量的離羣點函數
三、一種替代方法是使用對異常值穩健的聚類方法,圍繞中心點的劃分
d、計算距離
一、一般須要計算被聚類的實體間的距離
二、兩個觀測值之間最經常使用的距離量度是歐幾里得距離,其餘可選的量度包括曼哈頓距離、蘭氏距離、非對稱二元距離、最大距離和閔可夫斯基距離(可以使用?dist查看詳情)
e、選擇聚類算法
一、層次聚類適合小樣本(如150個觀測值或更少),並且這種狀況下嵌套聚類更實用
二、劃分的方法能處理更多的數據量,可是須要事先肯定聚類的個數,一旦選定了層次方法或劃分方法,就必須選擇一個特意的聚類算法,但每一個算法都有優缺點
f、獲取一種或多種聚類方法
這一步可使用步驟(e)選擇的方法
g、肯定類的數目
一、爲了獲得最終的聚類方案,必須肯定類的數目
二、經常使用的方法是嘗試不一樣高的類數(如 2 ~ K)並比較解的質量
三、在 NbClust 包中的 NbClust()函數提供了30個不一樣指標來幫助你進行選擇
h、得到最終的聚類解決方案
一旦類的個數肯定下來,就能夠提取出子羣,造成最終的聚類方案
i、結果可視化
一、可視化能夠幫助斷定聚類方案的意義和用處
二、層次聚類的結果一般表示一個樹狀圖,劃分的結果一般利用可視化雙變量聚類圖來表示
j、解讀類
一、一個類中的觀測值有何類似之處?
二、不一樣類之間能的觀測值有何不一樣?
三、通常經過對類的彙總統計來完成,對於連續變量,可計算類中的均值和中位數,對混合變量(數據總包含分類變量),能夠返回衆數、類別分佈
k、驗證結果
一、驗證聚類方案至關於問「這種劃分並非由於數據集或聚類方法的某種特性,而是確實給出了一個某種程度上有實際意義的結果嗎?」若是採用不一樣的聚類的方法或不一樣的樣本,是否會產生相同的類呢? fpc 、clv 、clValid 包包含了評估聚類解的穩定性函數