5 聚类分析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档