Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 86

天津大学计算机科学与技术学院

第 8 章 聚类
喻梅
2

8.1 聚类概述

8.2 基于划分的聚类
目录
CONTENTS 8.3 基于层次的聚类

8.4 基于密度的聚类

8.5 基于网格的聚类
Chapter 8.1

聚类概述
8.1 聚类的基本概念 4

– 什么是聚类分析?
• 聚类分析 (cluster analysis) 简称聚类 (clustering) ,是一个把
数据对象 ( 或观测 ) 划分成子集的过程。
• 每个子集是一个簇 (cluster) ,使得簇中的对象彼此相似,但与
其他簇中的对象不相似。
• 由聚类分析产生的簇的集合称做一个聚类。
• 聚类分析已经广泛地用于许多应用领域, 包括商务智能、 图像
模式识别、 Web 搜索、生物学和安全。
8.1 聚类的基本概念 5

– 数据挖掘对聚类的典型要求如下:
• 处理不同属性类型的能力 : 越来越多的应用需要对复杂数据类型进行聚
类。
• 可伸缩性:在不同规模的数据集下表现稳定,聚类算法要具有高度可伸
缩性。
• 对于确定输入参数的领域知识的要求:许多聚类算法都要求用户输人参
数并且对参数十分敏感。
• 发现任意形状的簇:一个簇可能是任意形状的。
8.1 聚类的基本概念 6

– 数据挖掘对聚类的典型要求如下:
• 处理噪声数据的能力:一些聚类算法可能对噪声数据敏感。
• 增量聚类和对输入次序不敏感:在许多应用中 , 增量更新可能随时发生。一些
聚类算法还可能对输入数据的次序敏感。
• 聚类高维数据的能力:数据集可能包含高维度数据或大量属性值。
• 基于约束的聚类:需要找到既满足特定的约束又具有良好聚类特性的数据分组。
• 可解释性和可用性:用户希望聚类结果是可解释的、可用的。
8.1 聚类的基本概念 7

– 聚类过程遵循的基本步骤:
• 特征选择:尽可能多地包含任务关心的信息

• 近邻测度:定量测定两特征如何“相似”或“不相似”
• 准则定义:以蕴含在数据集中类的类型为基础
• 算法调用:按近邻测度和聚类准则揭示数据集的聚类结构

• 结果验证:常用逼近检验验证聚类结果的正确性
• 结果判定:由专家用其他方法判定结果的正确性
8.1 聚类的基本概念 8

– 基本聚类方法概述:

• 基于划分的方法 (partition-based method) : 给定一个 n 个对象的集合 ,


划分方法构建数据的 k 个分区 , 其中每个分区表示一个簇 , 并且 k ≤ n 。
也就是说 , 它把数据划分为 k 个组 , 使得每个组至少包含一个对象。
• 基于层次的方法 (hierarchical-based method) : 层次方法创建给定数据
对象集的层次分解。层次方法可以分为疑聚的或分裂的方法。层次方法的
缺陷在于 , 一旦一个步骤 ( 合并或分裂 ) 完成 , 它就不能被撤销。
8.1 聚类的基本概念 9

– 基本聚类方法概述:

• 基于密度的方法 (density-based method) : 基于密度的方法定义邻域的半


径范围,邻域内的对象数目超过某限定值则添加到簇中。基于密度的方法可
以发现任意形状的簇。
• 基于网格的方法 (grid-based method) : 基于网格的方法把对象空间量化
为有限个单元,形成一个网格结构 。 所有的聚类操作都在这个网格结构
( 即量化的空间 ) 上进行。 这种方法的主要优点是处理速度很快 , 其处理时
间通常独立于数据对象的个数。
Chapter 8.2

基于划分的聚类
8.2 基于划分的聚类 11

基于划分的聚类的形式化定义:
给定 n 个数据对象的数据集 D, 以及要生成的簇数 k, 划分算法把数据对象
组织成 k (k≤n) 个分区 , 其中每个分区代表一个簇。

基于划分的聚类主要介绍 K- 均值算法和 K- 中心点算法。


8.2 基于划分的聚类 12

1. k- 均值算法
− 基本概念
假设数据集 D 包含 n 个欧氏空间中的对象。划分方法把 D 中的对象分配到
k 个簇 , , … , 中 , 使得对于 1≤ i , j ≤ k, 且 = 。使得数据集中所有对象的误差的平
方和 E 最小。

其中, Ci 为第 i 个簇, o 为簇 Ci 中的对象, ci 为簇 Ci 的质心,是簇 Ci 中所有


对象的平均值,如公式 (8-2) 所示。
(8-2)
式中,是簇中的对象个数。
8.2 基于划分的聚类 13
1. k- 均值算法

− k- 均值算法的基本过程:

① 首先输入 k 的值,即具有 n 个对象的数据集经过聚类将得到 k 个分类或分组。


② 从数据集 D 中随机选择 k 个对象作为簇质心,每个簇质心代表一个簇,得到的
簇质心集合为。

③ 对 D 中每一个对象,计算与的距离,得到一组距离值,选择最小距离值对应的
簇质心,则将对象划分到以为质心的簇中。
④ 根据每个簇所包含的对象集合,重新计算簇中所有对象的平均值得到一个新的
簇质心,返回步骤③,直到簇质心不再变化。
8.2 基于划分的聚类 14

1. k- 均值算法
例 8-1 使用 k- 均值算法进行聚类
数据对象集合 D 如表 8-2 所示,作为一个聚类分析的二维样本,要求的簇的数量 k=2 。
表 8-2 数据集
数据对象
x 0 0 1.5 5 5
y 2 0 0 0 2

数据分布如图 8-1 所示。

o1 o5

o2 o3 o4

图 8-1 数据分布图
8.2 基于划分的聚类 15

1. k- 均值算法
解:
① 任意选择,为簇和初始的簇质心,即,。
② 对剩余的每个对象,根据其与各个簇质心的距离,将它赋给最近的簇。
:;
显然, , 故将分配给。
:;
显然,,故将分配给。
:;
显然, , 故将分配给。
更新,得到两个簇: ,
8.2 基于划分的聚类 16

1. k- 均值算法
计算每个簇的平方误差准则 :

Y
形成的两个簇如图 8-2 所示。

c1 o1 o5

c2
o2 o3 o4
x

图 8-2 初始簇划分
8.2 基于划分的聚类 17

1. k- 均值算法
③ 计算新簇质心

④ 重复②,对每个对象,根据其与各个簇新质心的距离,将它赋给最近的簇。

显然, , 故将分配给。

显然, , 故将分配给。

显然, , 故将分配给。
8.2 基于划分的聚类 18

1. k- 均值算法

④ 重复②,对每个对象,根据其与各个簇新质心的距离,将它赋给最近的簇。

显然,,故将分配给。

显然, , 故将分配给。
更新,得到两个新簇: ,
8.2 基于划分的聚类 19
1. k- 均值算法
计算每个簇的平方误差准则 :

Y
形成的两个簇如图 8-3 所示。

c1
o1 o5

c2
o2 o3 o4

图 8-3 更新簇划分
8.2 基于划分的聚类 20

1. k- 均值算法

K- 均值算法的优点:
① 擅长处理球状分布的数据,当结果聚类是密集的,而且类和类之间的区别比较明显时, k-
均值聚类算法的效果比较好。
② 对于处理大数据集,是相对可伸缩的和高效的,它的复杂度是 O(nkt),n 是对象的个数, k
是簇的数目, t 是迭代的次数。
③ 相比其他的聚类算法, k- 均值聚类算法比较简单、容易掌握。
8.2 基于划分的聚类 21

1. k- 均值算法

K- 均值算法的缺点:
① 初始质心的选择与算法的运行效率密切相关
② 要求用户事先给定簇数 k
③ 对噪声和离群点敏感,少量的这类数据对结果产生很大影响
8.2 基于划分的聚类 22

2. k- 中心点( PAM )算法

− 基本概念
k - 中心点( k -Medoids )算法不采用簇中对象的平均值作为参照点,而
是选用簇中位置最中心的对象,即中心点作为簇的代表对象,以降低 k- 均值算
法对离群点数据敏感性。
PAM ( Partitioning Around Medoids )算法是最早提出的 k - 中心点算
法之一。该算法首先为每个簇随意选择一个代表对象,剩余的对象根据其与代
表对象的距离分配给最近的一个簇,然后反复地用非代表对象来替代代表对
象,以改进聚类的质量。
8.2 基于划分的聚类 23
2. k- 中心点( PAM )算法

为了判定一个非代表对象是否是当前一个代表对象的好的替代,对于每一个非代表对象,考
虑下面的四种情况:
① 当前隶属于代表对象所代表的聚类,如果被所代替,且离最近,与不等,那么被重新分配
给所在的聚簇;
② 当前隶属于代表对象所代表的聚类,如果被所代替,且离最近,那么被重新分配给所在的
聚簇;
③ 当前隶属于代表对象所代表的聚类,且与不等,如果被所代替,且离最近,那么对象的隶
属不发生变化;
④ 当前隶属于代表对象所代表的聚类,且与不等,如果被所代替,且离最近,那么被重新分
配给。
8.2 基于划分的聚类 24

2. k- 中心点( PAM )算法

− k - 中心点算法的基本过程:
① 从 n 个数据对象任意选择 k 个对象作为初始聚类中心代表;
② 计算其余各对象与这些中心对象间的距离,并根据最小距离原则将各对象分配到
离它最近的聚类中心所在的簇中;
③ 任意选择一个非中心对象,计算其与中心对象交换的总代价;
④ 若为负值,则交换与以构成新聚类的 k 个中心对象。
⑤ 循环②到④直到每个聚类不再发生变化为止。
8.2 基于划分的聚类 25

2. k- 中心点( PAM )算法

表示中心点被非中心点替换后的总代价,由每一个对象的替换代价组成,计算公式
如 (8-3) 所示。
(8-3)
其中,为中心点被非中心点替换后对象的替换代价。假设对象原先属于中心点
所代表的簇,替换中心点后属于中心点所代表的簇,则替换成本计算公式如 (8-4) 所
示。
(8-4)
8.2 基于划分的聚类 26
2. k- 中心点( PAM )算法

例 8-2 使用 PAM 算法进行聚类

数据对象集合 D 如表 8-2 所示,作为一个聚类分析的二维样本,要求的簇的数量


表 8-2 数据集
k=2 。 数据对象
x 0 0 1.5 5 5
y 2 0 0 0 2

数据分布如图 8-1 所示。

o1 o5

o2 o3 o4

图 8-1 数据分布图
8.2 基于划分的聚类 27
2. k- 中心点( PAM )算法
解:①样本点间欧几里得距离计算结果如表 8-4 所示。

表 8-4 样本点间距
样本点
0 2 2.5 5.4 5
2 0 1.5 5 5.4
2.5 1.5 0 3.5 4
5.4 5 3.5 0 2
5 5.4 4 2 0
8.2 基于划分的聚类 28

2. k- 中心点( PAM )算法

② 建立初始聚簇中心

随机选择,为簇和初始的聚簇中心,即,。
③ 对剩余的每个对象,根据其与各个簇质心的距离,将它赋给最近的簇。
根据表 8-4 中的数据,

对象距的距离近于距的距离,故将分配给;
对象距的距离近于距的距离,故将分配给;
对象距的距离近于距的距离,故将分配给;
8.2 基于划分的聚类 29

2. k- 中心点( PAM )算法

③ 对剩余的每个对象,根据其与各个簇质心的距离,
将它赋给最近的簇。
于是得到两个簇: , ,聚类结果如图 8-5 所示。
o1 o5 m2

o2 o3 o4
m1

图 8-5 初始聚类图
8.2 基于划分的聚类 30
2. k- 中心点( PAM )算法

④ 交换聚簇中心:用非聚簇中心点、和分别代替中心点和,分别计算替换后的代价、、和、、。
用非中心点代替中心点,计算,替换后的中心点为和,计算每个对象与中心对象之间的距离,按距
离最小原则划对象。
对象距的距离近于距的距离,故将分配给所代表的簇。对象原先属于中心点所代表的簇,现在属于
中心点所代表的簇,则替换代价为:

对象距的距离近于距的距离,故将分配给所代表的簇。对象原先属于中心点所代表的簇,现在属于
中心点所代表的簇,则替换代价为:
8.2 基于划分的聚类 31
2. k- 中心点( PAM )算法

④ 交换聚簇中心:用非聚簇中心点、和分别代替中心点和,分别计算替换后的代价、、和、、。
对象距的距离近于距的距离,故将分配给所代表的簇。对象原先属于中心点所代表的簇,现在属于
中心点所代表的簇,则替换代价为:

对象距的距离近于距的距离,故将分配给所代表的簇。对象原先属于中心点所代表的簇,现在仍属
于中心点所代表的簇,则替换代价为:
对象距的距离近于距的距离,故将分配给所代表的簇。对象原先属于中心点所代表的簇,现在仍属
于中心点所代表的簇,则替换代价为:
因此,用非中心点代替中心点的替换总代价为:
8.2 基于划分的聚类 32

2. k- 中心点( PAM )算法


同理,可求得如下替换代价:
用非中心点代替中心点的替换总代价为:

用非中心点代替中心点的替换总代价为: TC34 = 2.5 + 3.5 + 3.5 + ( - 2) + 0 = 7.5

用非中心点代替中心点的替换总代价为: TC51 = ( - 2.5) + 0 + 0 + 1.5 + 4 = 3

用非中心点代替中心点的替换总代价为: TC52 = ( - 0.5) + ( - 1.5) + 0 + 1.5 + 4 = 3.5

用非中心点代替中心点的替换总代价为:
这样就完成了 PAM 的第一次迭代,发现若将中心点由非中心点替换时, = ,此时有替换代价小于 0
的替换,则使用此替换方案,替换后的中心点为,。
8.2 基于划分的聚类 33
2. k- 中心点( PAM )算法

⑤ 重复④,用非聚簇中心点、和分别代替中心点和,分别计算下列替换
代价、、和、、。

; TC23 = (0.5) + 1.5 + - 1.5 = 0.5 o1 o5 m2

TC24 = 3 + 5 + 2 + (-2) + 0= 8 ; TC51 = ( - 2) + 0 + 0 + 3 + 5.4 =


o2 o3 o4

6.4 m1

TC53 = 0 + 0 + ( - 1.5) + 1.5 + 4 = 4 ; TC54 = 0 + 0 + 0 + ( - 2) + 2 =


图 8-6 最终聚类图
0
这样就完成了 PAM 的第二次迭代,发现没有代价小于 0 的替换,停止迭
代,聚类结果如图 8-6 所示。聚成的两个聚类为:,此时的聚簇中心点
为,。
8.2 基于划分的聚类 34

2. k- 中心点( PAM )算法

PAM 方法消除了 k- 平均算法对于孤立点的敏感性,因为它最小化相异点


对的和而不是欧氏距离的平方和。但 PAM 算法的计算量较大,对小的数据集
非常有效,对大数据集效率不高,特别是 n 和 k 都很大的时候。另外, k 的取
值对聚类质量有较大影响。
Chapter 8.3

基于层次的聚类
8.3 基于层次的聚类 36

基于层次聚类的基本概念
• 层次聚类方法( Hierarchical Clustering Method )是一种应用广泛的经典聚类
算法,能够揭示某些数据中蕴含的层次结构。
– 对公司的职员组织进行划分

– 按照生物学特征对动物分组以期发现物种的分层结构
• 用层次结构的形式表述数据对象,有助于数据汇总和可视化。
• 层次聚类方法通过将数据对象组织成若干组(或簇)形成一个相应的树来进行聚
类。
8.3 基于层次的聚类 37

基于层次聚类的基本概念
层次聚类方法可分为凝聚层次分类和分裂层次聚类
– 凝聚的层次聚类方法
使用自底向上的策略。典型地 , 它从令每个对象形成自己的簇开始 , 迭代地把簇合并成越来
越大的簇 , 直到所有的对象都在一个簇中 , 或者满足某个终止条件。典型代表算法:
AGNES(AGglomerative NESting) 算法
– 分裂的层次聚类方法
使用自顶向下的策略。 它从把所有对象置于一个簇中开始 , 该簇是层次结构的根。 然后 ,
把根上的簇划分成多个较小的子簇 , 并且递归地把这些簇划分成更小的簇。直到最底层的簇都足够
凝聚,或者仅包含一个对象。典型代表算法: DIANA(DIvisive ANAlysis) 算法
8.3 基于层次的聚类 38

凝聚的与分裂的层次聚类:

Step 0 Step 1 Step 2 Step 3 Step 4


凝聚的 (AGNES)

a
ab
b
abcde
c
cde
d
de
e
分裂的 (DIANA)
Step 4 Step 3 Step 2 Step 1 Step 0
8.3 基于层次的聚类 39

簇间距离度量:
① 最短距离法(最大相似度):定义两个簇中最靠近的两个对象间的距离为簇间距离。如公式 (8-3) 所示。

(8-3)

② 最长距离法(最小相似度):定义两个簇中最远的两个对象间的距离为簇间距离。如公式 (8-4) 所示。

(8-4)

③ 簇平均法:计算两个簇中任意两个对象间的距离,取它们的平均值作为簇间距离。如公式 (8-5) 所示。

(8-5)

④ 中心法:定义两个簇的两个中心点的距离为簇间距离。如公式 (8-6) 所示。

(8-6)

其中 和和分别是簇和的中心点,而和分别是簇和中对象的数目。这些度量又称连接度量 (linkage mea-


sure) 。
8.3 基于层次的聚类 40

簇间距离度量:

最近邻聚类算法:当算法使用最小距离来衡量簇间距离时 , 如果当最近的两个簇之间的距离

超过用户给定的阈值时聚类过程就会终止 , 则称其为单连接算法 (single-linkage algorithm) 。

最远邻聚类算法:当算法使用最远距离来衡量簇间距离时。如果当两个簇之间的最大距离超

过用户给定的阈值时聚类过程就会终止 , 则称其为全连接算法 (complete-linkage algorithm) 。


8.3 基于层次的聚类 41

1. 分裂层次聚类
分裂的层次聚类方法 , 使用自顶向下的策略把对象划分到层次结构中。从包含所有对象的簇开
始,每一步分裂一个簇,直到仅剩下单点簇,或者满足用户指定的簇的个数时终止。这种方式需要
确定将要分裂的簇和分裂方式。
8.3 基于层次的聚类 42

DIANA 算法
DIANA(DIvisive ANAlysis) 算法是典型的层次分裂聚类算法。在聚类中,指定得到的簇数作为
结束条件,同时它采用平均距离(或称为平均相异度)作为类间距度量方法,并且指定簇的直径由簇
中任意两个数据点的距离中的最大值来表示。 DIANA 用到如下两个定义 :
• 簇的直径:在一个簇中的任意两个数据点都有一个欧式距离,这些距离中的最大值是簇的直径。
• 平均相异度:两个数据点之间的平均距离。
8.3 基于层次的聚类 43
DIANA 算法

DIANA 算法的基本过程分为以下几步:
① 把所有对象整体作为一个初始簇;
② 将 splinter group 和 old party 两个对象集合置空;
③ 在所有簇中挑出具有最大直径的簇 C ,找出 C 中与其他对象平均相异度最大的一个对象 p ,把 p 放
入 splinter group ,剩余的对象放入 old party 中;
④ 然后不断的在 old party 里找出满足如下条件的对象:该对象到 splinter group 中的对象的最近距离
小于等于到 old party 中的对象的最近距离,把该对象加入 splinter group ,直到没有新的 old party
的对象被找到。此时, splinter group 和 old party 两个簇与其他簇一起组成新的簇集合;
⑤ 重复步骤③和④,直至簇的数目达到终止条件规定的数目。
8.3 基于层次的聚类 44
DIANA 算法

例 8.3 使用 DIANA 算法进行聚类


样本数据集如表 8-2 所示,样本点间欧几里得距离如表 8-4 所示。设终止条件为 k=2 ,采用 DIANA 算法进行层次聚
类。
表 8-2 数据集
数据对象
x 0 0 1.5 5 5
y 2 0 0 0 2

表 8-4 样本点间

样本点
0 2 2.5 5.4 5
2 0 1.5 5 5.4
2.5 1.5 0 3.5 4
5.4 5 3.5 0 2
5 5.4 4 2 0
8.3 基于层次的聚类 45
DIANA 算法

解:
① 首先初始簇为,找到具有最大直径的簇,开始就是初始簇,对簇中的每个点计
算平均距离(假设采用欧几里得距离)。
样本点的平均相异度:,
样本点的平均相异度:,
样本点的平均相异度:,
样本点的平均相异度:,
样本点的平均相异度:
将平均相异度最大的点放到 splinter group 中,剩余点在 old party 中。
8.3 基于层次的聚类 46
DIANA 算法

② 在 old party 里找出到 splinter group 中的点的最近距离小于等于该点到 old


party 中的其他点的最近距离的点,把该点加入 splinter group 。
对于样本点:;;;;
对于样本点:;;;;
对于样本点:;;;;
对于样本点:;;;;
在 old party 中仅有样点到 splinter group 中的样本点的距离 2 小于样点到 old
party 中的其他样本点的最近距离 3.5 ,所以将点加入到 splinter group 中。
8.3 基于层次的聚类 47
DIANA 算法

③ 重复步骤②
对于样本点:;;;;
对于样本点:;;;;
对于样本点:;;;;
没有新的 old party 中的对象放入 splinter group ,此时分裂的簇数是 2 ,达到终止条件,算法结
束。如果没有达到终止条件,下一阶段会从分裂好的簇中选择一个直径最大的簇继续分裂。
上述步骤对应的簇的变化如表 8-7 所示,最终聚类结果为和。

表 8-7 DIANA 执行过程簇的变化


步骤 具有最大直径的簇 splinter group old party
① {}

② {} 终止
8.3 基于层次的聚类 48

DIANA 算法

  缺点是已做的分裂操作不能撤销,类之间不能交换对象。如果在某步没有选择好
分裂点,可能会导致低质量的聚类结果。大数据集不太适用。
8.3 基于层次的聚类 49

2 . 凝聚层次聚类
凝聚的层次聚类方法,使用自底向上的策略把对象组织到层次结构中。开始每个对象作为一个
簇,每一步合并两个最相似(距离最近)的簇。这种方法需要定义簇的相似性度量方式和算法终止
的条件。层次凝聚时采用的最短距离法称为单链或 MIN 层次凝聚,相应地采用最长距离法称为全链
或 MAX 层次凝聚。
8.3 基于层次的聚类 50

AGNES 算法
AGNES(AGglomerative NESting) 算法是典型的凝聚层次聚类方法,最初将每个对象作为一
个簇,然后根据某些准则一步步地合并这些簇。两个簇间的相似度由这两个不同簇中距离最近的数
据点的相似度来确定,聚类的合并过程反复进行直到所有的对象最终满足终止条件设置的簇数目。
8.3 基于层次的聚类 51
AGNES 算法

AGNES 算法的过程基本分为以下几步:
① 将每个对象作为一个初始簇;
② 根据两个簇中最近的数据对象找到最近的两个簇,合并两个簇,生成新的簇
的集合;
③ 重复步骤②,直到达到定义的簇的数目。
8.3 基于层次的聚类 52
AGNES 算法

例 8.4 使用 AGNES 算法进行聚类


样本数据集如表 8-2 所示,样本点间欧几里得距离如表 8-4 所示。设终止条件为 k=2 ,采用 AGNES
算法进行层次聚类。 表 8-2 数据集
数据对象
x 0 0 1.5 5 5
y 2 0 0 0 2

表 8-4 样本点间距
样本点
0 2 2.5 5.4 5
2 0 1.5 5 5.4
2.5 1.5 0 3.5 4
5.4 5 3.5 0 2
5 5.4 4 2 0
8.3 基于层次的聚类 53
AGNES 算法

解:
① 将每个样本点作为一个簇,初始簇集合为:,,,,。
② 根据初始簇计算每个簇之间的距离,找出距离最小的两个簇进行合并:
从表 8-4 中的样本点间距中找到和的距离 1.5 最小,合并和为 1 个新簇 {,} ,此时簇
集合为:,,,。
8.3 基于层次的聚类 54
AGNES 算法

③ 对合并后的簇计算簇间最短距离,找出距离最近的两个簇进行合并:

和的最短距离与和的最短距离都是 2 ,为最小距离,下一步合并方案不唯一,此处
选择合并和为 1 个新簇 {,} ,此时簇集合为:,,。
8.3 基于层次的聚类 55
AGNES 算法

④ 对合并后的簇计算簇间最短距离,找出距离最近的两个簇进行合并:
,
,
,
和的最短距离 2 为最小距离,合并和 {,} 为 1 个新簇,此时簇集合为:,。由于合
并后簇的数目已经达到了用户输入的终止条件,算法结束。
8.3 基于层次的聚类 56
AGNES 算法

表 8-10 AGNES 执行过程簇的变化

步骤 簇集合 最近的两个簇 合并后的新簇

① ,,,, , ,,,

② ,,, , ,,

③ ,, , ,算法终止
8.3 基于层次的聚类 57
AGNES 算法

算法性能:
AGNES 算法比较简单,但一旦一组对象被合并,下一步的处理将在新生成的
簇上进行。已做处理不能撤消,聚类之间也不能交换对象。增加新的样本对
结果的影响较大。
Chapter 8.4

基于密度的聚类
8.4 基于密度的聚类 4
DBSCAN :基于高密度连通区域的基于密度的聚类

– 相关概念:

• - 邻域:对象 o 的 - 邻域是以该对象为中心,为半径的空间。
• 核心对象:用户指定一个参数 MinPts ,指定稠密区域的密度阈值。如果一个对象
的 - 邻域至少包含 MinPts 个对象,则称该对象为核心对象。
• 直接密度可达:对于指定的对象集合 D ,有对象 p 与 q ,如果对象 p 在对象 q
的 - 邻域内,并且 q 是核心对象,则称对象 p 是从对象 q 关于 - 和 MinPts 直接密
度可达的。
• 密度可达:假设有对象链,且,。如果对于,有是从关于和 MinPts 直接密度可达
的,则称 p 是从对象 q 关于和 MinPts 密度可达的。
8.4 基于密度的聚类 4
DBSCAN :基于高密度连通区域的基于密度的聚类

– 相关概念:

• 密度相连:对于指定的对象集合 D ,如果存在一个对象 o ,使得对象 p 和对象 q


从 o 关于 - 和 MinPts 密度可达,那么对象 p 和对象 q 是关于和 MinPts 密度相连
的。
• 边界对象:对于对象 p ,如果它的 - 邻域内包含的对象少于 MinPts 个,但落在某
个核心对象的 - 邻域内,则称对象 p 为边界对象。
• 噪声对象:既不是核心对象,也不是边界对象的任何对象。
8.4 基于密度的聚类 5
DBSCAN :基于高密度连通区域的基于密度的聚类

例:密度可达与密度相连:给定圆的半径 ε ,令 MinPts =3 ,考虑下图各点之


间的关系。

p s r
m

o
q
8.4 基于密度的聚类 6
DBSCAN :基于高密度连通区域的基于密度的聚类

• DBSCAN ( Density-Based Spatial Clustering of Application with Noise ,


具有噪声应用的基于密度的空间聚类)算法:在数据对象集中查找簇和噪声,这
里的簇指的是对象集中的簇,即核心对象密度可达的所有对象的集合。

• 算法的基本思想:每个簇的内部点的密度比簇的外部点的密度要高得多。它定义
簇为“密度相连”的最大对象集,不包含在任何簇中的对象被认为是“噪声”。
8.4 基于密度的聚类 6
DBSCAN :基于高密度连通区域的基于密度的聚类

– DBSCAN 算法的流程:
DBSCAN 发现簇的过程如下:
① 初始给定数据集 D 中所有对象被标记为“ unvisited”

② 随机选择一个未访问的对象 p ,标记 p 为“ visited” ,并检查 p 的 - 邻域是否至少包含 MinPts 个


对象。如果不是,则 p 被标记为噪声点。否则为 p 创建一个新的簇 C ,并且把 p 的 - 邻域中所有对
象都放在候选集合 N 中。
③ 迭代地把 N 中不属于其他簇的对象添加到 C 中。在此过程中,对于 N 中标记为“ unvisited” 的对
象 p' ,把它标记为“ visited” ,并且检查它的 - 邻域,如果 p' 的 - 邻域至少包含 MinPts 个对象,则
p' 的 - 邻域中的对象都被添加到 N 中。继续添加对象到 C ,直到 C 不能扩展,即直到 N 为空。此时
簇 C 完成生成,输出即可。
④ 从剩下的对象中随机选择一个未访问过的对象,重复②和③,直到所有对象都被访问。
8.4 基于密度的聚类 6
DBSCAN :基于高密度连通区域的基于密度的聚类

例 8.6 使用 DBSCAN 算法进行聚类


设有数据集 D ,对象分布如图 8-24 所示,设 =1 , MinPts=4 ,利用 DBSCAN 算法进行聚类。

1 4 9

2 5 7 8 10 12

6 11

图 8-24 对象分布
8.4 基于密度的聚类 6
DBSCAN :基于高密度连通区域的基于密度的聚类

解:对图 8-24 中的对象以从上往下、从左往右的顺序进行编号,以标识对象。


① 标记所有点为 unvisited 。
② 随机选择点 6 ,标记为 visited ,以它为圆心、半径为 1 的邻域内包含 2 个点,不满足不小于
MinPts 的要求,因此它不是核心点,暂标记为噪声。如图 8-25 所示。
3

1 4 9

2 5 7 8 10 12

6 11

图 8-25 点 6 的 - 邻域
8.4 基于密度的聚类 6
DBSCAN :基于高密度连通区域的基于密度的聚类

③ 随机选择点 2 ,标记为 visited ,以它为圆心、半径为 1 的邻域内包含 3 个点,不满足不小于 MinPts 的要


求,可知其不是核心点,暂标记为噪声。

④ 随机选择点 1 ,标记为 visited ,以它为圆心、半径为 1 的邻域内包含 3 个点,不满足不小于 MinPts 的要


求,可知其不是核心点,暂标记为噪声。
8.4 基于密度的聚类 6
DBSCAN :基于高密度连通区域的基于密度的聚类

⑤ 随机选择点 5 ,标记为 visited ,以它为圆心、半径为 1 的邻域内包含 5 个点,大于 MinPts ,可知其为核心


点。生成新簇 C1 ,将点 5 放入 C1 ,即 C1={5} 。将点 5 的半径为 1 的邻域内的点放入候选集合 N 中,即
N={2,4,6,7} ,其中点 2 和点 6 为 visited ,点 4 和点 7 为 unvisited 。

在 N 中选择 unvisited 的点 4 ,标记为 visited ,以点 4 为圆心、半径为 1 的邻域内包含 4 个点,等于 MinPts ,

可知点 4 也是核心点,因点 4 不属于其他簇,将点 4 放入 C1 ,即 C1={4,5} 。将点 4 的半径为 1 的邻域内的点


放入候选集合 N 中,即 N={1,2,3,6,7} ,其中点 1 、点 2 和点 6 为 visited ,点 3 和点 7 为 unvisited 。
8.4 基于密度的聚类 6
DBSCAN :基于高密度连通区域的基于密度的聚类

在 N 中选择 unvisited 的点 3 ,标记为 visited ,以点 3 为圆心、半径为 1 的邻域


3
内包含 2 个点,不满足不小于 MinPts 的要求,可知其不是核心点,因点 3 不属
1 4 9

于其他簇,将点 3 放入 C1 ,即 C1={3,4,5} , N={1,2,6,7} ,其中点 1 、点 2 和点


2 5 7 8 10 12

6 为 visited ,点 7 为 unvisited 。 6 11

在 N 中选择 unvisited 的点 7 ,标记为 visited ,以点 7 为圆心、半径为 1 的邻域


内包含 3 个点,不满足不小于 MinPts 的要求,可知其不是核心点,因点 7 不属
于其他簇,将点 7 放入 C1 ,即 C1={3,4,5,7} , N={1,2,6} ,其中点 1 、点 2 和点 图 8-26 由点 5 得到的簇 C1

6 为 visited 。

在 N 中点 1 、点 2 和点 6 虽为 visited ,但它们不属于其他簇,将它们放入 C1 ,

即 C1={1,2,3,4,5,6,7} , N={} 。

这样可以得到一个簇 C1={1,2,3,4,5,6,7} 。如图 8-26 所示。


8.4 基于密度的聚类 6
DBSCAN :基于高密度连通区域的基于密度的聚类

⑥ 在其他 unvisited 的点中随机选择点 8 ,标记为 visited ,以它为圆心、半径为 1 的邻域内包含 3 个点,不满


足不小于 MinPts 的要求,可知其不是核心点,暂标记为噪声。

⑦ 随机选择 unvisited 的点 10 ,标记为 visited ,以它为圆心、半径为 1 的邻域内有 5 个点,大于 MinPts ,可


知其是核心点。生成新簇 C2 ,将点 10 放入 C2 ,即 C2={10} 。将点 10 的半径为 1 的邻域内的点放入候选集合
N 中,即 N={8,9,11,12} ,其中点 8 为 visited ,点 9 、点 11 和点 12 为 unvisited 。

在 N 中选择 unvisited 的点 9 ,标记为 visited ,以点 9 为圆心、半径为 1 的邻域内包含 2 个点,不满足不小于


MinPts 的要求,可知其不是核心点,因点 9 不属于其他簇,将点 9 放入 C2 ,即 C2={9,10} , N={8,11,12} ,其
中点 8 为 visited ,点 11 和点 12 为 unvisited 。
8.4 基于密度的聚类 6
DBSCAN :基于高密度连通区域的基于密度的聚类

在 N 中选择 unvisited 的点 11 ,标记为 visited ,以点 11 为圆心、半径为 1


的邻域内包含 2 个点,不满足不小于 MinPts 的要求,可知其不是核心点, 3

因点 11 不属于其他簇,将点 11 放入 C2 ,即 C2={9,10,11} , N={8,12} ,其 1 4 9

中点 8 为 visited ,点 12 为 unvisited 。 2 5 7 8 10 12

在 N 中选择 unvisited 的点 12 ,标记为 visited ,以点 12 为圆心、半径为 1 6 11

的邻域内包含 2 个点,不满足不小于 MinPts 的要求,可知其不是核心点,


因点 12 不属于其他簇,将点 12 放入 C2 ,即 C2={9,10,11,12} , N={8} ,
其中点 8 为 visited 。 图 8-27 由点 10 得到的簇 C2

在 N 中点 8 虽为 visited ,但它不属于其他簇,将它放入 C2 ,即

C2={8,9,10,11,12} , N={} 。可得到新簇 C2={8,9,10,11,12} 。如图 8-27 所


示。
8.4 基于密度的聚类 6
DBSCAN :基于高密度连通区域的基于密度的聚类

至此,数据集 D 中的所有点都为 visited ,这样就将原数据集 D 划分为两个簇 C1={1,2,3,4,5,6,7}

和 C2={8,9,10,11,12} ,如图 8-28 所示。

1 4 9

2 5 7 8 10 12

6 11

图 8-28 使用 DBSCAN 算法得到的簇


8.4 基于密度的聚类 6
DBSCAN :基于高密度连通区域的基于密度的聚类

优点:
• 可以对任意形状的稠密数据集进行聚类;
• 可以在聚类的同时发现异常点,对数据集中的异常点不敏感;
• 聚类结果没有偏倚。

缺点:
• 如果样本集的密度不均匀、聚类间距差相差很大时,聚类质量较差;
• 如果样本集较大时,聚类收敛时间较长;
• 调参相对复杂,主要需要对距离阈值,邻域样本数阈值 MinPts 联合调参,不同的参数组
合对最后的聚类效果有较大影响。
Chapter 8.5

基于网格的聚类
8.5 基于网格的聚类 3

• 基于网格的聚类方法使用一种多分辨率的网格数据结构。

• 它将对象空间量化成有限数目的单元 , 这些单元形成了网格结构 , 所有的聚类操作都在该结构上进


行。
• 这种方法的主要优点是处理速度快 , 其处理时间独立于数据对象数 , 而仅依赖于量化空间中每一
维上的单元数。
8.5 基于网格的聚类 4
STING :统计信息网络

STING(Statistical Information Grid, 统计信息网格 ) 是一种基于网格的多分辨率的聚类技术 ,

它将输入对象的空间区域划分成矩形单元。空间可以用分层和递归方法进行划分。这种多层矩形单
1st layer
元对应不同级别的分辨率 , 并且形成一个层次结构 : 每个高层单元被划分为多个低一层的单元。

(i-1)st layer

i-th layer

每层代表不同分辨率级别下的聚类结果
8.5 基于网格的聚类 4
STING :统计信息网络

网格中常用的参数:

  ( 1 )       count 网格中对象数目

  ( 2 )       mean 网格中所有值的平均值

  ( 3 )       stdev 网格中属性值的标准偏差

  ( 4 )       min 网格中属性值的最小值

  ( 5 )       max 网格中属性值的最大值

  ( 6 )       distribution 网格中属性值符合的分布类型。如正态分布,均匀分布

 
8.5 基于网格的聚类 77
STING 算法

STING 算法的基本过程分为以下几步:
① 在层次结构中选定一层作为查询处理的开始点。通常,该层包含少量的单元。
② 对当前层次的每个单元,计算置信度区间(或者估算其概率),用以反映该单元与给定查询的
关联程度。不相关的单元就不再考虑。
③ 低一层的处理就只检查剩余的相关单元。
④ 这个处理过程反复进行,直到达到最底层。
⑤ 如果查询要求被满足,那么返回相关单元的区域。否则,检索和进一步的处理落在相关单元中
的数据,直到它们满足查询要求。
8.5 基于网格的聚类 78
STING 算法

图 8-39 包含两个簇的简单二维数据集

图 8-40 网格划分参数合适时的聚类结果 图 8-41 网格划分参数过大时的聚类结果


图 8-42 网格划分参数过小时的聚类结果
8.5 基于网格的聚类 6
STING :统计信息网络

– STING 的优点 :

• 基于网格的计算是独立于查询的 , 因为存储在每个单元中的统计信息提供了单元中数据
汇总信息 , 不依赖于查询 ;

• 网格结构有利于并行处理和增量更新 ;

• 该方法的主要优点是效率高 :STING 扫描数据库一次来计算单元的统计信息 , 因此产生


聚类的时间复杂度是 O(n) 。
8.5 基于网格的聚类 6
STING :统计信息网络

– STING 的缺点 :

• 由于采用了一种多分辨率的方法来进行聚类分析,因此 STING 的聚类质量取决于网格


结构的最底层的粒度。如果最底层的粒度很细,则处理的代价会显著增加。然而如果
粒度太粗,聚类质量难以得到保证。
• STING 算法在构建一个父亲单元时没有考虑到子女单元和其他相邻单元之间的联系。
所有的簇边界不是水平的,就是竖直的,没有斜的分界线。降低了聚类质量。
8.5 基于网格的聚类 7

CLIQUE

• CLIQUE(Clustering In QUEst) 是一种简单的基于网格的聚类方法 , 用于发现子


空间中基于密度的簇。

• CLIQUE 把每个维划分成不重叠的区间 , 从而把数据对象的整个嵌入空间划分成


单元。

• 它使用一个密度阈值识别稠密单元和稀疏单元。如果映射到它的对象数超过该密
度阈值则一个单元是稠密的。
8.5 基于网格的聚类 7

CLIQUE

CLIQUE 算法需要两个参数值:

• 网格的步长:网格步长决定了空间的划分。

• 密度阈值:密度阈值用来定义密集网格,用网格密度表示网格中所包含的空间对象的数目。

• 密集网格:给定阈值,当网格 g 的密度≥时,网格 g 是密集网格,否则是非密集网格。

• 网格密度连通区域:设 Grids 为一个网格集合,若集合中的所有网格相互邻接且均是密集网格,


则称 Grids 是网格密度连通区域。
8.5 基于网格的聚类 8

CLIQUE

CLIQUE 算法的基本步骤如下。
① 首先扫描所有网格,当发现第一个密集网格时,便以该网格开始扩展,扩展原则是
若一个网格与已知密集区域内的网格邻接并且其自身也是密集的,则将该网格加入到
该密集区域中,直到不再有这样的网格被发现为止。
② 继续扫描网格并重复上述过程,直至所有网格被遍历。
8.5 基于网格的聚类 8

CLIQUE

CLIQUE 算法的优点:
• 给定每个属性的划分,一次数据扫描就可以确定每个对象的网格单元和网格单元的
计数。
• 尽管潜在的网格单元数量可能很高,但是只需要为非空单元创建网格。
• 将每个对象指派到一个单元并计算每个单元的密度的时间复杂度和空间复杂度为
O(m) ,整个聚类过程是非常高效的。
8.5 基于网格的聚类 8

CLIQUE

CLIQUE 算法的缺点:
• 像大多数基于密度的聚类算法一样,基于网格的聚类非常依赖于密度阈值的选择。
密度阈值太高,簇可能丢失。密度阈值太低,本应分开的簇可能被合并。
• 如果存在不同密度的簇和噪声,则也许不可能找到适合于数据空间所有部分的值。
• 随着维度的增加,网格单元个数迅速增加(指数增长)。即对于高维数据,基于网
格的聚类倾向于效果很差。
感谢指导!
THANKS FOR YOUR ATTENTION

You might also like