5 聚类分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
聚类分析
在实际工作中,我们经常遇到分类问题.若事先已经建立类别,则使用判别分析,若事先没有建立类别,则使用聚类分析。
聚类与分类的不同在于,聚类所要求划分的类是未知的。 聚类是将数据分类到不同的类或者簇这样的一个过程,所以同一个簇中的对象有很大的相似性,而不同簇间的对象有很大的相异性。
在MA TLAB 软件包中,主要使用的是系统聚类法。
系统聚类法是聚类分析中应用最为广泛的一种方法.它的基本原理是:首先将一定数量的样品(或指标)各自看成一类,然后根据样品(或指标)的亲疏程度,将亲疏程度最高的两类合并,然后重复进行,直到所有的样品都合成一类。衡量亲疏程度的指标有两类:距离、相似系数。 Matlab 提供了两种方法进行聚类分析: 一种是利用clusterdata 函数对样本数据进行一次聚类,其缺点为可供用户选择的面较窄,不能更改距离的计算方法; 另一种是分步聚类:
Step1 寻找变量之间的相似性
用pdist 函数计算相似矩阵,有多种方法可以计算距离,进行计算之前最好先将数据用zscore 函数进行标准化。
X2=zscore(X); %标准化数据 Y=pdist(X2); %计算距离 Step2 定义变量之间的连接 Z=linkage(Y);
Step3 评价聚类信息 C=cophenet(Z,Y);
Step4 创建聚类,并作出谱系图 T=cluster(Z,6); H=dendrogram(Z);
一、常用距离 1)欧氏距离
假设有两个n 维样本),,,(112111n x x x x =和),,,(222212n x x x x =,则它们的欧氏距离为
∑=-=
n
j j j
x x
x x d 1
22121)(),(
2)标准化欧氏距离 3)马氏距离 4)布洛克距离 5)闵可夫斯基距离 6)余弦距离 7)相似距离
二、MATLAB 中常用的计算距离的函数
假设我们有n m ⨯阶数据矩阵),,,(21n x x x x =,每一行是一个样本数据. 在MA TLAB 中计算样
本点之间距离的内部函数为
y=pdist(x) 计算样本点之间的欧氏距离(默认)
y=pdist(x,'seuclid') 计算样本点之间的标准化欧氏距离
y=pdist(x,'mahal') 计算样本点之间的马氏距离
y=pdist(x,'cityblock') 计算样本点之间的布洛克距离
y=pdist(x,'minkowski') 计算样本点之间的闵可夫斯基距离
y=pdist(x,'minkowski',p) 计算样本点之间的参数为p的闵可夫斯基距离
y=pdist(x,'cosine') 计算样本点之间的余弦距离
y=pdist(x,'correlation') 计算样本点之间的相似距离
另外,内部函数yy=squareform(y)表示将样本点之间的距离用矩阵的形式输出。
例:
x=[3 1.7;1 1;2 3; 2 2.5; 1.2 1; 1.1 1.5; 3 1] % 7×2,每行一个样本
y=pdist(x,'mahal') %每两个样本的马氏距离
yy=squareform(y)%样本点之间的距离用矩阵的形式输出
x =
3.0000 1.7000
1.0000 1.0000
2.0000
3.0000
2.0000 2.5000
1.2000 1.0000
1.1000 1.5000
3.0000 1.0000
y =
Columns 1 through 13
2.3879 2.1983 1.6946 2.1684 2.2284 0.8895 2.6097 2.0616 0.2378 0.6255 2.3778 0.6353 2.5522
Columns 14 through 21
2.0153 2.9890 1.9750 1.5106 2.4172 0.6666 2.1400 2.4517
yy =
0 2.3879 2.1983 1.6946 2.1684 2.2284 0.8895
2.3879 0 2.6097 2.0616 0.2378 0.6255 2.3778
2.1983 2.6097 0 0.6353 2.5522 2.0153 2.9890
1.6946
2.0616 0.6353 0 1.9750 1.5106 2.4172
2.1684 0.2378 2.5522 1.9750 0 0.6666 2.1400
2.2284 0.6255 2.0153 1.5106 0.6666 0 2.4517
0.8895 2.3778 2.9890 2.4172 2.1400 2.4517 0
三、常用的聚类方法
常用的聚类方法主要有以下几种:最短距离法、最长距离法、平均距离法、重心法、平方和递增法
等等.
四、创建系统聚类树
假设已经得到样本点之间的距离y,可以用linkage函数创建系统聚类树,格式为z=linkage(y).
其中:z为一个包含聚类树信息的(m-1) 3的矩阵.例如:
z=
2.000 5.000 0.2
3.000
4.000 1.28
则z的第一行表示第2、第5样本点连接为一个类,它们距离为0.2;则z的第二行表示第3、第4样本点连接为一个类,它们距离为1.28.
在MA TLAB中创建系统聚类树的函数为
z=linkage(y) 表示用最短距离法创建系统聚类树(默认)
z=linkage(y,'complete') 表示用最长距离法创建系统聚类树
z=linkage(y,'average') 表示用平均距离法创建系统聚类树
z=linkage(y,'centroid') 表示用重心距离法创建系统聚类树
z=linkage(y,'ward') 表示用平方和递增法创建系统聚类树
例:
z=linkage(y,'average') %用平均距离法创建系统聚类树
z =
2.0000 5.0000 0.2378
3.0000
4.0000 0.6353
6.0000 8.0000 0.6460
1.0000 7.0000 0.8895
9.0000 10.0000 2.1207
11.0000 12.0000 2.3053
另外,内部函数h=dendrogram(z)画出由Z描述的聚类树谱系图,谱系图由许多U型线连接,U型线的高表示所连接两点之间的距离。dendrogram默认最多画30个最底层节点,可设置参数改变这个限制,比如dendrogram(Z,0)就会把所有数据点索引下标都标出来,但对于成千上万的数据集合,这样的结果必然是图形下方非常拥挤。
h=dendrogram(z) % 输出聚类树形谱系图
h =
349.0054
351.0048
352.0048
353.0048
354.0048
355.0048