读书笔记 -- 008_数据挖掘_聚类_基于层次的方法

来源:互联网 发布:怎么禁止mac休眠 编辑:程序博客网 时间:2024/05/19 14:38

概述

尽管基于划分的聚类算法满足把对象划分成一些互斥的组群的基本聚类要求,但是在某些情况下,我们希望把数据划分成不同层次的组群,如层次。层次聚类方法(hierarchical clustering method)将数据对象组成层次结构或簇的“树”。

对于数据汇总和可视化,用层次结构的形式表示数据对象是有用的。我们可以很容易地对组织在层次结构中的数据进行汇总或特征化。

这次,我们讨论层次聚类算法。我们从凝聚和分裂层次聚类的讨论开始。凝聚和分裂层次聚类分别使用自底向上和自顶向下策略把对象组织到层次结构中。凝聚方法从每个对象都作为一个簇开始,迭代地合并,形成更大的簇。与此相反,分裂的方法开始令所有给定的对象形成一个簇,迭代地分裂,形成较小的簇。

层次聚类的算法可能在合并或分裂点的选择方法上遇到困难。这种决定是至关重要的,因为一旦对象的组群被合并或被分裂,则下一步处理将在新产生的簇上进行。它既不会撤销先前所做的工作,也不会在簇之间进行对象交换。因此,如果合并或者分裂选择不当,则可能导致低质量的簇。此外,这种方法不具有很好的可伸缩性,因为每次合并或分裂的决定都需要考察和评估许多对象或簇。

一种提高层次聚类质量的有希望的方向是集成层次聚类与其他技术,形成多阶段聚类。我们介绍两种这样的方法,即BIRCH和Chameleon。BIRCH从使用树结构分层划分对象开始,其中树叶和低层结点可以看作“微簇”,依赖于分辨率的尺度。然后,它使用其他聚类算法,在这些微簇上进行宏聚类。Chameleon探索层次聚类中的动态建模。
存在多种方法对层次聚类算法进行分类。例如,他们可分为算法方法、概率方法和贝叶斯方法。凝聚、分裂和多阶段方法都是算法的,即他们都将数据对象看作确定性的,并且根据对象之间的确定性的距离计算簇。概率方法使用概率模型捕获簇,并且根据模型的拟合度度量簇的质量。贝叶斯方法计算可能的聚类的分布,即它们返回给定数据上的一组聚类结构和他们的概率、条件,而不是输出数据集上的单个确定性的聚类。


1、凝聚的与分裂的层次聚类

层次聚类的方法可以是凝聚的或分裂的,取决于层次分解是自底向上(合并)还是自顶向下(分裂)方式形成。

1、)凝聚的层次聚类方法:簇的合并过程反复进行,每一步合并两个最接近的簇,直到所有的对象最终合并成一个簇。这需要定义簇的邻近性概念;
2、)分裂的层次聚类方法:簇的分裂过程反复进行,每一步分裂一个簇,直到最终每个新的簇只包含一个对象(单点簇)。在这种情况下,我们需要确定每一步分裂哪个簇,以及如何分裂。一旦一个簇被划分,该簇的任何可供选择的其它划分都不再考虑。基于分裂方法的特点,凝聚的方法远比分裂的方法多。
凝聚的和分裂的层次聚类
层次聚类常常使用树状图(dendrogram)的类似于树的图显示。
层次聚类的树状图表示
对于二维点的集合,层次聚类也可以使用嵌套图(nested cluster diagram)表示。如下图是使用单连接技术聚类。
这里写图片描述


2、算法方法的距离度量

无论是使用凝聚的还是分裂的方法,一个核心的问题是度量两个簇之间的距离,其中每个簇一般是一个对象集。

4个广泛采用的簇间距离度量方法如下,其中|p-p’|是两个对象或点p和p’之间的距离,mi是簇Ci的均值,而ni是簇C中对象的数目。这些度量又称连接度量(linkage measure)。

当算法使用最小距离来衡量簇间距离时,有时称它为最近邻聚类算法(nearest-neighbor clustering algorithm)。此外,如果当最近的两个簇之间的距离超过用户给定的阈值时聚类过程就会终止,则称其为单连接算法(single-linkage algorithm)。如果我们把数据点看作图的结点,图中的边构成簇内结点间的路径,那么两个簇Ci和Cj的就对应于在Ci和Cj的最近的一对结点之间添加一条边。由于连接簇的边总是从一个簇通向另一个簇,结果图将形成一棵树。因此,使用最小距离度量的凝聚层次聚类算法也被称为最小生成树算法(minimal spanning tree algorithm),其中图的生成树是一棵连接所有结点的树,而最小生成树是具有最小边权重和的生成树。

当一个算法使用最大距离来度量簇间距离时,有时称它为最远邻聚类算法(farthest-neighbor clustering algorithm)。如果当最近的两个簇之间的最大距离超过用户给定的阈值时聚类过程便终止,则称其为全连接算法(complete-linkage algorithm)。通过把数据点看作图中的结点,用边来连接结点,我们可以把每个簇看成是一个完全子图,也就是说,簇中所有结点都有边来连接。两个簇间的距离由两个簇中距离最远的结点间的距离确定。最远邻算法试图在每次迭代中尽可能少地增加簇的直径。如果真实的簇较为紧凑并且大小近似相等,则这种方法将会产生高质量的簇,否则产生的簇可能毫无意义。

以上最小和最大距离度量代表了簇间距离度量的两个极端。它们趋向对离群点或噪声数据过分敏感。使用均值距离或平均距离是对最小和最大距离之间的一种这种方法,并且可以克服离群点敏感性问题。尽管均值距离计算最简单,但是平均距离也有其优势,因为它既可以处理数值数据又可以处理分类数据。分类数据的均值向量可能很难计算或者根本无法定义。
这里写图片描述

例:我们把层次聚类应用于下图a所示的数据集。下图b显示使用单连接的树状图。下图c显示使用全连接的情况,为了显示简单,省略了簇{A,B,J,H}和{C,D,G,F,H}之间的边。该例表明,通过单连接,我们可以发现由局部邻近性定义的分层的簇,而全连接则趋向发现全局邻近性选择的簇。

注意:以上4中连接度量有一些变形。例如,我们可以用簇心(即中心对象)之间的距离度量两个簇之间的距离。


3、基本凝聚层次聚类算法
许多凝聚层次聚类技术都是这个方法的变种:从个体点作为簇开始,相继合并两个最接近的簇,直到只剩下一个簇。
这里写图片描述

基本凝聚层次聚类算法使用邻近度矩阵。这需要存储m^2/2个邻近度(假设临近矩阵是对称的)(个人观点:既然是对称的,那么就应该需要这里写图片描述个存储空间),其中m是数据点的个数。记录簇所需要的空间比簇的个数少m-1,不包括单点簇。因此总的空间复杂度为O(m^2)。
基本凝聚层次聚类算法的时间复杂度也是明确的,即需要O(m^2logm)(不想细说,见《数据挖掘导论》P322)。

0 0
原创粉丝点击