第四章 聚类
1、聚类的定义
聚类(Clustering)是将数据集划分为若干相似对象组成的多个类或组或簇的过程,一个簇就是由相似的一组对象构成的集合,不同簇中的对象通常相似度很低。聚类分析中“簇”的特征:聚类所说的簇不是事先给定的,而是根据数据的相似性和距离来划分,另外聚类的数目和结构都没有事先假定。
- 聚类方法的目的是寻找数据中:潜在的自然分组结构和感兴趣的关系。
- 聚类分析应用领域:金融分析,市场营销,决策支持,信息检索,WEB 挖掘等。
2、主要聚类方法分类
聚类方法主要有:
- 基于划分的方法,如 K-means 算法、一趟算法
- 基于层次的方法,如 BIRCH 算法
- 基于密度的方法,如 DBSCAN 算法
- 基于图的方法,如 Chameleon 和 SNN算法
- 基于网格的方法,如 STING 算法
- 基于模型的方法,如 EM 算法
- 基于神经网络的聚类算法、谱聚类算法、蚁群聚类算法等
3、基于划分的方法
给定 n 个对象或元组组成的数据库,一个划分方法构建数据的 k 个划分,每个划分表示一个聚类,并且 k<=n。划分方法满足如下要求:
- 每个组至少包含一个对象;
- 每个对象必须属于且只属于一个组。
划分式聚类算法需要预先指定簇数目或簇中心,通过反复迭代运算,逐步降低目标函数的误差值,当目标函数值收敛时,得到最终聚类结果。这类方法分为基于质心的(Centroid-based)划分方法和基于中心的(Medoid-based)划分方法。
k-means 算法用<n,Mean>表示一个簇,其中 n 表示簇中包含的对象个数,Mean 表示簇中对象的平均值(质心)。
一趟聚类算法只需扫描数据集一遍即得到结果聚类,具有近似线性时间复杂度,高效,参数选择简单,对噪声不敏感的优点;但这一算法本质上是将数据划分为大小几乎相同的超球体,不能用于发现非凸形状的簇,或具有各种不同大小的簇。
4、层次聚类算法
层次聚类算法分为凝聚层次聚类和分裂层次聚类。
-
凝聚层次聚类的思想:最初将每个对象(自身)作为一个簇,然后将这些簇进行聚合以构造越来越大的簇,直到所有对象均聚合为一个簇,或满足一定终止条件为止。绝大多数层次聚类方法属于这一类,只是簇间相似度的定义有所不同。
-
分裂层次聚类的思想:首先将所有对象看成一个簇的内容,将其不断分解以使其变成越来越小但个数越来越多的小簇,直到所有对象均独自构成一个簇,或满足一定终止条件为止。
典型层次聚类方法有:BIRCH、ROCK 和 CURE 算法。
5、基于密度的聚类算法
将簇看作是数据空间中被低密度区域(代表噪声)分割开的稠密对象区域。DBSCAN是一种典型的基于密度的方法。
DBSCAN 是一种基于高密度连通区域的聚类方法,该算法将具有足够高密度的区域划分为簇,并在具有噪声的空间数据中发现任意形状的簇,它将簇定义为密度相连的样本点的最大集合。
例题