第六章 聚类分析
- 格式:doc
- 大小:183.50 KB
- 文档页数:15
1聚类分析内涵1.1聚类分析定义聚类分析(Cluste.Analysis)是一组将研究对象分为相对同质的群组(clusters)的统计分析技术.也叫分类分析(classificatio.analysis)或数值分类(numerica.taxonomy), 它是研究(样品或指标)分类问题的一种多元统计方法, 所谓类, 通俗地说, 就是指相似元素的集合。
聚类分析有关变量类型:定类变量,定量(离散和连续)变量聚类分析的原则是同一类中的个体有较大的相似性, 不同类中的个体差异很大。
1.2聚类分析分类聚类分析的功能是建立一种分类方法, 它将一批样品或变量, 按照它们在性质上的亲疏、相似程度进行分类.聚类分析的内容十分丰富, 按其聚类的方法可分为以下几种:(1)系统聚类法: 开始每个对象自成一类, 然后每次将最相似的两类合并, 合并后重新计算新类与其他类的距离或相近性测度. 这一过程一直继续直到所有对象归为一类为止. 并类的过程可用一张谱系聚类图描述.(2)调优法(动态聚类法): 首先对n个对象初步分类, 然后根据分类的损失函数尽可能小的原则对其进行调整, 直到分类合理为止.(3)最优分割法(有序样品聚类法): 开始将所有样品看成一类, 然后根据某种最优准则将它们分割为二类、三类, 一直分割到所需的K类为止. 这种方法适用于有序样品的分类问题, 也称为有序样品的聚类法.(4)模糊聚类法: 利用模糊集理论来处理分类问题, 它对经济领域中具有模糊特征的两态数据或多态数据具有明显的分类效果.(5)图论聚类法: 利用图论中最小支撑树的概念来处理分类问题, 创造了独具风格的方法.(6)聚类预报法:利用聚类方法处理预报问题, 在多元统计分析中, 可用来作预报的方法很多, 如回归分析和判别分析. 但对一些异常数据, 如气象中的灾害性天气的预报, 使用回归分析或判别分析处理的效果都不好, 而聚类预报弥补了这一不足, 这是一个值得重视的方法。
《SPSS数据分析与应用》第6章聚类分析聚类分析是一种数据挖掘技术,用于将一组数据中的对象进行分类或分组。
其主要目标是将相似的对象放在同一组中,而将不相似的对象放在不同的组中,以便研究者能够更好地理解数据的结构和特征。
在《SPSS数据分析与应用》第6章中,聚类分析被详细地介绍了。
该章节主要包括以下内容:聚类分析的基本概念、聚类分析的步骤、聚类分析的常见算法以及聚类分析的应用。
聚类分析的基本概念是指将一组数据中的对象根据其相似性进行分组的过程。
相似性可以通过计算对象之间的距离或相似性度量来确定。
距离可以是欧氏距离、曼哈顿距离、切比雪夫距离等,而相似性度量可以是相关系数、余弦相似度等。
聚类分析的步骤包括:选择变量、选择聚类算法、设置聚类分析选项、运行聚类分析、解释和评估聚类结果。
其中,选择变量是指从原始数据中选择要参与聚类的变量;选择聚类算法是指选择适合研究问题的聚类算法,常见的有层次聚类、K均值聚类等;设置聚类分析选项是指设置聚类分析的参数,如距离度量、聚类方法等;运行聚类分析是指将设置好的聚类分析选项应用到原始数据中进行聚类分析;解释和评估聚类结果是指根据聚类分析的结果,对不同的聚类进行解释和评估。
聚类分析的常见算法有层次聚类和K均值聚类。
层次聚类是一种通过生成层次树状结构将数据分成不同的聚类的方法。
它可以分为凝聚法和分立法两种,其中凝聚法是自下而上的将对象进行合并,而分立法则是自上而下的将对象进行分割。
K均值聚类是一种迭代的聚类算法,它将数据划分为K个聚类,每个聚类中的对象与其他聚类中的对象的差异最小。
聚类分析的应用非常广泛,它可以用于市场分割、群体分析、图像分析等领域。
在市场分割中,聚类分析可以根据消费者的属性和行为将市场细分为不同的目标市场,以便企业能够更好地满足不同目标市场的需求;在群体分析中,聚类分析可以将相似的个体划分为同一个群体,以便研究者能够更好地理解不同群体的特征和行为规律;在图像分析中,聚类分析可以将图像中的像素根据其颜色和亮度进行分组,以便研究者能够更好地理解图像的结构和特征。
§3系统聚类法层次聚类法(Hierarchical Clustering)的计算步骤:①计算n个样本两两间的距离{d ij},记D②构造n个类,每个类只包含一个样本;③合并距离最近的两类为一新类;④计算新类与当前各类的距离;若类的个数等于1,转到5);否则回3);⑤画聚类图;⑥决定类的个数和类;Matlab软件对系统聚类法的实现(调用函数说明):cluster 从连接输出(linkage)中创建聚类clusterdata 从数据集合(x)中创建聚类dendrogram 画系统树状图linkage 连接数据集中的目标为二元群的层次树pdist计算数据集合中两两元素间的距离(向量) squareform 将距离的输出向量形式定格为矩阵形式zscore 对数据矩阵X 进行标准化处理各种命令解释⑴T = clusterdata(X, cutoff)其中X为数据矩阵,cutoff是创建聚类的临界值。
即表示欲分成几类。
以上语句等价与以下几句命令:Y=pdist(X,’euclid’)Z=linkage(Y,’single’)T=cluster(Z,cutoff)以上三组命令调用灵活,可以自由选择组合方法!⑵T = cluster(Z, cutoff)从逐级聚类树中构造聚类,其中Z是由语句likage产生的(n-1)×3阶矩阵,cutoff是创建聚类的临界值。
⑶Z = linkage(Y) Z = linkage(Y, 'method')创建逐级聚类树,其中Y是由语句pdist产生的n(n-1)/2 阶向量,’method’表示用何方法,默认值是欧氏距离(single)。
有’complete’——最长距离法;‘average’——类平均距离;‘centroid’——重心法;‘ward‘——递增平方和等。
⑷Y = pdist(X) Y = pdist(X, 'metric')计算数据集X中两两元素间的距离,‘metric’表示使用特定的方法,有欧氏距离‘euclid’(缺失值) 、标准欧氏距离‘SEuclid’ 、马氏距离‘mahal’、明可夫斯基距离‘Minkowski‘等。
聚类分析课件聚类分析课件聚类分析是一种常用的数据分析方法,它可以将一组数据分成不同的类别或簇,每个簇内的数据点具有相似的特征,而不同簇之间的数据点具有较大的差异。
聚类分析在各个领域都有广泛的应用,如市场细分、社交网络分析、医学诊断等。
在本文中,我们将介绍聚类分析的基本概念、常用算法和实际应用案例。
一、聚类分析的基本概念聚类分析的目标是通过对数据进行分组,使得每个组内的数据点相似度较高,而不同组之间的相似度较低。
聚类分析的基本概念包括距离度量和聚类算法。
1. 距离度量距离度量是衡量数据点之间相似度或差异度的标准。
常用的距离度量方法包括欧氏距离、曼哈顿距离和闵可夫斯基距离等。
欧氏距离是最常用的距离度量方法,它计算数据点在多维空间中的直线距离。
曼哈顿距离则计算数据点在坐标轴上的绝对距离,而闵可夫斯基距离则是这两种距离的一种泛化形式。
2. 聚类算法常用的聚类算法包括K-means算法、层次聚类算法和DBSCAN算法等。
K-means算法是一种迭代的、基于距离的聚类算法,它将数据点分成K个簇,使得每个簇内的数据点与该簇的中心点的距离最小。
层次聚类算法则是一种自底向上的聚类算法,它通过计算数据点之间的相似度来构建一个层次结构。
DBSCAN算法是一种基于密度的聚类算法,它将数据点分为核心点、边界点和噪声点三类,具有较好的鲁棒性和灵活性。
二、常用的聚类分析算法1. K-means算法K-means算法是一种迭代的、基于距离的聚类算法。
它的基本思想是随机选择K个初始中心点,然后将每个数据点分配到距离其最近的中心点所对应的簇中。
接着,重新计算每个簇的中心点,并重复这个过程直到收敛。
K-means算法的优点是简单易实现,但它对初始中心点的选择敏感,并且需要预先指定簇的个数K。
2. 层次聚类算法层次聚类算法是一种自底向上的聚类算法。
它的基本思想是将每个数据点看作一个独立的簇,然后通过计算数据点之间的相似度来构建一个层次结构。
聚类分析在实际工作中,我们经常遇到分类问题。
若事先已经建立类别,则使用判别分析,若事先没有建立类别,则使用聚类分析。
聚类分析主要是研究在事先没有分类的情况下,如何将样本归类的方法。
聚类分析的内容包含十分广泛,有系统聚类法、动态聚类法、分裂法、最优分割法、模糊聚类法、图论聚类法、聚类预报等多种方法。
在Matlab 软件包中,主要使用系统聚类法。
系统聚类法是聚类分析中应用最为广泛的一种方法。
它的基本原理是:首先将一定数量的样品(或指标)各自看成一类,然后根据样品(或指标)的亲疏程度,将亲疏程度最高的两类合并,如此重复进行,直到所有的样品都合成一类。
衡量亲疏程度的指标有两类:距离、相似系数。
(1)常用距离 ①欧氏距离假设有两个n 维样本()n x x x x 112111,,,⋅⋅⋅=和()n x x x x 222212,,,⋅⋅⋅=,则它们的欧氏距离为:()()∑=-=nj j jx xx x d 122121,②标准化欧氏距离假设有两个n 维样本()n x x x x 112111,,,⋅⋅⋅=和()n x x x x 222212,,,⋅⋅⋅=,则它们的标准化欧氏距离为:()()()Tx x D x x x x sd 2112121,--=-其中,D 表示m 个样本的方差矩阵:()22221,,,m diagonal D σσσ⋅⋅⋅=,其中2jσ表示第j 个样本的方差。
③马氏距离假设共有n 个指标,第i 个指标共测得m 个数据(要求n m >):⎪⎪⎪⎪⎪⎭⎫⎝⎛⋅⋅⋅=im i i i x x x x 21于是,我们得到n m ⨯阶的数据矩阵()n x x x X ,,,21⋅⋅⋅=,每一行是一个样本数据。
n m ⨯阶数据矩阵X 的n n ⨯阶协方差矩阵记作()X Cov 。
两个n 维样本()n x x x x 112111,,,⋅⋅⋅=和()n x x x x 222212,,,⋅⋅⋅=的马氏距离如下:()()()()()T x x X Cov x x x x mahal2112121,--=-马氏距离考虑了各个指标量纲的标准化,是对其它几种距离的改进。
马氏距离不仅排除了量纲的影响,而且合理考虑了指标的相关性。
④布洛克(C ity Block )距离两个n 维样本()n x x x x 112111,,,⋅⋅⋅=和()n x x x x 222212,,,⋅⋅⋅=的布洛克距离如下:()∑=-=nj j j x x x x b 12121,⑤明可夫斯基(Minkowski )距离两个n 维样本()n x x x x 112111,,,⋅⋅⋅=和()n x x x x 222212,,,⋅⋅⋅=的明可夫斯基距离:()pnj pjj x x x x m 112121,⎪⎪⎭⎫ ⎝⎛-=∑= 注意:1=p 时是布洛克距离,2=p 时是欧氏距离。
⑥余弦距离(Cosine distance )()⎪⎪⎭⎫ ⎝⎛-=T T T X X X X X X X X d 221121211, 这是受相似形几何原理启发而产生的一种标准,在识别图像和文字时,常用夹角余弦为标准。
⑦相似距离(Correlation distance )()TTTX X X X X X X X X X X X X X d ⎪⎭⎫ ⎝⎛-⎪⎭⎫ ⎝⎛-⎪⎭⎫ ⎝⎛-⎪⎭⎫ ⎝⎛-⎪⎭⎫ ⎝⎛-⎪⎭⎫ ⎝⎛--=------222211112211211,(2)Matlab 中常用的计算距离的函数假设我们有n m ⨯阶的数据矩阵()n x x x X ,,,21⋅⋅⋅=,每一行是一个样本数据。
在Matlab 中计算样本点之间距离的内部函数为:出。
(3)常用的聚类方法常用的聚类方法主要有以下几种:最短距离法、最长距离法、中间距离法、重心法、平方和递增法等等。
(4)创建系统聚类树假设已经得到样本点之间的距离y,可以用linkage函数创建系统聚类树,格式为:z = linkage(y),其中z为一个包含聚类树信息的(m –1)×3的矩阵。
例如,z =2.000 5.000 0.23.0004.000 1.28则,z的第一行表示第2、第5样本点连接为一个类,它们的距离为0.2,z的第二行表示第3、第4样本点连接为一个类,它们的距离为1.28。
例1 在Matlab中写一个名字为opt_linkage_1的M—文件:x=[3 1.7;1 1;2 3;2 2.5;1.2 1;1.1 1.5;3 1];y=pdist(x,'mahal');yy=squareform(y)z=linkage(y,’centroid’)h=dendrogram(z)存盘后按F5键执行,得到结果:yy =0 2.3879 2.1983 1.6946 2.1684 2.22842.3879 0 2.6097 2.0616 0.2378 0.62552.1983 2.6097 0 0.6353 2.5522 2.01531.69462.0616 0.6353 0 1.9750 1.51062.1684 0.2378 2.5522 1.9750 0 0.66662.2284 0.6255 2.0153 1.5106 0.6666 00.8895 2.3778 2.9890 2.4172 2.1400 2.4517z =2.0000 5.0000 0.23788.0000 6.0000 0.63533.00004.0000 0.63531.0000 7.0000 0.88959.0000 10.0000 2.106311.0000 12.0000 2.0117按重心距离法得到的系统聚类树为:其中,h=dendrogram(z)表示输出聚类树形图的冰状图。
(5)根据系统聚类树创建聚类假设已经求出系统聚类树z,我们根据z来创建聚类,使用cluster函数。
例2 在Matlab中写一个名字为opt_cluster_1的M—文件:x=[3 1.7;1 1;2 3;2 2.5;1.2 1;1.1 1.5;3 1];y=pdist(x,'mahal');yy=squareform(y)z=linkage(y,'centroid');h=dendrogram(z)t=cluster(z,3)程序中“t=cluster(z,3)”表示分成3个聚类,需要分成几类由人工选择。
存盘后按F5键执行,得到:t =3122113即,第1个样本点、第7个样本点为第3类,第2、第5、第6样本点为第1类,第3、第4样本点为第2类。
(6)根据原始数据创建分类在Matlab软件包中,由内部函数clusterdata对原始数据创建分类,格式有两种:①clusterdata(x, a),其中1<a,表示在系统聚类树中距离小于a的样本点归0<结为一类;②clusterdata(x, b),其中1>b是整数,表示将原始数据x分为b类。
例3 在Matlab中写一个名字为opt_clusterdata_1的M—文件:x=[3 1.7;1 1;2 3;2 2.5;1.2 1;1.1 1.5;3 1];t=clusterdata(x,0.5)z=clusterdata(x,3)存盘后按F5键执行,得到:t =2144132z =1322331其中,t的结果表示距离小于0.5的样本点归结为一类,这样,共有四类,第1类:样本点2、5;第2类:样本点1、7;第3类:样本点6;第4类:样本点3、4。
而z的结果表示首先约定将原始数据x分为3类,然后计算,结果如下,第1类:样本点1、7;第2类:样本点3、4;第3类:样本点2、5、6。
利用内部函数clusterdata对原始数据创建分类,其缺点是不能更改距离的计算方法。
比较好的方法是分步聚类法。
(7)分步聚类法假设有样本数据矩阵x。
第1步对于不同的距离,利用pdist函数计算样本点之间的距离y1 = pdist(x)y2 = pdist(x, ‘seuclid’)y3 = pdist(x, ‘mahal’)y4 = pdist(x, ‘cityblock’)第2步计算系统聚类树以及相关信息z1 = linkage(y1)z2 = linkage(y2)z3 = linkage(y3)z4 = linkage(y4)第3步利用cophenet函数计算聚类树信息与原始数据的距离之间的相关性,这个值越大越好。
t1 = cophenet(z1, y1)t2 = cophenet(z2, y2)t3 = cophenet(z3, y3)t4 = cophenet(z4, y4)注意:z在前y在后,顺序不能颠倒。
第4步选择具有最大的cophenet值的距离进行分类。
利用函数clusterdata(x, a)对数据x进行分类,其中1<a,表示在系统聚0<类树中距离小于a的样本点归结为一类。
例4 在Matlab中写一个名字为opt_cluster_2的M—文件:x=[3 1.7;1 1;2 3;2 2.5;1.2 1;1.1 1.5;3 1];y1=pdist(x);y2=pdist(x,'seuclid');y3=pdist(x,'mahal');y4=pdist(x,'cityblock');z1=linkage(y1);z2=linkage(y2);z3=linkage(y3);z4=linkage(y4);a1=cophenet(z1,y1)a2=cophenet(z2,y2)a3=cophenet(z3,y3)a4=cophenet(z4,y4)存盘后按F5键执行,得到:a1 =0.9291a2 =0.9238a3 =0.9191a4 =0.9242结果中a1 = 0.9291最大,可见此例利用欧氏距离最合适。
于是,在Matlab中另写一个名字为opt_cluster_3的M—文件:x=[3 1.7;1 1;2 3;2 2.5;1.2 1;1.1 1.5;3 1];y1=pdist(x);z1=linkage(y1)存盘后按F5键执行,得到:z1 =2.0000 5.0000 0.20003.00004.0000 0.50008.0000 6.0000 0.50991.0000 7.0000 0.700011.0000 9.0000 1.280612.0000 10.0000 1.3454矩阵z1的第1行表示样本点2、5为一类,在系统聚类树上的距离为0.2,其它类推。
考察矩阵z1的第3列,系统聚类树上的6个距离,可以选择0.5作为聚类分界值。