聚類分析及R使用Part3-快速聚類法

系統(tǒng)聚類法受方法限制不適合應用于量較大的數(shù)據(jù),而現(xiàn)在我們實際分析的數(shù)據(jù)往往都是大數(shù)據(jù),這一節(jié)講的快速聚類法kmeans則是可應用于大數(shù)據(jù)的一種聚類方法。

算法原理

kmeans法是一種快速聚類法,這種算法的基本思想是將每一個樣品分配給最近中心 (均值)的類中。知乎上一篇文章講kmeans算法很清楚:

  • 假定我們要對N個樣本觀測做聚類,要求聚為K類,首先選擇K個點作為初始中心點;
  • 接下來,按照距離(距離其實指的就是相似度)初始中心點最小的原則,把所有觀測分到各中心點所在的類中;
  • 每類中有若干個觀測,計算K個類中所有樣本點的均值,作為第二次迭代的K個中心點;
  • 然后根據(jù)這個中心重復第2、3步,直到收斂(中心點不再改變或達到指定的迭代次數(shù)),聚類過程結(jié)束。

至于kmeans的數(shù)學描述這篇文章講的也很清楚,感興趣的可以去讀讀,我這篇筆記就不多說了。

R語言使用與舉例

R中,使用函數(shù)kmeans()進行快速聚類:

kmeans(x,centers,...)

  • x 為數(shù)據(jù)矩陣或數(shù)據(jù)框;
  • centers為聚類數(shù)或初始聚類中心。

舉例說明

> set.seed(123)
> x1 <- matrix(rnorm(1000,0,0.3),ncol=10) #均值0,標準差為0.3的100*10正態(tài)隨機矩陣
> x2 <- matrix(rnorm(1000,1,0.3),ncol=10) #均值1,標準差為0.3的100*10正態(tài)隨機矩陣
> X <- rbind(x1,x2) #形成200*10的隨機矩陣
> km <- kmeans(X,2)
> plot(X,pch=km$cluster)
kmeans_plot.png

聚類分析的一些問題

  • 系統(tǒng)聚類分析的特點:綜合性、形象性、客觀性
  • 關于kmeans算法:kmeans算法只有在類的均值被定義的情況下才能使用對于“噪聲”和孤立點是敏感的,這種數(shù)據(jù)對均值影響極大。
  • 關于變量變換
    有時候原始數(shù)據(jù)不適合直接進行聚類,可以把變量變換一下再做分析,如:
    • 平移變換:x-\overline x
    • 極差變換:max(x)-min(x)
    • 標準差變換:\frac{x-\overline x}{s}
    • 主成分變換
    • 對數(shù)變換(適用于極差大時)
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容