系统聚类法受方法限制不适合应用于量较大的数据,而现在我们实际分析的数据往往都是大数据,这一节讲的快速聚类法kmeans则是可应用于大数据的一种聚类方法。
算法原理
kmeans法是一种快速聚类法,这种算法的基本思想是将每一个样品分配给最近中心 (均值)的类中。知乎上一篇文章讲kmeans算法很清楚:
- 假定我们要对N个样本观测做聚类,要求聚为K类,首先选择K个点作为初始中心点;
- 接下来,按照距离(距离其实指的就是相似度)初始中心点最小的原则,把所有观测分到各中心点所在的类中;
- 每类中有若干个观测,计算K个类中所有样本点的均值,作为第二次迭代的K个中心点;
- 然后根据这个中心重复第2、3步,直到收敛(中心点不再改变或达到指定的迭代次数),聚类过程结束。
至于kmeans的数学描述这篇文章讲的也很清楚,感兴趣的可以去读读,我这篇笔记就不多说了。
R语言使用与举例
R中,使用函数kmeans()
进行快速聚类:
kmeans(x,centers,...)
- x 为数据矩阵或数据框;
- centers为聚类数或初始聚类中心。
举例说明
> set.seed(123)
> x1 <- matrix(rnorm(1000,0,0.3),ncol=10) #均值0,标准差为0.3的100*10正态随机矩阵
> x2 <- matrix(rnorm(1000,1,0.3),ncol=10) #均值1,标准差为0.3的100*10正态随机矩阵
> X <- rbind(x1,x2) #形成200*10的随机矩阵
> km <- kmeans(X,2)
> plot(X,pch=km$cluster)
聚类分析的一些问题
- 系统聚类分析的特点:综合性、形象性、客观性
- 关于kmeans算法:kmeans算法只有在类的均值被定义的情况下才能使用对于“噪声”和孤立点是敏感的,这种数据对均值影响极大。
- 关于变量变换
有时候原始数据不适合直接进行聚类,可以把变量变换一下再做分析,如:- 平移变换:;
- 极差变换:
- 标准差变换:
- 主成分变换
- 对数变换(适用于极差大时)