聚类分析汇总

聚类分析

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

Q型聚类

根据在数据中发现的描述对象及其关系的信息,将数据对象分组。目的是,组内的对象相互之间是相似的(相关的),而不同组中的对象是不同的(不相关的)。组内相似性越大,组间差距越大,说明聚类效果越好。

R型聚类

对指标进行聚类是一种常见的数据分析方法,通常用于将相似的指标分为同一类,以便更好地理解和解释数据,是一种数据降维的方法。

聚类过程

  • 数据准备:包括特征标准化和降维;
  • 特征选择:从最初的特征中选择最有效的特征,并将其存储于向量中;
  • 特征提取:通过对所选择的特征进行转换形成新的突出特征;
  • 聚类(或分组):首先选择合适特征类型的某种距离函数(或构造新的距离函数)进行接近程度的度量,而后执行聚类或分组;
  • 聚类结果评估:是指对聚类结果进行评估,评估主要有3种:外部有效性评估、内部有效性评估和相关性测试评估。

聚类分析的度量

聚类分析的度量指标用于对聚类结果进行评判,分为内部指标和外部指标两大类:

  • 外部指标指用事先指定的聚类模型作为参考来评判聚类结果的好坏
  • 内部指标是指不借助任何外部参考,只用参与聚类的样本评判聚类结果好坏
外部指标

对于含有݊n个样本点的数据集ܵS,其中的两个不同样本点( x i , y j {x_i,y_j} xi,yj) 假设C是聚类算法给出的簇划分结果,ܲP是外部参考模型给出的簇划分结果。那么对于样本点 x i , y j {x_i,y_j} xi,yj来说,存在以下四种关系:

  • S S SS SS: x i , y j {x_i,y_j} xi,yj在C和P中属于相同的簇ܲ
  • S D SD SD: x i , y j {x_i,y_j} xi,yj在C中属于相同的簇ܲ,在P中属于不同的簇ܲ
  • D S DS DS: x i , y j {x_i,y_j} xi,yj在C中属于不同的簇ܲ,在P中属于相同的簇ܲ
  • D D DD DD: x i , y j {x_i,y_j} xi,yj在C和P中属于不同的簇ܲ

a , b , c , d a,b,c,d a,b,c,d分别表示 S S , S D , D S , D D SS,SD,DS,DD SS,SD,DS,DD所对应的关系数目, 由于 x i , y i {x_i,y_i} xi,yi所对应的关系必定存在于四种关系中的一种,且仅能存在一种关系,则有如下统计量作为聚类结果评价的外部指标:

  • Rand统计量(Rand Statistic):
    R = a + d a + b + c + d R=\frac{a+d}{a+b+c+d} R=a+b+c+da+d
  • Jaccard系数(Jaccard Coefficient):
    J = a a + b + c J=\frac{a}{a+b+c} J=a+b+ca
  • F值(F‐measure):
    P = a a + b , R = a a + c , ( ܲ P 表示准确率,ܴ R 表示召回率 ) F = ( β 2 + 1 ) P R β 2 P + R , β 是参数,当 β = 1 时,就是最常见的 F 1 ‐ m e a s u r e P=\frac{a}{a+b},R=\frac{a}{a+c},(ܲP表示准确率,ܴR表示召回率)\\\\ F=\frac{(\beta^2+1)PR}{\beta^2P+R},\beta是参数,当\beta=1时,就是最常见的F 1‐measure P=a+ba,R=a+ca,(ܲP表示准确率,ܴR表示召回率)F=β2P+R(β2+1)PR,β是参数,当β=1时,就是最常见的F1‐measure
  • FM指数(Fowlkes and Mallows Index):
    F = ( a a + b ) ∗ ( a a + c ) = P ∗ R F=\sqrt{(\frac{a}{a+b})*(\frac{a}{a+c})}=\sqrt{P*R} F=(a+ba)(a+ca) =PR

以上四个度量指标的值越大,表明聚类结果和参考模型直接的划分结果越吻合,聚类结果就越好。

内部指标

在聚类分析中,对于两个݉ n n n维样本 p p p q q q,常用的距离度量有欧式距离、曼哈顿距离、切比雪夫距离、明可夫斯基距离和余弦相似度等。

  • 欧式距离(Euclidean Distance)是计算欧式空间中两点之间的距离,是最容易理解的距离计算方法。
    d E u c l i d e a n ( p , q ) = ∑ i = 1 n ( p i − q i ) 2 d_{Euclidean}(p,q) = \sqrt{\sum_{i=1}^{n} (p_i - q_i)^2} dEuclidean(p,q)=i=1n(piqi)2
  • 曼哈顿距离(Manhattan Distance)也称城市街区距离,欧式距离表明了空间中两点间的直线距离,但是在城市中,两个地点之间的实际距离是要沿着道路行驶的距离,而不能计算直接穿过大楼的直线距离,曼哈顿距离就用于度量这样的实际行驶距。
    d M a n h a t t a n ( p , q ) = ∑ i = 1 n ∣ p i − q i ∣ d_{Manhattan}(p,q) = \sum_{i=1}^{n} |p_i - q_i| dManhattan(p,q)=i=1npiqi
  • 切比雪夫距离(Chebyshev Distance)是向量空间中的一种度量,将空间坐标中两个点的距离定义为其各坐标数值差绝对值的最大值。切比雪夫距离在国际象棋棋盘中,表示国王从一个格子移动到此外一个格子所走的步数。
    d C h e b y s h e v ( p , q ) = max ⁡ i = 1 n ∣ p i − q i ∣ d_{Chebyshev}(p,q) = \max_{i=1}^{n} |p_i - q_i| dChebyshev(p,q)=i=1maxnpiqi
  • 明可夫斯基距离(Minkowski Distance)是欧式空间的一种测度,是一组距离的定义,被看作是欧式距离和曼哈顿距离的一种推广。
    d M i n k o w s k i ( p , q ) = ( ∑ i = 1 n ∣ p i − q i ∣ p ) 1 p d_{Minkowski}(p,q) = (\sum_{i=1}^{n} |p_i - q_i|^p)^\frac{1}{p} dMinkowski(p,q)=(i=1npiqip)p1
  • 余弦相似度(Cosine Similarity):它是通过计算两个向量的夹角的余弦值来衡量它们的相似性。
    s i m ( p , q ) = ∑ i = 1 n p i q i ∑ i = 1 n p i 2 ∑ i = 1 n q i 2 sim(p,q) = \frac{\sum_{i=1}^{n} p_iq_i}{\sqrt{\sum_{i=1}^{n} p_i^2} \sqrt{\sum_{i=1}^{n} q_i^2}} sim(p,q)=i=1npi2 i=1nqi2 i=1npiqi

根据空间中点的距离度量,可以得出以下聚类性能度量内部指标:

  • 紧密度(以均方差为例):
    M S E = 1 n ∑ i = 1 n ( x i − x ˉ ) 2 MSE = \frac{1}{n}\sum_{i=1}^n (x_i - \bar{x})^2 MSE=n1i=1n(xixˉ)2
  • 分隔度(簇内平方和):
    S S W = ∑ i = 1 k ∑ x ∈ C i ∥ x − μ i ∥ 2 SSW=\sum_{i=1}^{k}\sum_{x\in C_i}^{ }{\left\|x-\mu_i\right\|^2} SSW=i=1kxCixμi2
    其中, k k k为簇的个数, C i C_i Ci表示第 i i i个簇中的样本点集合, μ i \mu_i μi为第 i i i个簇的样本均值向量
    其他的还有戴维森堡丁指数、邓恩指数等。

聚类的分类

  • 基于划分的聚类(k‐均值算法、k‐medoids算法、k‐prototype算法)
  • 基于层次的聚类
  • 基于密度的聚类(DBSCAN算法、OPTICS算法、DENCLUE算法)
  • 基于网格的聚类
  • 基于模型的聚类(模糊聚类、Kohonen神经网络聚类)

基于划分的聚类

基于划分的方法是简单、常用的一种聚类方法,它通过将对象划分为互斥的簇进行聚类, 每个对象属于且仅属于一个簇;划分结果旨在使簇之间的相似性低,簇内部的相似度高。

K-means聚类

计算样本点与类簇质心的距离,与类簇质心相近的样本点划分为同一类簇。k‐均值通过样本间的距离来衡量它们之间的相似度,两个样本距离越远,则相似度越低,否则相似度越高。

算法步骤:

1.随机选择 k k k 个数据点作为初始的质心(centroid)。

2.对于每个数据点,计算其与 k k k 个质心之间的距离,并将其分配到距离最近的质心所在的簇中。

3.对于每个簇,重新计算该簇内所有数据点的平均值,得到新的质心。

4.重复步骤 2 和 3,直0到质心不再发生明显变化(即收敛),或达到预定的最大迭代次数。

5.输出最终的聚类结果。

需要注意的是,K-means聚类算法是一种基于迭代优化的方法,其结果可能会收敛到局部最优解而非全局最优解,因此在实际应用中需要注意对聚类结果进行评估和调优。此外,还需要根据具体问题的需求和特点,合理选择聚类的数量 k k k

K-means聚类算法是一种简单易懂、可扩展性强、效率高的聚类算法,但其对初始质心的选择较为敏感,不适用于非凸形状的聚类,聚类数量需要预先确定,容易陷入局部最优解。
K-means++聚类:随机选点作为中心,随机增加簇直至k。

K-medoids聚类

K‐medoids算法不通过计算簇中所有样本的平均值得到簇的中心,而是通过选取原有样本中的样本点作为代表对象代表这个簇,计算剩下的样本点与代表对象的距离,将样本点划分到与其距离最近的代表对象所在的簇中。

K‐medoids聚类的一种典型实现是围绕中心点划分(Partitioning Around Mediods, PAM)算法 。PAM 算法中簇的中心点是一个真实的样本点而不是通过距离计算出来的中心。PAM算法与k均值一样,使用贪心策略来处理聚类过程。

为了应用于大规模数据,有CLARA(Clustering LARge Applications)算法。

基于层次的聚类

层次聚类的应用广泛程度仅次于基于划分的聚类,核心思想是通过对数据集按照层次,把数据划分到不同层的簇,从而形成一个树形的聚类结构。层次聚类算法可以揭示数据的分层结构,在树形结构上不同层次进行划分,可以得到不同粒度的聚类结果。按照层次聚类的过程分为自底向上的聚合聚类和自顶向下的分裂聚类。聚合聚类以AGNES、BIRCH、ROCK等算法为代表,分裂聚类以DIANA算法为代表。

聚合聚类:

步骤描述
1将每个数据点视为一个单独的簇。
2计算任意两个簇之间的距离,并将距离最近的两个簇合并为一个新的簇。
3重复步骤 2,直到所有数据点都被合并为一个大簇,或达到预定的聚类数量。
4输出最终的聚类结果。

分裂聚类:

步骤描述
1将所有数据点视为一个整体簇。
2计算簇内各个数据点之间的距离,选择距离最大的数据点将该簇分裂成两个子簇。
3对于新生成的子簇,重复步骤 2,直到所有子簇的大小达到预定的聚类数量,或达到预定的簇大小。
4输出最终的聚类结果。
聚合聚类方法简介分裂聚类方法简介
凝聚层次聚类(AGNES)从下往上不断将相邻的簇合并,直到所有数据点都在一个簇中或者簇的个数达到预设的值。DIANA从上往下递归地将簇分裂成更小的簇,直到每个簇都只包含一个数据点或达到预设的簇的个数。
BIRCH使用一种称为CF Tree的结构来处理大规模数据,先用一个稠密的子集作为原型簇,在数据中逐步加入数据点,重新计算簇心和半径,如果加入的点与原有簇距离较远,就分裂出一个新的簇。CURE使用多个采样点来代表一个簇,使用密度聚类将相邻的簇合并,直到达到预设的簇的个数。

基于密度的聚类

基于密度的聚类是一种无需预先指定聚类数量的聚类方法,它基于样本点周围的密度来确定聚类结果。该方法通过寻找高密度的区域将数据点划分为不同的类别,并且可以识别任意形状的聚类簇。在这种方法中,聚类中心是通过局部密度最大的区域来确定的。

基于密度的聚类算法的核心思想是:通过计算每个数据点周围其他数据点的密度,找到一些密度高的区域作为聚类中心。具体实现中,需要设置一些超参数,例如半径大小、邻居数等,用于确定密度高低的阈值。常见的基于密度的聚类算法有DBSCAN、OPTICS、MeanShift等。

方法名称简介
DBSCAN基于密度的聚类算法,将高密度区域作为簇中心,通过连通性将簇进行合并。通过定义邻域内最小点数和半径大小来确定簇的形状和大小,能够识别任意形状的聚类簇。
OPTICS基于密度的聚类算法,通过计算数据点的局部密度和可达距离来确定聚类结果。与DBSCAN不同的是,OPTICS不需要指定半径大小,能够处理数据密度不均匀的情况。
MeanShift基于密度的聚类算法,通过寻找样本点周围的高密度区域来确定聚类中心。算法能够自动确定簇的数量和形状,并且可以识别任意形状的聚类簇。但是算法对数据的初始值敏感,需要选择合适的初始值。
HDBSCAN基于密度的层次聚类算法,通过构建一个密度可达图和一颗最小生成树来确定聚类结果。算法可以处理数据中的噪声点,并且不需要预设簇的数量,但是对于高维数据,算法的计算复

基于网格的聚类

基于网格的聚类是一种聚类方法,它将数据空间划分为一个个相交的网格,将数据点映射到它们所在的网格中,然后通过计算每个网格内部的数据点的统计信息来判断是否应该将该网格划分成更小的子网格,直到所有网格的大小达到一定的阈值为止。这种方法可以有效地处理高维数据,并且在处理大数据集时具有较高的效率。常见的基于网格的聚类方法包括CLIQUE、WaveCluster、STING等。

聚类方法算法描述优点缺点
CLIQUE基于密度的方法,在一个网格内需要满足最小密度阈值,同时网格之间有一定的重叠,可以处理噪声和局部离群点可以有效处理高维数据和离群点网格之间重叠导致计算量增加,对于非凸数据集的表现不佳
WaveCluster基于网格的方法,在一个网格内需要满足最小密度阈值,并且通过计算邻居之间的相似性来判断是否需要进一步细分网格可以有效处理高维数据,对于非凸数据集表现良好需要预先设定邻居数量和相似性阈值,对于数据集的结构比较复杂时,可能需要调参
STING将数据空间分割为多个网格,并且使用树形结构来管理这些网格,通过计算每个网格内部的数据点的距离来判断是否应该将该网格划分成更小的子网格适用于大规模数据集,容易实现对于非凸数据集表现一般,对于数据分布不均匀的情况表现

基于模型的聚类

基于模型的聚类是一种将数据分成若干类别的方法,其基本思想是假设每个类别由一个概率分布描述,并利用统计学原理来估计这些概率分布的参数,从而将数据划分成多个类别。

在基于模型的聚类中,常用的方法有高斯混合模型聚类和贝叶斯聚类等。高斯混合模型聚类假设每个类别由多个高斯分布组成,通过最大化似然函数来估计每个高斯分布的参数以及类别的概率。贝叶斯聚类则利用贝叶斯定理来估计每个数据点属于每个类别的概率,然后通过一定的阈值将其划分到最可能的类别中。

基于模型的聚类的优点是可以处理非球形的类别形状,同时可以估计每个类别的概率分布参数。缺点是需要事先假设类别的概率分布形式,并且对于复杂的数据集,需要对模型的复杂度进行合理的选择,否则可能会导致过拟合或欠拟合的问题。

方法介绍
高斯混合模型聚类假设每个类别由多个高斯分布组成,通过最大化似然函数来估计每个高斯分布的参数以及类别的概率。具体地,可以使用期望最大化(EM)算法来实现。该方法适用于数据集类别具有复杂形状的情况。
贝叶斯聚类利用贝叶斯定理来估计每个数据点属于每个类别的概率,然后通过一定的阈值将其划分到最可能的类别中。该方法的优点是可以自动估计类别数目,且可以处理噪声数据。常用的方法有基于Dirichlet过程的聚类(DP聚类)和变分贝叶斯聚类等。
潜在狄利克雷分配聚类基于概率模型的非参数聚类方法,将数据点的聚类和生成过程联系起来,通过对先验分布的设定实现聚类。潜在狄利克雷分配聚类(Latent Dirichlet Allocation,简称LDA)是该方法的代表性算法。该方法的优点是可以自动估计类别数
自组织映射网络(SOM)自组织映射网络(Self-Organizing Map,SOM)是一种用于数据挖掘和可视化的无监督学习神经网络模型。它通过学习输入数据的统计特性,将输入数据映射到二维或更高维的输出空间中,并且相似的输入数据在输出空间中会被映射到相邻的区域。这使得SOM可以用于聚类分析、数据压缩、图像处理等领域。

新方法

核聚类

主要思想:通过一个非线性映射,将输入空间中的数据点映射到高维特征空间中,并选取合适的Mercer核函数代替非线性映射的内积,在特征空间中进行聚类。通过非线性映射增加了数据点线性可分的概率,即能较好地分辨、提取并放大有用的特征,从而实现更为准确的聚类,算法收敛速度也较快。

支持向量聚类

支持向量聚类(Support Vector Clustering, SVC)属于核聚类的一种,它以支持向量机(Support Vector Machine, SVM)为工具进行聚类。

基本思想:利用高斯核,将数据空间中的数据点映射到一个高维的特征空间中。再在特征空间中寻找一个能包围所有数据点象的半径最小的球,将这个球映回到数据空间,则得到了包含所有数据点的等值线集。这些等值线就是簇的边界。每一条闭合等值线包围的点属于同一个簇

两个阶段:

  • SVC训练阶段:SVC训练阶段包括高斯核宽度系数的确定、核矩阵的计算、Lagrange乘子的计算、支持向量的选取和高维特征空间中特征球半径的计算
  • 聚类分配阶段:聚类分配阶段首先生成邻接矩阵,然后根据邻接矩阵进行聚类分配

谱聚类

谱聚类想法的起源:如何在给定长度的线条下围出一个最大的面积,也可理解为,在给定面积下如何使用更短的线条。如何在给定一张图,拿出**“更短”**的边来将其“更好”地切分。

  • “更短”的边,正是对应了spectral clustering中的极小化问题,
  • “更好”地切分,则是对应了spectral clustering中的簇聚类效果

应用

  • 在销售领域,利用聚类分析对客户历史数据进行分析,对客户划分类别,刻画不同客户群体的特征,从而深入挖掘客户潜在需求,改善服务质量,增强客户黏性
  • 在医学领域,对图像进行分析,挖掘疾病的不同临床特征,辅助医生进行临床诊断。聚类算法被用于图像分割,把原始图像分成若干个特定的、具有独特性质的区域并提取目标
  • 在生物领域,将聚类算法用于推导动植物分类,以往对动植物的认知往往是基于外表和习性,应用聚类分析按照功能对基因聚类,获取不同种类物种之间的基因关联

参考文章:
聚类分析
了解聚类是什么。聚类方法:k-means、核聚类、层次聚类、谱聚类

参考文献:[1]孙吉贵,刘杰,赵连宇.聚类算法研究[J].软件学报,2008(01):48-61.

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值