聚类分析以及k-means的优缺点

本文详细阐述了聚类分析的理论、聚类方法(如Q型和R型)、系统聚类中的各种方法(如最短距离法、K-means算法),并通过实例展示了它们在实际问题中的应用。
摘要由CSDN通过智能技术生成

一.聚类分析cluster Analysis)是研究物以类聚的现代统计方法。在过去是依靠经验和专业知识做定性分析处理,很少利用数学方法多元统计分析逐渐被引进数值分类,形成聚类分析的分支。

思想:认为所研究的样本或指标(变量)之间存在着不同程度的相似性(亲疏关系)。于是根据一批样本的多个观测值指标,具体找出可以度量样本之间相似的统计量,以这些统计量作为划分类型的依据,把一些相似程度较大的样本聚合为一类,把另外一些彼此之间相似程度较大的样本又聚为一类,关系密切的聚合完毕,把不同类型的一一划分起来形成小到大的分类系统。

分型:Q型聚类:对样本的聚类;R型聚类:对变量的聚类

聚类统计量:1.距离:欧式距离,马氏距离,兰氏距离2.相似系数。(推理过程不展开了,可以网上搜索)

二.系统聚类法

(1)基本思想:确定了距离和相似系数后就要进行分类,有多种分类方法,最常用是样品自成一类,然后把每次具有最小距离的两类进行合并,合并后继续计算类与类之间的距离,这个过程是一直持续到把所有样本归为一类,并把这个过程作成一张聚类图,由聚类图进行方便的分类。

(1)最短距离法(single):类与类之间的距离等于两类之间最靠近样本的距离。

  (2) 最长距离法(complete):类与类之间的距离等于两类之间最远样本之间的距离。

(3)中间距离法(median):最长距离夸大了类间的距离,最短距离低估了类间距离。介于两者之间的距离称为中间距离。

(4)类平均法(average):类与类之间的距离等于各元素的两两之间的平方距离。

(5)重心法(centroid):定义为重心的距离

(6)离差平方和法(ward)基于方差分析,如果分类正确,那么同类之间的离差平方和会非常小,反之,则比较大。

三.基本步骤:

 (1)计算距离阵

计算n个样品之间的两两距离D

(2)进行系统聚类

构造n个类,每个类只包含一个样本;合并距离最近的两个类为新的一类;计算新类与当前各类的距离,如果类的个数为1,结束;否则回到步骤2;

(3)绘制聚类图

(4)画出分类框rect.hclust()给系统聚类图加分类框

(5)确定分类结果,cutree()给出具体的分类结果

四.具体案例(源代码)

研究全国31个省市区2007年的城镇居民生活消费水平分布规律,根据调查资料做区域消费类型划分。

plot(hclust(D,'single'))#最短距离法

结果如下:

plot(hclust(D,'complete'))#最长距离法

plot(hclust(D,'average'))#平均距离法

plot(hclust(D,'ward.D'))#ward.D法

plot(hclust(D,"ward.D2"))#ward.D2法

经过以上图像的分析,使用ward.D2方法的聚类的效果较好,况且认为分为四类比较好。

H=clust(D,'ward.D2')

rect.hclust(H,4)

cutree(H,4)

因此根据原表格的数据分四类

北京   天津    河北  山西  内蒙古  辽宁  吉林  黑龙江  上海

1       2         3      3       3       4       3        3         1

江苏  浙江  安徽  福建 江西 山东 河南 湖北 湖南 广东 广西 

2       1     4       2      4    3     3      4    4      1     4

海南  重庆 四川 贵州 云南 西藏 陕西 甘肃 青海 宁夏 新疆

4       4     4     4     4      4    4      3     3     3      3  

总结一下:

第一类:北京,上海,浙江,广东

第二类:天津,江苏,福建

第三类:河北,山西,内蒙古,吉林,黑龙江,山东,河南,甘肃,青海,宁夏,新疆

第四类:辽宁,安徽,江西,湖北,湖南,广西,海南,重庆,四川,贵州,云南,西藏,陕西

四.快速聚类法

K-means法基本思想是将每一个样品分配给最近的中心(均值)的类中

步骤:

(1)将所有的样品分为k类

(2)通过欧几里得距离将某个样品划入离中心最近的类中,并获得样品与失去样品的类,重新计算中心的坐标。

(3)重复步骤(2),直到所有的样品都不能分配为止

系统聚类对不同的类数产生一系列的聚类结果,而K值只能产生指定类数的聚类结果。

计算原理:K-means法以k为参数,把n个对象分为k类,使类内具有较高的相似度,而且类间的相似度较低。相似度的计算是根据类中对象的均值来进行的。首先随机选择k个对象,每个对象初始地代表了一个簇的平均值或者中心。对剩余的每个对象,根据其与各个聚类中心的距离将它赋给最近的簇。然后重新计算每个簇的平均值作为聚类中心进行聚类。每个过程不断重复,直到准则函数收敛。

 E=∑∑  (p-m(i) )^2 

E为数据中所有对象与相应聚类中心的均方差之和,p代表对象空间中的一个点,m(i)为C(i)的均值。

K-means算法

输入:聚类个数k,以及包含n个对象的数据

输出:满足平方误差准则最小的k个聚类

(1)从n个数据对象任选k个对象作为初始簇中心

(2)循环下述流程(3)和(4)

(3)计算每个对象与每个簇中对象的均值(中心对象)的距离,并根据最小距离重新对相应的对象进行划分

(4)重新计算每个簇的均值。

五.案例研究

set.seed(123)

x1=matrix(rnorm(1000,0,0.3),ncl=10))

x2=matrix(rnorm(1000,1,0.3))

X=rbind(x1,x2)

H=hclust(dist(X))

plot(H)

rect.hclust(H,2)

cutree(H,2)

km=kmeans(X,2)

km$cluster

plot(X,pch=km$cluster)

设定均值分布为0,1的两类随机数矩阵

结果如下:

是不是非常准确的把均值不同的值分开了

> H=hclust(dist(X))

> plot(H)

> rect.hclust(H,2)

> cutree(H,2)

  [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

 [29] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

 [57] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

 [85] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2

[113] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2

[141] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2

[169] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2

[197] 2 2 2 2

                                                                           

六.值得关注的几个点:

k-means算法只有在类的平均值被定义的情况下才能使用,这可能不适合某类应用。例如设计分类性质的数据,要求用户必须事先给出k(要生成类的数目),可以算是该算法的一个缺点。另外,k-means算法不适合于发现非凸面形状或者大小差别很大的类。而且他对“噪声”和鼓励点的数据是敏感的,少量的数据对数据产生极大的影响。

k-means算法有很多变种。他们可能k个平均值的选择,相异度的计算和计算聚类平均值的策略上有所不同

聚类分析根据对象不同分为Q型和R型聚类分析。

通常测量的尺度:间隔尺度,有序尺度,名义尺度

距离和相似系数分别反映了样品和变量之间的形似程度。相似程度越高,一般两个样品间的距离就越小,变量间的相似系数的绝对值就越大。

系统聚类法是常用的一种聚类法,常用的系统聚类方法有最短的距离法,最长的距离法,中间距离法,类平均法,重心法,离差平方和等。

  • 20
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xifenglie123321

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值