数学建模之聚类分析

一、聚类分析(Cluster Analysis)简介

聚类分析是直接比较各事物之间的性质,将性质相近的归为一类,将性质差别较大的归入不同的类的分析技术。
数理统计中的数值分类有两种问题:

  • 判别分析:已知分类情况,将未知个体归入正确类别
  • 聚类分析:分类情况未知,对数据结构进行分类。

基本思想

聚类分析的基本思想: 对所研究的样品或指标(变量)之间存在着程度不同的相似性(或亲疏关系)。(1)根据一批样品的多个指标, 具体找出一些能够度量样品或指标之间的相似程度的统计量
(2)以这些统计量为分类的依据, 把一些相似程度较大的样品(或指标)聚合为一类。
把另一些彼此之间相似程度较大的样品(或指标)聚合为另一类。

  • 按相似程度的大小
  • 把关系密切的样品聚合到一个的分类单位,
  • 关系疏远的样品聚合到一个大的分类单位,
  • 直到把所有的样品(或指标)都聚合完毕。
  • 把不同的类型一一划分出来, 形成一个由小到大的分类系统。再把整个分类系统画成一张分群图(又称谱系图), 用它把所有样品(或指标)间的亲疏关系表示出来。

二、聚类对象

  • 要做聚类分析,首先得按照我们聚类的目的,从对象中提取出能表现这个目的的特征指标;然后根据亲疏程度进行分类。
  • 聚类分析根据分类对象的不同可分为Q型和R型两大类
  • Q型是对样本进行分类处理,其作用在于:
    • 具有共同特点的样本聚在一起
    • 所得结果比传统的定性分类方法更细致、全面、合理
  • R型是对变量进行分类处理,其作用在于:
    • 可以了解变量间及变量组合间的亲疏关系
    • 可以根据变量的聚类结果及它们之间的关系,选择主要变量进行回归分析或Q型聚类分析

三、相似性度量

  • 进行“相关性”或“相似性”度量。在相似性度量中常常包含有许多主观上的考虑,但是最重要的是考虑指标性质或观测的尺度。
  • 当样品进行聚类时,“靠近”往往是距离。同时对指标进行聚类时,根据相关系数或某种关联性度量来聚类。
Q型样品间的“相似性”度量—距离(皮尔逊系数(课下去看))
  • 设每个样品有 p 个指标, 观察值记为 x i = ( x 1 i , x 2 i , . . , x p i ) T , i = 1 , 2 , 3 , . . . , n x_i = (x_{1i},x_{2i},..,x_{pi})^T, i = 1,2,3,...,n xi=(x1i,x2i,..,xpi)T,i=1,2,3,...,n
  • 每个样品 x i x_i xi可看成是 p 维空间的一个点。于是, 可用各点之间的距离来衡量各样品点之间的接近程度。
  • 样品 x i x_i xi x j x_j xj之间的距离$d(x_i,x_j),一般应满足如下条件:
    i. d ( x i , x j ) ≥ 0 d(x_i,x_j)\geq 0 d(xi,xj)0,且 d ( x i , x j ) = 0    ⟺    x i = x j d(x_i,x_j) = 0 \iff x_i = x_j d(xi,xj)=0xi=xj
    ii. d ( x i , x j ) = d ( x j , x i ) d(x_i,x_j) = d(x_j,x_i) d(xi,xj)=d(xj,xi)
    iii. d ( x i , x j ) ≤ d ( x i , x k ) + d ( x k , x j ) d(x_i, x_j) \leq d(x_i,x_k) + d(x_k,x_j) d(xi,xj)d(xi,xk)+d(xk,xj)
    有时所用的距离不满足(ⅲ), 但在广义的角度上仍称为距离。常用的距离有如下几种:
  1. 绝对距离【曼哈顿距离】(Block) d i j = ∑ k = 1 p ∣ x i k − x j k ∣ d_{ij} = \sum^p_{k = 1}|x_{ik}-x_{jk}| dij=k=1pxikxjk
  2. 欧氏距离(Euclidean distance) d i j = [ ∑ k = 1 p ( x i k − x j k ) 2 ] 0.5 d_{ij} = [\sum^p_{k=1}(x_{ik}-x_{jk})^2]^{0.5} dij=[k=1p(xikxjk)2]0.5
  3. 明考斯基距离(Minkowski) d i j = [ ∑ k = 1 p ( x i k − x j k ) q ] 1 q d_{ij} = [\sum^p_{k = 1}(x_{ik}-x_{jk})^q]^{\frac {1}{q}} dij=[k=1p(xikxjk)q]q1
  4. 明考斯基距离(Minkowski) d i j ( ∞ ) = m a x 1 ≤ k ≤ q ∣ x i k − x j k ∣ d_{ij}(\infty ) = max_{1\leq k\leq q}|x_{ik}-x_{jk}| dij()=max1kqxikxjk
  • 以上距离与各变量的量纲有关,为了消除量纲的影响,可对数据标准化。
  1. 数据的标准化 x i j ′ = x i j − x j ‾ S j x_{ij}' = \frac{x_{ij}-\overline{x_j}}{ {S_j}} xij=Sjxijxj其中 x j ‾ \overline{x_j} xj S j S_j Sj是第j个指标的均值和样本标准差

案例1:欧洲各国语言

题目大意
  • 欧洲各国的语言有许多相似之处,有的十分相似。为了研究这些语言的历史关系,也许通过比较他们数字的表达式比较恰当。表列举出英语,挪威语,丹麦语,荷兰语,德语,法语,西班牙语,意大利语,波兰语,匈牙利语和芬兰语的1,2,…,10的拼法,希望计算这11种语言之间的语言的距离。
11种欧洲语言的数词

在这里插入图片描述

  • 在聚类分析中通常要结合实际问题来选择适用的距离, 有时应根据实际问题定义新的距离。
  • 显然,本例无法直接用上述公式来计算距离。但可以发现前三种文字(英、挪、丹)很相似。
  • 特别是每个单词的第一个字母。可以用10个数词中第一个字母不同的个数来定义两种语言之间的距离。例如:英语和挪威语中只有1和8的第一个字母不同, 则它们之间的距离为2。于是我们得到这样的表格
    在这里插入图片描述

R型聚类统计量

  1. 夹角余弦
    在这里插入图片描述
    2、相关系数
    在这里插入图片描述
  • 对两个指标之间的相似程度用相似系数来刻划,相似系数绝对对值越接近于1,表示指标间的关系越密切,绝对值越接近于0,表示指标间的关系越疏远.

三、 系统聚类分析

  • 1 系统聚类分析的基本思想是:

    • 距离相近的样品(或变量)先聚成类,距离相远的后聚成类,过程一直下去,每个样品(或变量)总能聚到合适的类中。
    • 系统聚类分析过程是:假设总共有n个样品(或变量),第一步将每个样品(或变量)独自聚成一类,共有n类;
    • 第二步根据所确定的样品(或变量)“距离”公式,将距离较近的两个样品(或变量)聚合为一类,其他样品(或变量)仍各自聚为一类,共有n-1类;
    • 第三步将“距离”最近的两个类进一步聚成一类,共聚成n-2类;……以上步骤一直进行下去,最后将所有的样品或变量)聚成一类。
    • 将整个分类系统地画成一张谱系图,所以有时系统聚类分析也叫谱系聚类分析。
  • 2 类间距离

    • 首先定义类与类之间地距离,又类间的距离定义不同产生不同的系统聚类分析。常见的类间的距离有8种之多,与之相应的系统聚类分析也有8种之多、分别为最短距离法、最长距离法、中间距离法、重心法、类平均法、可变类平均法、可变法和离差平方和法。它们的归类步骤基本是一致的。
  • i , j i,j i,j表示样品 x i , x j x_i,x_j xi,xj。用 d i j d_{ij} dij表示 x i x_i xi x j x_j xj之间的距离,用 G p G_p Gp G q G_q Gq之间的距离用 D ( G p , G q ) D(G_p,G_q) D(Gp,Gq)表示。下面给出四种最常用的类与类之间距离的定义。

1 、最短距离(Nearest Neighbor)

在这里插入图片描述
{ D p q = D ( G p , G q ) = m i n { d i j ∣ i ∈ G p , j ∈ G q } } \{D_{pq} = D(G_p,G_q) = min\{ d_{ij}|i\in G_p,j\in G_q \}\} {Dpq=D(Gp,Gq)=min{dijiGp,jGq}}
即定义 G p G_p Gp G q G_q Gq之间的距离为 G p G_p Gp G q G_q Gq中最近的两个样品的距离。
类与类之间的最短距离有如下的递推公式。设 G r G_r Gr G p G_p Gp G q G_q Gq合并而成,则 G r G_r Gr与其它类 G k ( k ̸ = p , q ) G_k(k \not= p,q) Gk(k̸=p,q)
D ( G r , G k ) D(G_r,G_k) D(Gr,Gk) = m i n { d y ∣ i ∈ G r , j ∈ G k } = m i n { m i n { d y ∣ i ∈ G p , h ∈ G k } m i n { d y ∣ i ∈ G q , j ∈ G k } } = m i n { D ( G p , G k ) , D ( G q , G k ) } = min\{ d_y|i\in G_r,j\in G_k \}\\=min\{ min\{ d_y|i\in G_p,h \in G_k\}min\{d_y|i\in G_q,j\in G_k\} \}\\=min\{D(G_p,G_k),D(G_q,G_k)\} =min{dyiGr,jGk}=min{min{dyiGp,hGk}min{dyiGq,jGk}}=min{D(Gp,Gk),D(Gq,Gk)}

  • 说的就是两个类的距离就是不同类的最短距离。
最短距离法进行聚类分析的步骤如下:
  1. 开始各样本自成一类
  2. 根据样品的特征,规定样品之间的距离 d i j d_{ij} dij,共有 C 2 n C^n_2 C2n个。将所有列表,记为D(0)表,该表是一张对称表。所有的样本点各自为一类。
  3. 选择D(0)表中最小的非零数,不妨假设 d p q d_{pq} dpq,于是将 G p G_p Gp G q G_q Gq合并为一类,记为 G r = { G p , G q } G_r = \{ G_p,G_q\} Gr={Gp,Gq}
  4. 利用递推公式计算新类与其它类之间的距离。分别删除D(0)表的第p,q行和第p, q列,并新增一行和一列添上的结果,产生D(1)表。
  5. 在D(1)表再选择最小的非零数,其对应的两类有构成新类,再利用递推公式计算新类与其它类之间的距离。分别删除D(1)表的相应的行和列,并新增一行和一列添上的新类和旧类之间的距离。结果,产生D(2)表。类推直至所有的样本点归为一类为止。
小总结

(1) 定义样品之间的距离
(2) 找出距离最小元素,设为 D p q D_{pq} Dpq,则将 G p G_p Gp G q G_q Gq合并成以新类记为 G r G_r Gr,记为 G r = { G p , G q } G_r = \{ G_p, G_q\} Gr={Gp,Gq}
(3)按上式计算新类与其他类之间的距离。
(4)重复(2),(3)的步骤,直到将所有元素并成一类为止。
(如果某一步距离最小的元素不止一个,则将对应这些最小元素的类可以同时合并)

样例

设有6个样品,每个只测一个指标,分别是1, 2,5,7,9,10,试采用绝对值距离用最短距离法将它们进行分类。
解(1)样品首先采用绝对值距离,计算样品之间的距离阵为D(0).
在这里插入图片描述

  • 现在有六个类,把距离最短的合成一个类,新图如下图所示(合并过后,会把。
    多个类的都考虑进去)在这里插入图片描述
  • 这里我们看到有两个“2”,遇见这种情况优先合并小类。
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
2. 最长距离法
  • 这个所谓的最长距离指不是要取类和类的最长距离,而是在合并之后,类和类之间的距离选择”最长的数”。
  • 举例说明:
    在这里插入图片描述
  • 仍然选择短的合并
    在这里插入图片描述
  • 此时 G 7 G_7 G7 G 3 G_3 G3的距离为什么是4呢,因为我们选择的是 G 3 G_3 G3 G 7 G_7 G7的最长距离作为两个类之间的距离。
  • 同理为什么 G 8 G_8 G8 G 7 G_7 G7是9也是这个原因。
    在这里插入图片描述
    在这里插入图片描述
  • 分类结果往往差别不大
3. 类平均距离(组内平均连接法)
4. 重心法
  • 基本就是类间距离计算公式不一样
5. 动态聚类法(快速聚类法)(k-mean\高斯混合法)
  • 系统聚类法是一种比较成功的聚类方法。但是复杂度是 O ( n 2 ) O(n^2) O(n2),速度特别慢。
  • 比如在市场抽样调查中,有4万人就其对衣着的偏好作了回答,希望能迅速将他们分为几类。这时,采用系统聚类法就很困难,而动态聚类法就会显得方便,适用。
  • 动态聚类使用于大型数据。
基本思想
  • 基本思想:选取若干个样品作为凝聚点,计算每个样品和凝聚点的距离,进行初始分类,然后根据初始分类计算其重心,再进行第二次分类,一直到所有样品不再调整为止。
    在这里插入图片描述
动态聚类法的基本步骤:

第一,选择凝聚点;
第二,初始分类;
对于取定的凝聚点,视每个凝聚点为一类,将每个样品根据定义的距离向最近的凝聚点归类。
第三,修改分类
得到初始分类,计算各类的重心,以这些重心作为新的凝聚点,重新进行分类,重复步骤2,3,直到分类的结果与上一步的分类结果相同,表明分类已经合理为止。

具体步骤

用一个简单的例子来说明动态聚类法的工作过程。例如我们要把图中的点分成两类。快速聚类的步骤:
1、随机选取两个点 x 1 ( 1 ) x_1^{(1)} x1(1) x 2 ( 1 ) x_2^{(1)} x2(1)作为凝聚点。
2、对于任何点 x k x_k xk,分别计算 d ( x k , x l ( 1 ) ) d(x_k,x_l^{(1)}) d(xk,xl(1)) d ( x k , x 2 ( 1 ) ) d(x_k,x_2^{(1)}) d(xk,x2(1))
3、若 d ( x k , x 1 ( 1 ) ) &lt; d ( x k , x 2 ( 1 ) ) d(x_k,x_1^{(1)})&lt;d(x_k,x_2^{(1)}) d(xk,x1(1))<d(xk,x2(1)),则将x划为第一类,否则划给第二类。
4、分别计算两个类的重心,则得 x 1 ( 2 ) x_1^{(2)} x1(2) x 2 ( 2 ) x_2^{(2)} x2(2),以其为新的凝聚点,对空间中的点进行重新分类,得到新分类。

选择聚点

聚点(种子)是一批有代表性的样品,它的选择决定了初始分类,对最终分类有较大影响。

在进行快速聚类法前,要根据研究问题的要求及了解程度先定下分类数k,这样就可以在每一类中选择一个有代表性的样品作为聚点(初始聚点)。

选择聚点有下列方法:
(1)经验选择。如果对研究对象比较了解,根据以往的经验定下k个样品作为聚点。
(2)将n个样品人为地(或随机地)分成k类,以每类的重心作为聚点。
(3)最小最大原则。设要将n个样品分成k类,先选择所有样品中距离最远的两个样品 x i 1 , x i 2 x_{i_1},x_{i_2} xi1,xi2为前两个聚点,即选择 x i 1 x_{i_1} xi1 x i 2 x_{i_2} xi2,使 d ( x i 1 x i 2 ) = d i 1 , i 2 = m a x { d i j } d(x_{i_1}x_{i_2}) = d_{i_1,i_2} = max\{ d_{ij}\} d(xi1xi2)=di1,i2=max{dij}
然后选择第3个聚点xi ,使其与前两个聚点的距离最小者等于所有其余的与 x i 1 x_{i_1} xi1, x i 2 x_{i_2} xi2的较小距离中最大的

案例

某商店5位售货员的销售量和教育程度如下表:
在这里插入图片描述
对这5位售货员分类。

  1. 选择凝聚点
  2. 计算各样品点两两之间的距离,得到如下的距离矩阵(定义距离为(“销售量”,“教育程度”))在这里插入图片描述
    d 25 = 53 d_{25} = \sqrt {53} d25=53 为最大。可选择2和5作为凝聚点。

2.初始分类
对于取定的凝聚点,视每个凝聚点为一类,将每个样品根据定义的距离,向最近的凝聚点归类。
在这里插入图片描述

  • 得到初始分类为: G 1 : { 1 , 2 } , G 2 : { 3 , 4 , 5 } G_1: \{ 1,2\} , G_2: \{ 3,4,5\} G1:{1,2},G2:{3,4,5}
  1. 修改分类
    重心是指每类的均值向量,计算G1和G2的重心:G1的重心(1,1.5), G2的重心(7.33,1.67)以这两个重心点作为凝聚点,再按最小距离原则重新聚类在这里插入图片描述
  • 得到分类结果和上面雷同
  • 5
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数学建模中,使用Python进行聚类分析可以通过导入相关库来实现。首先,我们需要导入numpy、matplotlib、scipy、xlrd、pandas、sklearn等库来支持聚类分析的各个环节。聚类分析是一种研究问题的多元统计方法,也可以称为群分析。它的目的是将具有相似元素的集合聚集到一类中。聚类分析可以采用定性研究和定量研究的方法,通过选取共同指标,分析元素指标值之间的差距,从而实现分类的目的。在聚类分析中,常用的分类方法有Q型分类和R型分类。Q型分类是对样品进行聚类,而R型分类是对指标进行聚类。在使用Python进行聚类分析时,我们重点讲解Q型分类。聚类分析的一般步骤包括:数据准备、选择合适的聚类算法、确定聚类数目、进行聚类分析、评估聚类结果。这些步骤可以帮助我们在数学建模中使用Python进行聚类分析。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【数学建模聚类分析——python实现](https://blog.csdn.net/m0_56120502/article/details/124509024)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值