统计方法6聚类分析.docx
- 文档编号:7754061
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:15
- 大小:67.05KB
统计方法6聚类分析.docx
《统计方法6聚类分析.docx》由会员分享,可在线阅读,更多相关《统计方法6聚类分析.docx(15页珍藏版)》请在冰豆网上搜索。
统计方法6聚类分析
统计方法6聚类分析
第一节基本概念
1.分类问题
直观解释:
聚类分析就是用某种准则将靠近的点集归为一类
对样本(观测值)进行聚类,也可以对指标(变量)进行聚类。
2.距离
样品之间的距离
设p维空间内的点
及
定义两点之间的距离
(1)欧氏距离
(2)马氏距离
其中
是数据矩阵的协方差阵。
马氏距离的优点是考虑了空间内的概率分布,在正态总体的情况下,有比较好的效果。
距离的定义比较灵活,只要满足条件都可以作为聚类时的距离。
变量之间的距离
变量之间的距离要考虑到变量之间的相互关系。
常用的距离如夹角余弦,相关系数等
类和类之间的距离
在聚类过程中,要涉及到类和类之间的合并,因此也要考虑类间的距离。
如类间最短距离
设
是样本i和样本j之间的距离,
是类
和类
之间的距离定义类间的最短距离为
=
类似的可以定义类间的最长距离,平均距离等。
第二节系统聚类法
系统聚类方法是非常容易在计算机上实现的一种聚类方法,其聚类步骤为:
1)将空间各点各自视为一类,计算每类间的距离矩阵,将距离最小者归为一类。
2)对与新的类重新计算类与类间的距离矩阵,再将距离最小者归为一类。
3)这一过程一直进行下去,直到所有的点归为一类为止。
例8.2.1:
设抽六个样,每个样本只有一个变量,即:
1,2,5,7,9,10。
定义距离为:
两点的绝对值。
试用最小距离法对它们进行系统聚类。
1)计算得距离矩阵D(0),为
2)D(0)的最小距离时是1,对应元素D12=D56=1,则将
G1,G2并成G7;G5;G6并成G8。
3)计算G7,G8与其他类道距离,得D
(1)
4)的D
(1)的最小距离是2,把
合并为类
,
5)把G7和G9合并为G10,聚类距离为3。
此时已将全部样本合并为一类,聚类结束。
可以按照聚类的距离,通过谱系图把聚类的过程表示出来。
最后,选择合适的阈值,确定聚类的个数。
如取阈值为,则分为2类,G7和G9
第三节动态聚类法(k均值法)
k-均值法是一种划分方法。
函数kmeans把数据划分为k个互不相交的类,然后对每个观测返回类的标号。
对于大量的数据k-均值法比系统聚类法更合适。
Kmeans把数据集中的每一个数据视为占有空间中某个位置的对象。
K-均值法寻找划分使得每一类内部的数据足够近而类之间的数据足够远。
函数提供了5种距离的测量。
步骤
Step1:
选择k个样品作为初始凝聚点,或者将样品分为k个初始类,然后将其重心(均值)作为初始凝聚点
Step2:
将每个样品归入离其凝聚点最近的类(通常采用欧氏距离)。
Step3:
重新计算每个类的重心(均值);
Step4:
重复Step2,直到各类重心不再变化,类不再变化为止。
动态聚类的结果严重依赖初始凝聚点的选取。
经验表明,聚类过程的绝大多数重要变化均发生在第一次再分类中。
第四节MATLAB统计工具箱中的聚类分析
A系统聚类法
1.点点距离的计算命令pdist
Y=pdist(X)
Y=pdist(X,'metric')
Y=pdist(X,distfun)
Y=pdist(X,'minkowski',p)
这里:
X:
为数据矩阵
metric:
各种距离方法
‘euclidean’:
欧几里得距离Euclideandistance(default)
‘seuclidean’:
标准欧几里得距离.
‘mahalanobis’:
马氏距离
‘cityblock’:
绝对值距离
‘minkowski’:
明可夫斯基距离
‘cosine’:
cosine角度距离(对变量聚类)
‘correlation’:
相关系数距离.(对变量聚类)
‘hamming’:
Hamming距离(符号变量求距离)
‘jaccard’:
Jaccard系数距离(符号变量求距离)
‘chebychev’:
切比雪夫距离
2.类类距离的计算命令linkage,基本语法为;
Z=linkage(Y)
Z=linkage(Y,'method')
这里:
Y:
为pdist输出的结果,即点点的距离矩阵。
‘method’:
为计算类类间距离的方法。
它们有:
‘single':
最短距离法(系统内定)
‘complete’:
最长距离法。
‘average’:
平均距离法。
‘weighted’:
加权平均距离法。
‘centroid’:
中心距离法。
‘median’:
加权重心法。
3)聚类命令cluster,语法为:
T=cluster(Z,'cutoff',c)
T=cluster(Z,'maxclust',n)
这里:
Z:
为linkage输出的层次数据。
‘cutoff’:
按某个值进行切割,值c取(0,1)之间的值。
‘maxclust’:
按最大聚类数聚类,n为指定的聚类数。
4)作聚类图命令dendrogram,其语法为:
H=dendrogram(Z)
H=dendrogram(Z,p)
[H,T]=dendrogram(...)
[H,T,perm]=dendrogram(...)
[...]=dendrogram(...,'colorthreshold',t)
[...]=dendrogram(...,'orientation','orient')
[...]=dendrogram(...,'labels',S)
这里:
Z:
为linkage输出的层次数据。
p:
原始结点个数的设置,p=0显示全部点。
系统内定显示30个点。
‘colorthreshold’:
颜色设置,其值t>0。
‘orientation’:
聚类图的位置,内定是从上到下。
可选值为:
‘top‘:
从上到下(default)
‘bottom’:
从下到上
‘left’:
从左到右
‘right’:
从右到左
‘labels’:
标号
例16个地区('北京','天津','河北','山西','内蒙古','辽宁','吉林','黑龙江','上海','江苏','浙江','安徽','福建','江西','山东','河南)农民支出情况调查,指标为食品,衣着,燃料,住房,生活用品,文化生活服务.
x=[;;;;;;;;;;5;;;;;];
zx=zscore(x);
y=pdist(zx);
z=linkage(y,'average')
z=
s={'北京','天津','河北','山西','内蒙古','辽宁','吉林','黑龙江','上海','江苏','浙江','安徽','福建','江西','山东','河南'}
dendrogram(z,'orientation','right','labels',s)
T=cluster(z,5)
T=
4
2
3
3
3
2
2
1
5
2
2
1
1
1
2
3
find(T==1)
ans=
8
12
13
14
find(T==2)
ans=
2
6
7
10
11
15
find(T==3)
ans=
3
4
5
16
find(T==4)
ans=
1
find(T==5)
ans=
9
或者:
T=clusterdata(zx,'distance','euclid','linkage','average','maxclust',5)
T=
4
2
3
3
3
2
2
1
5
2
2
1
1
1
2
3
它与前面的cluster(z,5)相等
BK均值法
函数kmeans把数据划分为k个互不相交的类,然后对每个观测返回类的标号。
Kmeans把数据集中的每一个数据视为占有空间中某个位置的对象。
K-均值法寻找划分使得每一类内部的数据足够近而类之间的数据足够远。
函数提供了5种距离的测量。
IDX=kmeans(X,k)
将n个点分为k类,返回的idx为每个点的类标号。
[IDX,C]=kmeans(X,k)
返回的c为每个类的中心。
[IDX,C,sumd]=kmeans(X,k)
Sumd返回类内的距离。
[IDX,C,sumd,D]=kmeans(X,k)
返回的D是一个矩阵,里边的元素
是第i个元素到第j类的距离。
[...]=kmeans(...,param1,val1,param2,val2,...)
param1…为参数名,val1…为参数值。
这些参数用来控制迭代算法。
继续上例,采用K均值法
分类的结果为:
IDX=kmeans(x,4)%分为4类
IDX=
1
3
4
4
2
3
3
2
1
3
3
3
3
3
2
4
分类的结果为:
IDX=kmeans(x,5)%分为5类
IDX=
1
5
2
2
3
5
5
3
4
5
1
5
5
5
3
2
分类的结果为:
轮廓图
可以利用轮廓图作为评价分类结果的一种标准。
Silhouette函数可以用来根据cluster,clusterdata,kmeans的聚类结果绘制轮廓图。
从图上可以看每个点的分类是否合理。
轮廓图上第i点的轮廓值定义为
S(i)=
其中,a是第i个点与同类其它点的平均距离。
b是向量,其元素表示第i个点与不同类的类内各点的平均距离。
S(i)的取值范围[-1,1],此值越大,说明该点的分类越合理。
特别当s(i)<0是说明该点分类不合理。
silhouette(X,clust)
s=silhouette(X,clust)%此命令只返回轮廓值,不画轮廓图
[s,h]=silhouette(X,clust)
[...]=silhouette(X,clust,metric)
[...]=silhouette(X,clust,distfun,p1,p2,...)
上例分为4类的情况
[s,h]=silhouette(x,IDX)
s=
上例分为5类的情况
[s,h]=silhouette(x,IDX)
s=
比较两图,此例使用k均值法分四类要更合适
第五节模糊聚类
聚类分析是一种无监督的学习方法。
很多的分类问题中,分类对象往往没有明确的界限。
用传统的聚类方法,把样本点严格的分到某个类中,可能存在一定的不合理性。
借助于模糊数学的思想,可以有模糊聚类的方法。
使用模糊聚类将n个样品划分为c类,记
为c个类的聚类中心。
在模糊聚类中每个样品不是严格的划分到某一类,而是按照一定的隶属度属于某一类。
设
表示第k个样品属于第i类的隶属度,取值[0,1],且
。
定义目标函数
其中U为隶属度矩阵,
所以该目标函数表示各类中样品到聚类中心的加权的距离平方和。
模糊C均值聚类法的准则是求U,V使J(U,V)得到最小值。
具体步骤:
(1)确定类的个数c,幂指数m(>1)和初始隶属度矩阵
。
通常的做法是取[0,1]上的均匀分布随机数来确定初始隶属度矩阵。
令l=1表示第一步迭代。
(2)通过下式计算第l步的聚类中心:
(3)修正隶属度矩阵
,计算目标函数值
。
其中
(4)对于迭代算法,给定隶属度终止容限
(或目标函数终止容限
或给定最大迭代步长)。
当
(或当l>1,
或大于最大步长),停止迭代,否则l=l+1,返回
(2)。
经迭代可以求得最终的隶属度矩阵U和聚类中心V,使目标函数达最小。
根据最终的隶属度矩阵U中元素的取值来确定最终所有样品的归属,当
时,把
归于第j类。
模糊逻辑工具箱中模糊C聚类的函数:
fcm
[center,U,obj_fcn]=fcm(data,cluster_n)
[center,U,obj_fcn]=fcm(data,cluster_n,options)
说明:
cluster_n是类的个数。
Options中的第一个参数是隶属度的幂指数,默认为2;第二个参数是最大迭代次数,默认值为100,第三个参数是目标函数的终止容限,默认值为
。
第四个参数用来控制是否显示中间迭代过程。
取值为0,则不显示。
输出参数center是cluster_n个类的类中心坐标矩阵(cluster_nXp)。
U是隶属度矩阵(cluster_nxn),
表示其元素第k个样品属于第i类的隶属度。
根据U中每列元素的取值判定元素的归属。
obj_fcn是目标函数值向量,其第i个元素表示第i步迭代的目标函数值,它包含的元素总个数就是实际迭代的总步数。
继续前面的例子
x=[;;;;;;;;;;5;;;;;];
>>[center,U,obj_fcn]=fcm(x,4)
主要的结果:
U=
Columns1through7
Columns8through12
Columns13through16
从聚类结果看出,样品1(北京)在第三类的隶属度最大,所以把它归到第三类。
同属第三类的还有样品11(浙江)。
这一类是经济发达地区。
同样的,可按隶属度对其他的各个样品进行分类。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 统计 方法 聚类分析