机器学习机器学习与数据挖掘大数据,机器学习,人工智能

聚类算法(下)07

2018-08-19  本文已影响3人  DeamoV

其他

这篇文章的整体排版主要是根据个人的博客来哒,如果感兴趣的话可以去我的自己搭建的个人博客看这篇文章

正文

聚类算法上中讲了大名鼎鼎的K-Means算法及其优化变种,在这篇中几种讲述两位两种不同思路的聚类算法。

层聚类算法

传统层聚类算法—AGNES和DIANA算法

层次聚类和K-Means的思路不太一样,它的思路有点像是决策树,按照层次进行分解,知道满足某种条件为止,传统的层次聚类分为自底而上,和自上而下两类:

在AGNES算法中都提到了,簇是根据某些原则进行分裂或者合并的,而这个原则就是簇间距离。计算簇间距离的方法有最小距离(SL聚类),最大距离(CL聚类)以及平均距离(AL聚类),具体的说明如下:

AGNES和DIANA算法优缺点如下:

  1. 简单,理解容易。
  2. 合并点/分裂点选择不太容易。
  3. 合并/分类的操作不能进行撤销。
  4. 由于执行效率较低O(t*n^2)t为迭代次数,n为样本点数。

层次聚类优化算法

之前我们看到了传统的层次聚类算法,由于其执行效率太低,且不能动构建的的特点,显然不适合大数据集。于是我们在此基础上引入了BIRCH算法CURE算法

BIRCH算法

BIRCH (balanced iterative reducing and clustering using hierarchies) 算法,英文的全称翻译过来以后是平衡迭代削减聚类算法,其构成和我们考研数据结构中学过的B+树非常的类似,甚至很多特性都是相同的,具体的说它构建的树叫做CF(Cluster Feature)-Tree。

  1. 节点,即簇的结构:
    既然是树,那么就不得不提它的节点的结构了。在BIRCH构建CF树的过程中,每个节点等于说是存放了它之下所有节点的特征,于是他在节点中存放了如下的三部分数据。
    • N,指在这个节点中有多少个样本点。
    • LS,指的是这个节点中的样本相应特征的和。
    • LS,指的是这个节点中的样本相应特征的特征的平方和。
  2. 节点之间,节点和子节点,以及叶子结点之间的关系
    节点和其子节点是包含的关系,也就是父节点中的N,LS以及SS是其所有子节点的和。而相应的样本点的具体信息指包含在底层节点中(叶子结点的子节点),同时叶子结点构成一个单项链表,同时有一个指针指向其表头。这点的特性是同B+树高度一致的
  3. 最多子女个数,以及分裂判定
    和B+树一样,对于树构建中的分叉个数是有限制的,这个限制需要提前给出,即分支因子。同时,值得注意的是,一般而言在构建节点簇的中心点的时候,一般选用第一个进入这个节点的样本点作为中心点,然后根据指定的该簇和中心点限定的距离,即类直径,其往往通过LS和SS算出。判断新入的点是否可以划入该簇,而分裂节点的时候,往往以这个初始点进行分割。
    综上我们可以看出,BIRCH算法的本质其实就是动态的插入样本点,然后动态的根据规则构建一个类B+树。它的优点是动态建树且效率高是线性效率,即每个样本点都是一次性插入的,同时也节省内存,所以非常适合大数据集。不过遗憾的是它也是采用距离作为分类标准,故只适合分布呈凸形或者球形的数据集、且需要给定聚类个数和簇之间的相关参数,而这些对节点CF的限制可能导致簇类结果和真实不太一致
    注1:BIRCH不依赖给定的待分类簇数量K,但是给定了K值最好,若不一定K值,最终CF-Tree的叶子结点树木就是最终分类的簇的数目。
    注2:BIRCH算法在训练大规模数据集的时候,和mini-batch K-Means相比,BIRCH算法更加适合类别数量K比较多的情况。
    注3:由于类直径是通过LS和SS算出的,所以当特征维度超过20~30左右的时候,不建议使用该算法。

CURE算法(使用代表点的聚类法)

CURE(Clustering Using REpresentatives),该算法先把每个数据点看成一类,然后合并距离最近的类直至类个数为所要求的个数为止。但是和AGNES算法的区别是:取消了使用所有点,或用中心点+距离来表示一个类,而是从每个类中抽取固定数量、 分布较好的点作为此类的代表点,并将这些代表点乘以一个适当的收缩因子,使它们更加靠近类中心点。代表点的收缩特性可以调整模型可以匹配那些非球形的场景,而且收缩因子的使用可以减少噪音对聚类的影响

CURE算法的优点是能够处理非球形分布的应用场景,同时彩娱乐随机抽样和分区的方式可以提高算法的执行效率。

密度聚类算法

密度聚类方法的指导思想是:只要样本点的密度大于某个阀值,则将该样本添加到最近的簇中。这类算法可以克服基于距离的算法只能发现凸聚类的缺点,可以发现任意形状的聚类,而且对噪声数据不敏感。不过这种计算的复杂度高,计算量大。
密度聚类算法的常用算法有DBSCAN密度最大值算法

DBSCAN算法

DBSCAN(Density-Based Spatial Clustering of Applications with Noise),将簇定义为密度相连的点的最大集合,能够将足够高密度的区域划分为簇,并且在具有噪声的空间数据上能够发现任意形状的簇。其核心思路是用一个点的ε邻域内的邻居点数衡量该点所在空间的密度,该算法可以找出形状不规则的cluster,而且聚类的时候事先不需要给定cluster的数量。

DBSCAN算法流程

它的算法流程如下:

DBSCAN相关名词解释

其中提到的定义有\varepsilon领域,密度,MinPts,核心点,边界点,噪音点,直接密度可达,密度可达,密度相连。他们的解释如下:

DBSCAN算法优缺点

优点:

MDCA密度最大值聚类算法

MDCA(Maximum Density Clustering Application)算法基于密度的思想引入划分聚类中,能够自动确定簇数量并发现任意形状的簇。另外MDCA一般不保留噪声,因此也避免了阈值选择不当情况下造成的对象丢弃情况。
注:MDCA的算法和AGNES非常相像,不同的是最初的初始簇确定是通过密度来确定的。

MDCA算法思路

MDCA算法核心一共分三步,划分、合并簇以及处理剩余节点三部分。

MDCA算法名词解释

最大密度点:如字面意思,就是密度最大的点,密度计算公式一般取DBSCAN算法中的密度计算公式。
有序序列S_{p_{max}}:根据所有对象与最大密度点的距离进行排序。

密度阈值density_0:当节点的密度值大于密度阈值的时候,认为该节点属于一个 比较固定的簇,在第一次构建基本簇的时候,就将这些节点添加到对应簇中,如果小于这个值的时候,暂时认为该节点为噪声节点。

簇间距离:对于两个簇C1和C2之间的距离,采用两个簇中最近两个节点之间的距离作为簇间距离。

M值:初始簇中最多数据样本个数

上一篇下一篇

猜你喜欢

热点阅读