精华内容
下载资源
问答
  • 聚类分析是一个迭代的过程对于n个p维数据,我们最开始将他们分为n组每次迭代将距离最近的两组合并成一组若给出需要聚成k类,则迭代到k类是,停止计算初始情况的距离矩阵一般用马氏距离或欧式距离个人认为考试只考 1,...

    聚类分析是一个迭代的过程

    对于n个p维数据,我们最开始将他们分为n组

    每次迭代将距离最近的两组合并成一组

    若给出需要聚成k类,则迭代到k类是,停止

    计算初始情况的距离矩阵一般用马氏距离或欧式距离

    个人认为考试只考 1,2

    比较有用的方法是3,4,5,8

    最喜欢第8种

    距离的计算

    欧式距离

    距离的二范数

    马氏距离

    对于X1, X2  均属于N(u, Σ)

    X1,X2的距离为   (X1 - X2) / sqrt(Σ)

    那么不同的聚类方法其实也就是不同的计算类间距离的方法

    1.最短距离法

    计算两组间距离时,将两组间距离最短的元素作为两组间的距离

    2.最长距离法

    将两组间最长的距离作为两组间的距离

    3.中间距离法

    将Gp,Gq合并成为Gr

    计算Gr与Gk的距离时使用如下公式

    D2kr = 1/2 * D2kp + 1/2 * D2kq + β * D2pq

    β是提前给定的超参数-0.25<=β<=0

    4.重心法

    每一组都可以看成一组多为空间中点的集合,计算组间距离时,可使用这两组点的重心之间的距离作为类间距离

    若使用的是欧氏距离

    那么有如下计算公式

    D2kr = np/nr * D2kp + nq/nr * D2kq - (np*nq / nr*nr ) * D2pq

    5.类平均法

    两组之间的距离 = 组间每两个样本距离平方的平均值开根号

    表达式为D2kr = np/nr * D2kp + nq/nr * D2kq

    6.可变类平均法

    可以反映合并的两类的距离的影响

    表达式为D2kr = np/nr*(1- β) * D2kp + nq/nr *(1- β) * D2kq + β*D2pq

    0<=β<1

    7.可变法

    D2kr = (1- β)/2  * (D2kp + D2kq) + β*D2pq

    8.离差平方和法

    这个方法比较实用

    就是计算两类距离的话,就计算,如果将他们两类合在一起之后的离差平方和

    因为若两类本身就是一类,和本身不是一类,他们的离差平方和相差较大

    离差平方和:类中每个元素与这一类中的均值距离的平方之和

    若统一成之前的公式就是

    D2kr = (nk + np)/(nr + nk)  * D2kp + (nk + nq)/(nr + nk)   -(nk)/(nr + nk) *  * D2pq

    一些性质

    除了中间距离法之外,其他的所有聚类方法都具有单调性

    单调性就是指 每次聚类搞掉的距离递增

    空间的浓缩和扩张

    D(A)>=D(B) 表示A矩阵中的每个元素都不小于B

    D(短) <= D(平) <= D(长)

    D(短,平) <= 0

    D(长,平) >= 0

    中间距离法无法判断

    展开全文
  • 6.4 系统聚类的性质及类的确定(3)根据统计量确定上一讲介绍了 R-square,这里再补充 3 个用于确定分类个数的统计量。半偏 R-square:即 k+1 类的 R-square 减去 k 类的 R-square,其用于衡量 k 类与 k+1 类的 R-...

    6.4 系统聚类的性质及类的确定

    (3)根据统计量确定

    上一讲介绍了 R-square,这里再补充 3 个用于确定分类个数的统计量。半偏 R-square:

    即 k+1 类的 R-square 减去 k 类的 R-square,其用于衡量 k 类与 k+1 类的 R-square 的增值 。如果半偏 R-square 比较大,说明 k+1 类的 R-square 更大,更合理,因此不应该合并为 k 类。伪 F 统计量:

    因为比较像 F 分布的定义,所以称为“伪F”

    Bk 是组间平方,我们希望 B_k 比较大,进而当伪 F 统计量的值比较大的时候,认为其效果良好。伪 t2 统计量:

    评价将类 K 和类 L 合并的效果。这是半偏 R-square 的变形,同样地,当它比较大的时候,认为 k+1 类更好。

    (4)根据谱系图

    几个准则:各类重心之间的距离必须很大(各类差异性显著);

    确定的类中,各类所包含的元素不要很多;

    类的个数必须符合实用目的;

    若采用几种不同的聚类方法处理,则在各自的聚类图中应发现相同的类。

    例子-- 16 个地区的聚类

    6.5 动态聚类法

    当样本量比较大时,系统聚类的计算量很大。

    动态聚类法基本思想:首先选取 k 个点,其两两间的距离比较大;由此确定出初始的分类,并评估该分类的好坏,如果不好则调整分类。

    流程图如下动态聚类的步骤

    其优点是适用于大样本,计算简单。缺点是依赖于初始的 k 个点。

    改进:换一批凝聚点,如果两种分类结果相同,则接受。否则考虑另外的聚类算法。

    (一)凝聚点的选取与初始分类的确定

    (1)凝聚点选取

    人为选择的三种方法:用经验来确定分类数目,并从每一类中挑具有代表性的

    先人为分成 k 类,然后取每一类的重心

    确定一个正数 d,首先将所有样本的均值作为凝聚点,如果某样本与现有的凝聚点的距离均大于 d,则加入凝聚点。

    密度法确定凝聚点(常用):首先确定半径 d,然后计算以每个样本为中心,半径为 d 的球中样本的数目,称为该样本的密度。密度越大,说明与该样本接近的样本比较多,适合作为某一类的中心选择密度最大的作为第一凝聚点

    人为选取 D(常取为 2d),当密度第二大的样本与第一凝聚点的距离大于 D 时,加入作为凝聚点;否则舍去,再考察密度第三大的

    按密度大小依次考察,直至选择完毕

    随机选取(一般不用):如果对样本的性质一无所知,可以随机数生成,或就取前 k 个

    (2)初始分类的确定

    方法:人为经验确定

    每个样品归并到与其最近的凝聚点中(可以在归并过程中,将类的重心作为新的凝聚点)

    极值标准化,令

    对每个样品计算

    如果这个数最接近整数 l,那么归入第 l 类。用某种聚类方法得到初始分类。样本量大的时候,可以用部分样品聚类,选取每类重心作为凝聚点,然后再将其它样本归到每个类.

    (二)逐步聚类法

    (1)按批修改法

    确定好初始分类后,计算每一类的均值作为新的凝聚点,然后再对所有样本按照“距离最近”原则进行重新分类。

    自然地,如果当最后所有的凝聚点都与上一步相同时,停止。(但如果凝聚点始终再变化?)分类函数

    定义样品 i 到第 j 类的距离为

    分类函数定义为

    其中

    为第 i 个样品所属的类别编号,如

    表示样品 1 属于第 2 类。分类函数就是所有样品到其所属类别的距离之和最小,也就是“离差平方和最小”

    按批修改的原则是使得分类函数达到最小,直至不能再减小时停止。

    例 将 1 4 5 7 11 用按批修改法进行动态聚类

    解首先选取凝聚点:

    令 d = 2,D = 4,得到各个点的密度为0 1 2 1 0。第一个凝聚点为 5,第二、第三凝聚点分别为 1、11(与第一凝聚点的距离大于 D).得到初始分类:

    初始的分类为{1}、{4 5 7}、{11}.修改重心:各类的均值分别为1、16/3、11

    重新分类:发现结果与上一步相同,停止。

    注1:按批修改法的优点是计算量小,速度快,但结果依赖于凝聚点的选择.

    注2︰有时并不要求过程收敛,只是人为规定这个修改过程重复若干次就行了.

    注3:在按批修改法中,有人将步骤3改为:计算每一类重心,取老凝聚点与重心连线的对称点作为新凝聚点转到步骤2。如果某一步新老凝聚点重合,则过程终止。这样做某些场合会有好的结果.

    (2)逐步修改法( K-means)

    按批修改:所有点都分好类之后再改

    逐步修改:先确定 k 个凝聚点,将其余 n-k 个点逐个分类,并在分类之后用该类的均值作为新的凝聚点。

    步骤:定义样品间的距离,认为决定分类数 K,类间距离的最小值 C,类内距离的最大值 R。取前 K 个作为凝聚点

    计算这 K 个凝聚点两两之间的距离,如果最小距离小于 C,就将其合并为一类,令其重心作为新的凝聚点。不断重复,至所有类间距离都至少为 C.

    将剩下的 n-K 个样品不断归类,如果某个样品到所有凝聚点的最小距离都大于 R(说明不该分为同一类),则作为新的凝聚点;反之,如果最小距离小于等于 R,则将其归入该类,并用归并后的重心作为新的凝聚点。(此时需要判断所有凝聚点的距离是否大于等于 C,如果有两个凝聚点的距离小于 C,返回上一步迭代)

    所有样品归类后,得到最终的凝聚点。选取这组凝聚点重新开始迭代,如果结果相同则停止,否则继续迭代。

    例 将 1 4 5 7 11 用逐步修改法(K-means)进行动态聚类

    解定义距离,确定三个参数:

    用欧氏距离,取 K=3,C=2,R=3,用 1 4 5 作为初始凝聚点计算凝聚点两两距离:

    发现 4 和 5 的距离为 1,小于给定的 C,因此将其归并为{4,5},取重心 4.5 作为新的凝聚点。此时凝聚点为 1 和 4.5考虑剩下的样品:

    首先考虑 7,它与 4.5 接近,且距离为 2.5 小于给定的 R,分到 {4 5} 中。此时凝聚点为 1 和 16/3。然后考虑 11,它到 16/3 的距离更近,但是距离为 17/3,大于给定的 R,应该作为新的凝聚点。

    至此分为 {1}、{4 5 7}、{11}三类用最终凝聚点从头开始分类:上一步最后的凝聚点为 1、16/3、11,令为初始凝聚点重复第二第三步,得到相同结果,分类结束。

    注1:逐步修改法与考虑样本的顺序有关,如果上面过程在考虑样本时从后往前,那么结果不同。

    注2:逐个修改法的最终分类与三个参数有关,因此在计算过程中最好让三个参数适当变化,最后根据实际问题的要求取舍聚类结果。

    实际分析聚类问题时,考虑按照如下流程图实际聚类问题分析的流程

    6.6 有序样品的聚类法(最优分割法)

    如果我们的样品有某种顺序,那么在聚类的时候不能打乱这种顺序。例如:① ② ③ ④不能聚类为{① ③}和{② ④}。实际问题中的有序样品:按照深度划分地层的结构

    有序样品聚类问题其实也就是划分问题,要确定的是每一类的起点和中点。

    基本思想:一开始分为 1 类,然后分为 2,3 直到 n 类,要求分类后的离差平方和达到最小。

    (一)步骤

    (1)定义类的直径

    常用这一类样品的离差平方和作为这一类的直径:

    其中 i 和 j 分别为类 G 的起点和终点。如果分类分对了,那么每一点与该类的中心的距离不能太大,进而每一类的直径都不会太大,再而所有类的直径之和不会太大

    如果样品是一维的,也可以定义直径为

    其中

    为类 G 的中位数。

    (2)定义分类的损失函数

    损失函数就是所有类的离差平方和再加起来。

    离差平方和的和

    要寻求分点,使得这个损失函数最小。

    (3)递推公式

    如果是两类,那么只需要确定一个结点 j,这时对 j 从 2 到 n 取遍,计算损失函数的最小值。而考虑分为3 类时,分为两类的最佳结点 j 可以沿用,此时考察将 1 到 j-1 分为 2类,计算这一部分样本分为两类后的总离差平方和,再加上 j 到 n 部分的离差平方和,得到分为 3 类的损失函数的最小值。

    4 类及以上同理。

    (4)最优解的求法(递归)

    递归一步有

    再递归

    不断进行下去,最终递归基为二分类问题,二分类用循环暴力找最优结点,然后就可以确定回溯得到多分类的最优结点。

    ****有时间就编程实现一下****

    (二)应用举例

    将下面的有序数据进行聚类

    计算直径D(i,j):

    例如 D(1,2) 为 (9.3,1.8) 的离差平方和

    得到直径矩阵如下通过递归得到最小损失函数:决定分类个数:

    如果分为 3 类,根据上表,最后的结点为 8,然后再查看 1-7 分为两类的最优结点是 2,所以分为 3 类的结果为{1},{2 3 4 5 6 7},{8 9 10 11}如何确定分类个数?

    观察损失函数的最小值随着 k 的变化曲线

    在 k = 3 或 4 处拐弯,取分类个数为 3 或 4 较好。

    此外如果曲线比较平缓,没有明显的拐弯点,可采用均方比或特征根法。

    6.7 变量聚类方法

    前面都是对样本聚类,现在考虑对随机变量来聚类。

    (一)变量聚类的系统聚类法

    (1)就当样本聚类做

    此时数据矩阵作一转置,但这样做没有考虑到变量之间的相似性

    (2)相关阵距离

    生成变量的相关矩阵,然后用 1-相关矩阵的绝对值 得到变量间的距离矩阵。进而用各种系统聚类方法求解。

    展开全文
  • 聚类分析法-层次聚类

    2021-02-12 10:38:05
    聚类分析法 文章目录聚类分析法1.简介2.基本内容介绍1.数据变换2. 样品间亲疏程度的测度计算常用距离计算1. 闵式(Minkowski)距离2. 马氏(Mahalanobis)距离... 最短距离法2. 例子:3. 最长距离法4.例子: 1.简介 ​ 聚

    在这里插入图片描述

    聚类分析法

    1.简介

    ​ 聚类分析又称群分析,它是研究分类问题的一种多元统计分析.所谓类,通俗地说,就是指相似元素的集合.要将相似元素聚为一类,通常选取元素的许多共同指标,然后通过分析元素的指标值来分辨元素间的差距,从而达到分类的目的. 聚类分析可以分为Q型聚类(堂本聚类)、R型聚类(指标聚类)

    ​ 聚类分析内容非常丰富,有层次聚类法、有序样品聚类法、动态聚类法、模糊聚类法、图论聚类法。在本篇内容中,我们重点介绍层次聚类和k-means聚类算法.以后面,还会在模糊数学那一章里更新模糊聚类算法.

    聚类算法在机器学习中的非监督学习中应用非常广泛,特别是K-means,是机器学习算法工程师必须要掌握的算法.由此可见,数学建模与机器学习联系紧密,机器学习本质上就是应用数学或者说应用统计学.

    2.基本内容介绍

    1.数据变换

    设有n个样品,每个样品测得p项指标(变量), 原始数据阵为(n,p)
    A=[a11a12a1pa21a22a2pan1an2anp] A=\begin{bmatrix} a_{11}&a_{12}&···&a_{1p} \\ a_{21}&a_{22}&···&a_{2p} \\ ·&·&·&· \\ ·&·&·&· \\ ·&·&·&· \\ a_n1&a_n2&···&a_np \end{bmatrix}
    aij(i=1,,n;j=1,,p)iωija_{ij}(i=1,···,n;j=1,···,p)为第i个样本\omega_i的第j个指标的观察数据

    由于样本数据矩阵由多个指标组成,不同指标一般有不同的量纲,为相除量纲的影响,通常需要进行数据变换处理.常用的数据变化方法有以下两种.(也就是机器学习中常说的数据预处理(去中心化和标准化)

    1. 规格化变换

      规格化变化是从数据矩阵的每一个变量值中找出其最大值和最小值,这两者之差称为极差,然后从每个变量值的原始数据中减去该变量值的最小值,再除以极差,就得到规格化数据,即:

    在这里插入图片描述

    1. 标准化变换

      标准化变换就是我们常见的处理方式,将数据变换为标准正态分布

      首先对每个变量(随机变量(抽样数据))进行中心化变换,然后用该变量的标准差进行标准化,即有

    在这里插入图片描述

    变换处理后的数据矩阵记为:

    在这里插入图片描述

    2. 样品间亲疏程度的测度计算

    研究样品的亲疏程度或相似程度的数量指标通常由两种:一种是相似系数,性质越接近的样品,其取值越接近于1或-1,而彼此无关的样品相似系数则接近于0,相似的归为一类,不相似的归为不同类.另一种是距离,它将每个样品看成p维空间的一个点,n个样品组成p维空间的n个点.用各点之间的距离来衡量各样品之间的相似程度.距离近的点归为一类,距离远的点属于不同的类.(距离相对来说用的更多)

    常用距离计算

    dijωiωj..令d_{ij}表示样品\omega_{i}与\omega_{j}的距离.常用的距离有以下几种.

    1. 闵式(Minkowski)距离

    dij(q)=(k=1pbikbjkq)1qdij(q)={(\sum_{k=1}^{p}|{b_{ik}-b_{jk}|}^{q})}^\frac{1}{q}

    q=1,dij(1)=(k=1pbikbjkq)1,. 当q=1的时候,dij(1)={(\sum_{k=1}^{p}|{b_{ik}-b_{jk}|}^{q})}^1,也就是绝对值距离.

    q=2,dij(2)=(k=1pbikbjk2)12,.当q=2的时候,dij(2)={(\sum_{k=1}^{p}|{b_{ik}-b_{jk}|}^{2})}^\frac{1}{2},即欧式距离.

    q=,dij()=max1kpbikbjk,.当q=\infty的时候,d_{ij}(\infty)=max_{1\leq k\leq p}|b_{ik}-b_{jk}|,即切比雪夫距离.

    2. 马氏(Mahalanobis)距离

    马氏距离是由印度统计学家马哈拉诺比斯于1936年定义的,故称为马氏距离.

    其计算公式为

    在这里插入图片描述

    BiBi,=(σij)p×pB_i表示矩阵B的第i行,\sum表示观测变量之间的协方差阵,\sum={(\sigma_{ij})}_{p\times p}

    其中:

    在这里插入图片描述

    这里uj=1nk=1nbkju_j=\frac{1}{n}\sum_{k=1}^{n}b_{kj}

    相似系数的计算

    研究样品之间的关系,除了用距离表示外,还有相似系数.相似系数是描述样品之间相似程度的一个统计量,常用的相似系数有以下几种.

    1. 夹角余弦

    ωiωjpcosθij将任何两个样品\omega_i与\omega_j看成p维空间的两个相邻,这两个向量的夹角余弦用cos\theta_{ij}表示,则

    在这里插入图片描述

    cosθij=1,wiwj;cosθij1ωiωj;cos\theta_{ij}=1时,说明两个样品w_i和w_j完全相似; cos\theta_{ij}接近1时,说明\omega_i和\omega_j相似密切;

    cosθij=0,ωiωj;cosθij0ωiωj.cos\theta_{ij}=0时,说明\omega_i与\omega_j完全不一样;cos\theta_{ij}接近于0时,说明\omega_i和\omega_j差别大.

    ,.把所有两两样品的相似系数都计算出来,可排成相似系数矩阵.

    在这里插入图片描述

    Figure 相似系数矩阵

    cosθ11=cosθnn=1.其中cos\theta_{11}=···cos\theta_{nn}=1.

    θn.根据\theta可对n个样品进行分类,把比较相似的样品归为一类,不怎么相似的样品归为不同的类.

    2.皮尔逊相关系数

    第i个样品与第j个样品之间的相关系数定义为

    在这里插入图片描述

    ,rijBiBiBjBjBi=ui[1,2,,P].,Bi=Bj=0,实际上,r_{ij}就是两个向量 B_i-\overline{B}_i与B_j-\overline{B}_j的夹角余弦,其中\overline{B}_i=\overline{u_i}[1,2,···,P].若将原始数据标准化,满足\overline{B}_i=\overline{B}_j=0,

    (N(0,1),0).rij=cosθij.(这是因为经过标准化后,每一个样本的每一个特征(随机变量)都满足N(0,1),所以这里求特征均值还是为0).这时r_{ij}=cos\theta{ij}.

    在这里插入图片描述

    r11==rnn=1Rn其中,r_{11}=···=r{nn}=1,可根据R对n个样品进行分类

    3.使用scipy.cluster.hierarchy模块实现层次聚类

    scipy.cluster.hierarchy模块的层次聚类函数介绍如下.

    1. distance.padist

    B=pdist(A,metric=‘euclidean’)用metric指定的方法计算n×p矩阵A(看作n个p维行向量,每行是一个对象的数据)中两两对象间的距离,metric可取下面表格中的特征字符串,就是表示求距离的方式.输出B是包含距离信息的长度为(n-1)·n/2的向量.((n-1)·n/2是n个样本中两两配对不重复的元素数 等差数列求和(0+n-1)·n/2)一般会用distance.squareform函数将此向量转换为方阵(距离矩阵),这样可使矩阵中的(i,j)元素对应原始数据集中对象 i 和 j 间的距离.这样就更方便我们去调用.

    字符串 含义
    ‘euclidean’ 欧式距离(缺省值)-在无决策者干预情况下,对于决策或应用软件、计算机程序的系统参数的自动选择
    ‘cityblock’ 绝对值距离
    ‘minkowski’ Minkowski距离
    ‘chebychev’ Chebychev距离(切比雪夫距离)
    ‘mahalanobis’ Mahalanobis距离(马氏距离)

    metric的取值很多,可以在函数源码或者帮助中查阅.

    import scipy.cluster.hierarchy as sch
    help(sch.distance.pdist)
    
    2. linkage

    Z=linkage(B,‘method’)使用由’method’指定的算法计算生成聚类树,输入矩阵B为pdist函数输出的n·(n-1)/2维距离行向量,'method’可取表11.10中特征字符串值.默认使用’single’

    字符串 含义
    ‘single’ 最短距离(缺省值)
    ‘average’ 无权平均距离
    ‘centroid’ 重心距离
    ‘complete’ 最大距离
    ‘ward’ 离差平方和方法(Ward方法)

    输出z为包含聚类树信息的(n-1)×4矩阵.聚类树上的叶节点为原始数据集中的对象,其编号由0到n-1,它们是单元素的类,级别更高的类都由它们生成对应于Z中第j行中每个新生成的类,其索引为n+j.其中n为初始叶节点的数量.

    ​ Z的第一列和第二列Z[:,:2]

    ​ 如果是由初始元素(样本)生成的第一个聚合类 那么第一列和第二列显示的就是初始元素(样本)的编号

    ​ 如果已经是由初始类和初始类形成的更高级类,那么第一列和第二列分别代表的就是更高级类的两个连接子类分别的编号(子类的第一和第二列)的和.

    ​ Z的第三列Z[:,2]包含了相应的在类中的两两对象间的连接距离.

    ​ Z的第四列Z[:,3]表示当前类中原始对象的个数.

    ​ 详情可以看下面的栗子

    3.fcluster

    T=fcluster(Z,t) 从linkage的输出Z,根据给定的阈值t创建聚类.

    4.H=dendrogram(Z,p)

    由linkage产生的数据矩阵Z画聚类树状图.p是结点数,默认值是30.

    后面会举一个怎么使用这个模块的栗子

    4.基于类间距离的层次聚类

    层次聚类法是聚类分析方法中使用最多的方法.其基本思想是:聚类相近的样品(或变量)先聚为一类,距离远的后聚成类,此过程一直进行下去,每个样品总能聚到合适的类中.它包含如下步骤:

    1. 将每个样品独自聚成一类,构造n个类.

    2. 根据所确定的样品距离公式,计算n个样品(或变量)两两间的距离,构造距离矩阵,记为D(0).

    3. 把距离最近的两类归为一新类,其他样品仍各自聚为一类,共聚成n-1类.

    4. 计算新类与当前各类的距离,将距离最近的两个类进一步聚成一类,共聚成n-2类.以上步骤一直进行下去,最后将所有的样品聚成一类.

    5. 画聚类谱系图

    6. 决定类的个数及各类包含的样品数,并对类作出解释.

      正如样品之间的距离可以有不同的定义方法一样,类与类之间的距离也有各种定义.例如,可以定义类与类的距离为两类之间最近样品的距离,或者定义为两类之间最远样品的距离,也可以定义为两类重心之间的距离等.**类与类之间用不同的方法定义距离,也产生了不同的层次聚类方法.**常用的层次聚类方法有:

      最短距离法、最长距离法、中间距离法、重心法、类平均法、可变类平均法、可变法和离差平方和法

      介绍两种常用的层次聚类法

    1. 最短距离法

    GiGjGiGj最短距离法定义类G_i与G_j之间的距离为两类间最邻近的两样品之距离,即G_i与G_j两类间的距离定义为

    在这里插入图片描述

    GpGqGr,GkGr设类G_p与G_q合并成一个新类记为G_r,则任一类G_k与G_r的距离是

    在这里插入图片描述

    最短距离法聚类的步骤如下:

    1.D(0)=(dij)n×n,Dij=dij. 1.定义样品之间的距离:计算样品两两间的距离,得一距离矩阵记为D_{(0)}=(d_{ij})_{n×n},开始每个样品自成一类,显然这时D_{ij}=d_{ij}.

    2.D(0)线dpq,GPGqGr,Gr={Gp,Gq}. 2.找出D_{(0)}的非对角线最小元素,设为d_{pq},则将G_P和G_q合并成一个新类,记为G_r,即G_r=\{G_p,G_q\}.
    3. 3.找出计算新类与其他类的距离公式:
    Dkr=min{Dkp,Dkq}.D_{kr}=min\{D_{kp},D_{kq}\}.

    D(0)p,qp,qGr,D(1).将D_{(0)}中第p,q行及p,q列,用上面公式合并成一个新行新列,新行新列对应G_r,所得到的矩阵记为D_{(1)}.

    4.D(1)D(0)(2),(3)D(2).,. 4.对D_{(1)}重复上述类似D_{(0)}的(2),(3)两步得到D_{(2)}.如此下去,直到所有的元素并成一类为止.

    D(k)线.如果某一步D_{(k)}中非对角线最小的元素不止一个,则对应这些最小元素的类可以同时合并.

    2. 例子:

    栗:在某地区有7个矽卡岩体,对7个岩体的三种元素Cu,W,Mo作分析的原始数据见表11.11,对这7个样品进行聚类.

    1 2 3 4 5 6 7
    Cu 2.9909 3.2044 2.8392 2.5315 2.5897 2.9600 3.1184
    W 0.3111 0.5348 0.5696 0.4528 0.3010 3.0480 2.8395
    Mo 0.5324 0.7718 0.7614 0.4893 0.2735 1.4997 1.9850

    ​ Figure : 7个 矽卡岩体 数据图

    数学原理及聚类过程就不赘述了.按照最短距离聚类时,所画的聚类图如下图所示.

    如果取阈值d=0.5(也就是画一条线y=0.5),则可把这些岩体划分为两类, 6 7 为一类

    1 2 ···5为另外一类
    在这里插入图片描述

    ​ Figure :最短距离聚类图

    可以看到,画出的聚类图就是一棵树的形状(所以又叫作聚类树)

    在这里插入图片描述

    ​ Figure: 输出矩阵Z

    import numpy as np
    from sklearn import preprocessing as pp #sklearn的数据预处理模块
    import scipy.cluster.hierarchy as sch
    import matplotlib.pyplot as plt
    a=np.loadtxt("Pdata11_11.txt")     #数据文件在资源里面
    b=pp.minmax_scale(a.T)   #数据规格化
    d = sch.distance.pdist(b)  #求对象之间的两两距离向量
    dd = sch.distance.squareform(d)  #转换为矩阵格式
    z=sch.linkage(d); print(z) #进行聚类并显示
    s=[str(i+1) for i in range(7)]; plt.rc('font',size=16)
    sch.dendrogram(z,labels=s); plt.show()  #画聚类图
    

    3. 最长距离法

    GiGj定义类G_i与类G_j之间的距离为两类最远样品的距离,即
    在这里插入图片描述

    线.最长距离法与最短距离法的合并步骤完全一样,也是将各样品先自成一类,然后将非对角线上最小元素对应的两类合并.

    GpGqGr,GkGr设某一步将类G_p和G_q合并为G_r,则任一类G_k与G_r的最长距离公式为

    在这里插入图片描述

    再找非对角线元素对应的两类并类,直至所有的样品全归为一类为止.
    可见,最长距离法与最短距离法只有两点不同,一是类与类之间的距离定义不同;二是计算新类与其他类的距离所用的公式不同.

    4.例子:

    我们还是以上面的例题为例子

    栗:在某地区有7个矽卡岩体,对7个岩体的三种元素Cu,W,Mo作分析的原始数据见表11.11,对这7个样品进行聚类.

    import numpy as np
    from sklearn import preprocessing as pp
    import scipy.cluster.hierarchy as sch
    import matplotlib.pyplot as plt
    a=np.loadtxt("Pdata11_11.txt")
    b=pp.minmax_scale(a.T)   #数据规格化
    d = sch.distance.pdist(b)  #求对象之间的两两距离向量
    dd = sch.distance.squareform(d)  #转换为矩阵格式
    print(dd)
    z=sch.linkage(d,'complete'); print(z) #进行聚类并显示  使用最大距离法
    s=[str(i+1) for i in range(7)]; plt.rc('font',size=16)
    sch.dendrogram(z,labels=s); plt.show()  #画聚类图
    

    在这里插入图片描述
    学完了不要着急走开,赶紧趁热打铁学习下一篇:
    聚类分析法-K均值聚类

    展开全文
  • 聚类分析Q型聚类分析样本的相似性度量类与类间的相似性度量聚类图最短距离法的聚类举例Matlab 聚类分析的相关命令pdistlinkageclusterzsore(X)H=dendrogram(Z,P)T=clusterdata(X,cutoff)squareformR型聚类变量的相似...


    多元分析是多变量的统计分析方法。

    聚类分析(群分析),是对多个样本或指标进行定量分类的一种多元化统计分析方法。对样本进行分类成为Q型聚类分析,对指标进行分类称为R型聚类分析。

    分类是已知类别的,聚类是未知。

    Q型聚类分析

    样本的相似性度量

    要用数量化的方法对事物进行分类,就必须用数量化的方法描述事物之间的相似程度。一个事物常常需要用多个变量来刻画。如果对于一群有待分类的样本点需用 p 个变量描述,则每个样本点可以看成是 Rp 空间中的一个点。因此,很自然地想到可以用距离来度量样本点间的相似程度。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    欧氏距离最常用,主要优点是当坐标轴进行正交旋转时,欧氏距离是保持不变的。 因此,如果对原坐标系进行平移和旋转变换,则变换后样本点间的距离和变换前完全相同。

    值得注意的是在采用 Minkowski 距离时,一定要采用相同量纲的变量。如果变量的量纲不同,测量值变异范围相差悬殊时,建议首先进行数据的标准化处理,然后再计算距离。
    在采用 Minkowski 距离时,还应尽可能地避免变量的多重相关性。多重相关性所造成的信息重叠,会片面强调某些变量的重要性。

    由于 Minkowski 距离的这些缺点,一种改进的距离就是马氏距离,定义如下

    在这里插入图片描述
    其中 x, y 为来自 p 维总体 Z 的样本观测值,Σ 为 Z 的协方差矩阵,实际中Σ 往往是不知道的,常常需要用样本协方差来估计。

    马氏距离对一切线性变换是不变的,故不受量纲的影响。

    类与类间的相似性度量

    如果有两个样本类G1和G2 ,我们可以用下面的一系列方法度量它们间的距离:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    事实上,若 G1 ,G2 内部点与点距离很小,则它们能很好地各自聚为一类,并且这两类又能够充分分离(即 D12 很大),这时必然有 D = D12 − D1 − D2很大。因此,按定义可以认为,两类 G1 ,G2 之间的距离很大。离差平方和法又称为 Ward 方法。

    聚类图

    系统聚类法是聚类分析方法中最常用的一种方法。它的优点在于可以指出由粗到细的多种分类情况,典型的系统聚类结果可由一个聚类图展示出来。
    在这里插入图片描述
    在这里插入图片描述

    最短距离法的聚类举例

    如果使用最短距离法来测量类与类之间的距离,即称其为系统聚类法中的最短距离法(又称最近邻法)。
    例:
    在这里插入图片描述
    在这里插入图片描述
    计算的Matlab程序:

    clc,clear 
    a=[1,0;1,1;3,2;4,3;2,5]; 
    [m,n]=size(a); 
    d=zeros(m); 
    for i=1:m 
     for j=i+1:m 
     d(i,j)=mandist(a(i,:),a(j,:)'); 
     %求第一个矩阵的行向量与第二个矩阵的列向量之间对应的绝对值距离
     end 
    end 
    d 
    nd=nonzeros(d); %去掉d中的零元素,非零元素按列排列
    nd=union(nd,nd) %去掉重复的非零元素
    for i=1:m-1 
     nd_min=min(nd); 
     [row,col]=find(d==nd_min);tm=union(row,col); %row和col归为一类
     tm=reshape(tm,1,length(tm)); %把数组tm变成行向量 
     fprintf('第%d次合成,平台高度为%d时的分类结果为:%s\n',... 
     i,nd_min,int2str(tm)); 
     nd(find(nd==nd_min))=[]; %删除已经归类的元素
     if length(nd)==0 
     break 
     end 
    end 
    

    或者使用MATLAB统计工具箱的相关命令,编写如下程序:

    clc,clear 
    a=[1,0;1,1;3,2;4,3;2,5]; 
    y=pdist(a,'cityblock'); %求a的两两行向量间的绝对值距离
    yc=squareform(y) %变换成距离方阵
    z=linkage(y) %产生等级聚类树
    [h,t]=dendrogram(z) %画聚类图
    T=cluster(z,'maxclust',3) %把对象划分成3for i=1:3 
     tm=find(T==i); %求第i类的对象
     tm=reshape(tm,1,length(tm)); %变成行向量
     fprintf('第%d类的有%s\n',i,int2str(tm)); %显示分类结果
    end
    

    Matlab 聚类分析的相关命令

    pdist

    Y=pdist(X)计算 m× n 矩阵X(看作m 个 n 维行向量)中两两对象间的欧氏距离。
    对于有m 个对象组成的数据集,共有(m −1)⋅ m / 2个两两对象组合。

    linkage

    Z=linkage(Y)使用最短距离算法生成具层次结构的聚类树。输入矩阵Y为pdist函数输出的(m −1)⋅ m / 2维距离行向量。

    cluster

    T=cluster(Z,cutoff)从连接输出(linkage)中创建聚类。cutoff为定义cluster函数如何生成聚类的阈值

    zsore(X)

    在这里插入图片描述

    H=dendrogram(Z,P)

    由linkage产生的数据矩阵Z画聚类树状图。P是结点数,默认值是30。

    T=clusterdata(X,cutoff)

    在这里插入图片描述

    squareform

    将pdist的输出转换为方阵。

    R型聚类

    在系统分析或评估过程中,为避免遗漏某些重要因素,往往在一开始选取指标时,尽可能多地考虑所有的相关因素。
    而这样做的结果,则是变量过多,变量间的相关度高,给系统分析与建模带来很大的不便。

    因此,人们常常希望能研究变量间的相似关系,按照变量的相似关系把它们聚合成若干类,进而找出影响系统的主要因素。

    变量的相似性度量

    在对变量进行聚类分析时,首先要确定变量的相似性度量,常用的变量相似性度量有两种。

    相关系数

    在这里插入图片描述

    夹角余弦

    在这里插入图片描述
    在这里插入图片描述

    变量聚类法

    类似于样本集合聚类分析中最常用的最短距离法、最长距离法等,变量聚类法采用了与系统聚类法相同的思路和过程。

    最长距离法

    在这里插入图片描述

    最短距离法

    在这里插入图片描述

    展开全文
  • 最短距离法2. 最长距离法3.重心法二、系统聚类法1.流程2.示例 一、类和类的特征    设G为一个类,类中有m个元素,分别记为x(1),x(2),⋯ ,x(m)x^{(1)},x^{(2)},\cdots,x^{(m)}x(1),x(2),⋯,x(m), 常用到的特征有三...
  • 聚类分析 matlab

    2021-03-31 09:44:56
    %聚类分析代码:注意A为聚类矩阵,聚类时是以列为聚类单位。...ZA = linkage(YA) % 最短距离法 TA = cluster(ZA,3) %等价于 { TA=clusterdata(A,3) } find(TA==3) % 第3类集合中的元素 [HA,TA]=dend
  • 聚类分析及R编程实现

    万次阅读 2018-10-31 17:34:17
    最短距离法 最长距离法  中间距离法  类平均法  重心法  ward法 什么是聚类分析 聚类分析法-cluster analysis是以研究"物以类聚"的一种现代统计分析方法,利用数学方法进行分类,排除主观性和...
  • 多元统计方法分类(按变量、模型、因变量等)多元统计分析应用选择题:①数据或结构性简化运用的方法有:多元回归分析,聚类分析,主成分分析,因子分析②分类和组合运用的方法有:判别分析,聚类分析,主成分分析③...
  • 多元统计分析模拟试题(两套:每套含填空、判断各二十道)A卷1)...4)因子分析中对于因子载荷的求解常用的方法是主成分、主轴因子、极大似然5)聚类分析包括系统聚类、模糊聚类分析、K-均值聚类分析6)分组数...
  • 目录 相似系数度量: 1.数量积法 2.夹角余弦 3.相关系数 4.最大最小法 5.算数平均最小法 6.几何平均最小法 ...K均值聚类分析 ...最短距离法 最大距离法(complete linkage method) 类平均距离法(.
  • 多元统计分析概述目录一、引言…………………………………………………………3二、多元统计分析方法的研究对象和主要内容……………31.多元统计分析方法的研究对象…………………………32....聚类分析……...
  • 一、聚类分析的基本思想:我们认为,所研究的样品或指标之间存在着程度不同的相似性。根据一批样品的多个观测指标,具体找出一些能够度量样品或指标之间的相似程度的统计量,以这些统计量为划分类型的依据,把一些...
  • R聚类分析2

    千次阅读 2016-08-06 17:24:24
    R聚类2 凝聚层次聚类(Agglomerative hierarchical method)和K均值聚类(K-Means) 层次聚类hclust data=iris[,-5] dist.e=dist(data,method='euclidean') ...#计算类间距离:最短距离法、最长距离法、类平均法
  • MANOVA)、主成分分析(Principal component analysis)、因子分析(Factor analysis)、典型相关(Canonical correlation analysis)、聚类分析(Cluster ...
  • 本文基于《应用多元统计分析》教材整理,适用于备考浙江大学多元统计分析...大纲如下:多元正态分布多元正态分布基础参数估计与常用统计量常用分布假设检验归类判别分析(Discriminatory Analysis)聚类分析(Cluster ...
  • 聚类分析 (1)系统聚类 系统聚类是将每个样品分成若干类的方法,其基本思想是:先将...最短距离法和最长距离法、重心法和类平均法、离差平方和法(Ward方法) ·分类数的确定(德穆曼准则): (1)任何类都必须在...
  • 系统聚类

    千次阅读 2011-03-21 20:07:00
    学习聚类分析,一上来就是样本间的距离:Minkowski距离、兰氏距离、马氏距离、斜交空间距离,还有相似系数,接着一大堆分析方法:最短距离法(SIN),最长距离法(COM)、中间距离法(MED)、重心法(CEN)、类平均法...
  • 层次聚类算法介绍

    2020-07-15 00:23:38
    3合并算法思想1)重心法2)最短距离法3)最长距离法4)组间平均连接法5)组内平均链接法4算法流程程序执行过程:5 示例与分析5.1基于最小值的层次聚类优缺点5.2 基于最大值的层次聚类优缺点5.3基于组平均优缺点 ...
  • K-均值聚类算法研究

    2020-07-04 16:06:50
    一种流行的基于最小聚类误差平和的聚类方法是K-均值算法。然而,K-均值算法是一个局部搜索的算法,它存在一些严重的不足,比如K值需要预先确定、聚类结果的好坏依赖于初始点的选取。为了解决这些问题,这个领域的...
  • 地理信息系统算法基础

    千次下载 热门讨论 2009-06-20 10:57:53
    13.6系统聚类分析 13.6.1概述 13.6.2聚类要素预处理 13.6.3分类统计量 13.6.4系统聚类 13.6.5其他聚类方法概述 13.7判别分析 13.7.1距离判别 13.7.2费歇判别 13.7.3贝叶斯判别 13.7.4判别...
  • 13.6系统聚类分析 13.6.1概述 13.6.2聚类要素预处理 13.6.3分类统计量 13.6.4系统聚类 13.6.5其他聚类方法概述 13.7判别分析 13.7.1距离判别 13.7.2费歇判别 13.7.3贝叶斯判别 13.7.4判别...
  • 4 时过零分析  3. 4. 1 时平均过零率  3. 4. 2 时上升过零间隔  3. 5 时自相关函数和平均幅度差函数  3. 5. 1 时自相关函数  3. 5. 2 时平均幅度差函数  3. 6 高阶统计量  3. 6. ...
  • 实用语音识别基础

    热门讨论 2013-08-01 19:58:17
    4 时过零分析  3. 4. 1 时平均过零率  3. 4. 2 时上升过零间隔  3. 5 时自相关函数和平均幅度差函数  3. 5. 1 时自相关函数  3. 5. 2 时平均幅度差函数  3. 6 高阶统计量  3. 6. ...

空空如也

空空如也

1 2
收藏数 25
精华内容 10
关键字:

最短距离法聚类分析