机器学习技术-层次聚类算法(组平均)-综合层次聚类方法(BIRCH、CURE)

news/2024/5/20 9:13:29 标签: 聚类, 算法, 机器学习

基于层次的聚类方法,是对给定的数据进行层次的分解,直到某种条件满足为止。首先将数据点组成一颗聚类树,根据层次,自底向上或是自顶向下分解。层次的方法可以分为凝聚的方法和分裂的方法。
凝聚的方法,也称为自底向上的方法,初始时每个数据点都被看成是单独的一个簇,然后通过逐步合并相近的数据点或簇,形成越来越大的簇,直到所有的数据点都在一个簇中,或者达到某个终止条件为止。
凝聚的方法:
步骤1:用异常侦测等方法去离群点。
为了提高凝聚方法的分类效率和优化分类效果,首先应用异常侦测等方法去离群点。我们通常采用基于概率分布模型的方法,一元或多元正太分布分析方法,如果数据点不能很好地拟合一个概率模型,或者说它不服从该分布,则将该数据点标识为离群点。
步骤2:用密度分类的方法将数据分成许多小类。
采用了诸如DBSCAN的基于密度的划分算法,将数据划分足够小的类,以便减少凝聚算法的高昂成本,并且该步骤可逆,即如果后面的凝聚算法得不到一个全局优解,可以重复本步。
步骤3:自底向上凝聚算法(AGNES-AGglomerative NESting).
自底向上凝聚的逻辑算法如下:
输入:包含n个数据点的数据库,终止条件簇的数目k。
输出:k个簇,达到终止条件规定簇数目。
将每个数据点当成一个初始簇;
重复以下步骤:
1)根据两个簇中最近的数据点找到最近的两个簇。
2)合并两个簇,生成新的簇的集合。
3)达到定义的簇的数目时终止。

分裂的方法,也称为自顶向下的方法。它与凝聚层次聚类恰好相反,初始时将所有的数据点置于一个簇中,然后逐渐细分为更小的簇,直到最终每个数据点都在单独的一个簇中,或者达到某个终止条件为止。
1)用异常侦测等方法去离群点。步骤同上;
2)DIANA(DIvisive ANAlysis,自顶向下分裂算法)逻辑算法
自顶向下分裂算法步骤如下:
输入:包含n个数据点的数据库,终止条件簇的数目k。
输出:k个簇,达到终止条件规定簇数目。
1)将所有数据点设为初始簇数目。
2)找出S中与其他点平均相异度最大的点X1,将X1放入新簇S1。
3)根据S中剩余点到最近的距离重新分簇,于是产生两个新簇S1和S2。
4)将S1和S2中直径大的簇,重复2)、3)步。
5)生成k个新簇时终止。
6)应用轮廓系数方法对分裂方法聚类结果评估。
分裂法在生活中也是可以看到的。例如,下火车或下公交车的人群按照目的地分裂:先按照大方向分裂,再按小方向分类,最后再到各自的目的地。

综合层次聚类方法:
1.BIRCH算法
BICH(Balanced Iterative Reducing and Clustering using Hierarchies)算法是一个综合性的层次聚类方法,它利用层次方法的平衡迭代进行归约和聚类。其核心是用一个聚类特征(CF)三元组表示一个簇的有关信息,从而使簇中的点可用对应的聚类特征表示。它通过构造满足分支因子和簇直径限制的聚类特征树来求聚类。该算法通过聚类特征可以方便地进行中心、半径、直径及类内、类间距离的运算。
聚类特征是一个三维向量,CF(n,LS,SS),其中n是数据点的个数,LS是n个点的线性和,SS是n个点的平方和。通过CF可以方便地求中心、半径、直径及类内、类间距离。CF树有两个参数:

分支因子beta,通过它定义每个非叶子结点的子女的最大数目。
阈值T,存储在叶节点中的子簇的最大直径。
算法实现流程如下:
1)用异常侦测等方法去离群点。同上;
2)扫描数据库,建立一个初始的CF树。它可以被看做一个数据的多层压缩,试图保留数据内在的聚类结构。当一个数据点被插入到最近的叶节点(子聚类)中时,随着数据点的插入,CF树被动态地构造,不要求所有的数据读入内存,可在外存上逐个读入数据项。因此,BIRTH方法对增量或动态聚类也非常有效。
3)采用某个聚类算法对CF树的叶节点进行聚类。在这个阶段可以执行任何聚类算法,例如典型的划分方法。BIRCH算法试图利用可用的资源来生成最好的聚类结果。通过一次扫描就可以进行比较好地聚类,故该算法的计算复杂度是O(n),n是数据点的数目。
4)应用轮廓系数方法对分裂方法聚类结果评估。同上
算法的优点是数据点数目具有线性易伸缩性,并具有良好的聚类质量,一次扫描就可以进行较好的聚类。缺点是BIRCH算法只适用于类的分布呈凸形及球形的情况,对不可视的高维数据则不可行。
BIRCH逻辑算:
输入:包括n个数据点的数据集合D=[x1,x2,…,xn]及阈值T。
输出:簇集合。
过程:
1)扫描数据集,建立初始的CF树。
2)对每个数据点xi执行如下操作。
3)为xi找一个正确的待插入的叶子节点。
4)如果阈值条件不被破环,则将xi插入到叶子节点中,并从被插入的叶子节点到根节点依次更新CF三元组。
5)否则,如果有叶子节点空间,则将xi作为单独的簇插入到树中,并更新CF三元组。
6)否则分类叶子节点,重新安排CF三元组。
CURE算法
CURE(Clustering Using Representatives)算法中既有层次部分,也有划分部分,所以CURE也是一个综合性的聚类算法
前面讲到的聚类算法倾向于处理簇为球形、且簇的大小相似的聚类问题,并且对孤点较为敏感。CURE采用了多个点代表一个簇的方法,可以较好地处理以上问题。并且在处理大数据量的时候采用了随机抽样、分区的方法,来提高其效率,使得其可以高效地处理大量数据。
算法实现流程如下:
1)用异常侦测等方法去离群点,同上;
2)对原始数据进行随机抽样,将样本进行等量划分,划分后便形成了以这些样本点为代表的分区。
3)对于每一个分区,再使用层次聚类算法中的凝聚算法。再凝聚算法中的每一步,距离最近的代表性点所对应的簇将被合并。它们之间的距离被定义为两个簇中代表性点之间距离的最小值。
4)应用轮廓系数方法对分裂方法聚类结果评估。同上
CURE算法的具体步骤如下:
1)从原始数据集中抽取一个随机样本S。
2)为了加速聚类,把样本划分成p份,每份大小相等。
3)对每个划分进行局部聚类
4)根据局部聚类结果,通过随机抽样剔除孤立点。主要有两种措施:如果一个簇增长得太慢,就去掉它;在聚类结束的时候,非常小的类被剔除。
5)对上一步中产生的局部的簇进一步聚类。从每个簇中选择c(常数)个数,然后通过应用收缩因子a,将这些分散的点向簇的质心方向收缩。当a为1的时候,所有点都收缩成一点,即质心。通过多个有代表性的点,簇的形状可以更好地被表达出来。
6)用相应的簇标签来记数据。
CURE算法的优点是它回避用所有点或单个质心来表示一个簇的传统方法,而实将一个簇用多个具有代表性的点来表示,是CURE可以适应非球形的几何形状。
另外,收缩因子降低了噪声对聚类的影响,从而使CURE对孤点的处理更加健壮,而且能识别非球形和大小变化比较大的簇,对于大型数据库具有良好的伸缩性。缺点是参数设置对聚类结果有很大的影响,不能处理分类属性。CURE的复杂的复杂度O(n),其中n是数据点的数目。


http://www.niftyadmin.cn/n/862714.html

相关文章

机器学习-密度聚类算法(DBSCAN)

1.密度聚类 基于密度的聚类算法由于能够发现任意形状的聚类,识别数据集中的噪声点,可伸缩性好等特点,在许多领域有着重要的应用。 密度算法概念: 1)如果一个数据点周围足够稠密,也就是以这个点为中心&…

机器学习-特性选择(线性相关法/相关因子SRCF算法/最小描述长度MDL算法)

1.特性选择 特性选择:为特定的应用在不失去数据原有价值的基础上选择最小的属性子集,去除不相关和冗余的属性。特性选择用于在建立分类模型后,或者预测模型之前,对原始数据库进行预处理。本节将介绍特性选择的概念,特性…

机器学习-特征抽取(主成分分析法/因子分析法/非负矩阵因子分解NMF算法)

1.特征抽取: 特征抽取是机器学习中另一种十分有用的方法,它与特性选择不同,特征抽取是对数据的特征进行概括和总结,而特性选择则主要是对数据中的不同特征进行比较和选取。 特征抽取是机器学习技术中的一个常用的方法,…

2021.01.25丨conda环境配置

最近新换了服务器,需要重新搭建工作环境,在此整理记录一下环境搭建步骤安装miniconda 下载地址:https://docs.conda.io/en/latest/miniconda.html以Miniconda3 Linux 64-bit为例sh Miniconda3-latest-Linux-x86_64.sh一路空格、yes。注意&…

机器学习-关联规则(Apriori算法和FP-树频集算法)

1.关联规则 世间万物普遍存在着联系,有些联系是我们知道的,比如说有些疾病有遗传问题、肺癌跟吸烟习惯有关联等。更多的联系是我们现在还未知的,需要我们去探索的。机器学习的关联规则算法,可以发现大量数据中项集之间有趣的未知联…

2021.02.03丨quast报错module ‘cgi‘ has no attribute ‘escape‘解决办法

最近采购了新服务器,在上面第一次跑组装,按正常流程要进行组装评估,在使用quast的过程中发生了报错,报错如下: 抓重点,问题在于cgi.escape,里面其实有提示,‘html’:cgi.…

机器学习-分类和预测(logistic回归、支持向量机)

分类问题是通俗易懂的问题,分类技术是应用广泛的方法和手段。我们把分类和预测统称为推测。分类就是应用已知的一些属性数据去推测一个未知的离散型的属性数据,而这个被推测的属性数据的可取值是预先定义的。要很好地实现这种推测,就需要事先…

2021.02.23丨Virsorter2安装使用及答疑

最近项目比较多,又在学英语,写文章的时间少了很多。最近接到一个病毒组装的项目。用之前组装工具(ABYSS、SPAdes)都没有能够组装较为完整的scafford,今天介绍一款专门用于组装病毒的工具——Virsorter。Virsorter最早版…