西瓜书机器学习算法脉络梳理之聚类
什么是聚类任务
“无监督学习”中研究最多,应用最广的学习任务,除此之外,还有密度估计(density estimation)和异常检测(anomaly detection)。在无监督学习中,训练样本的标记信息是未知的,目标是通过对无标记训练样本的学习揭示数据的内在性质及规律,为进一步的数据分析提供基础。
聚类(clustering)将数据集中的样本划分为若干个通常不相交的子集,每个子集称为一个“簇”(cluster),每个簇可能对应一个潜在的概念(类别)。这些概念对聚类算法而言,事先是未知的,聚类过程仅能自动形成簇结构,簇所对应的概念语义需由使用者把握和命名。
聚类能做什么,如何用?
聚类既能作为一个单独过程,找寻数据内在的分布结构;也可作为分类等其他学习任务的前驱过程:根据聚类结果,将每个簇定义为一个类,然后再基于这些类训练分类模型。
如何判别聚类的好坏?
即采用什么样的性能度量指标?
比较好的距离结果满足同一簇的样本近可能彼此相似,不同簇样本尽可能不同。即聚类结果的“簇内相似度”(intra-cluster similarity)高且“簇间相似度”(inter-cluster similarity)低。
聚类性能度量也称聚类“有效性指标”(validity index)。大致有两类:一类将聚类结果与某个“参考模型”(reference model)进行比较,称为“外部指标”(external index);另一类是直接考察聚类结果而不利用任何参考模型,称为“内部指标”(internal index)。
常用的外部指标:
Jaccard 系数(Jaccard Coefficient,简称JC)
FM指数(Fowlkes and Mallows Index,简称 FMI)
Rand指数(Rand Index,简称 RI)
常用的内部指标:
DB指数(Davies-Bouldin Index,简称DBI)
Dunn指数(Dunn Index,简称DI)
在使用内部指标度量聚类结果时,需要使用样本间的距离度量。
常用距离度量:
闵可夫斯基距离(Minkowski distance):针对连续属性(continuous attribute)和有序属性(ordinal attribute)
VDM 距离(Value Difference Metric):针对无序属性(non-ordinal)
注:属性分为连续属性和离散属性,离散属性又分为有序属性和无序属性。
聚类算法的分类
聚类算法大体可分为三类:原型聚类、密度距离和层次聚类。其基本思想具体如下:
原型聚类
亦称“基于原型的聚类”(prototype-based clustering),此类算法假设聚类结构能通过一组原型刻画,在现实聚类任务中极为常用。通常情况下,算法先对原型进行初始化,然后对原型进行迭代更新求解。采用不同的原型表示、不同的求解方法,将产生不同的算法。常见的原型聚类算法有K均值算法、学习向量量化(Learning Vector Quantization, LVQ)和高斯混合聚类(Mixture of Gaussian)。
密度聚类
亦称“基于密度的聚类”(density-based clustering),此类算法假设聚类结构能通过样本分布的紧密程度确定。通常情形下,密度聚类算法从样本密度的角度来考察样本之间的可连续性,并基于可连续样本不断扩展聚类簇,以获得最终的聚类结果。常见的密度聚类算法有DBSCAN(Density-Based Spatial Clustering of Application with Noise)
层次聚类
层次聚类(hierarchical clustering)试图在不同层次对数据集进行划分,从而形成树形的聚类结构。数据集的划分可采用“自底向上”的聚合策略,也可采用“自顶向下”的分拆策略。
AGNES(Agglomerative NESting)是一种采用自底向上聚合策略的层次聚类算法。它将数据集中的每个样本看作是一个初始聚类簇,然后在算法运行的每一步中找出距离最近的两个聚类簇进行合并,该过程不断重复,直至达到预设的聚类簇个数。
参考资料
[1] 周志华. 机器学习. 北京:清华大学出版社. 2016.197~217