系統(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)
聚類分析的一些問題
- 系統(tǒng)聚類分析的特點:綜合性眉菱、形象性迹栓、客觀性
- 關(guān)于kmeans算法:kmeans算法只有在類的均值被定義的情況下才能使用對于“噪聲”和孤立點是敏感的,這種數(shù)據(jù)對均值影響極大俭缓。
- 關(guān)于變量變換
有時候原始數(shù)據(jù)不適合直接進行聚類克伊,可以把變量變換一下再做分析,如:- 平移變換:华坦;
- 極差變換:
- 標準差變換:
- 主成分變換
- 對數(shù)變換(適用于極差大時)