9.1 聚类任务
聚类试图将数据集中的样本划分为若干个通常是不相交的子集,每个子集称为一个“簇”。
需要说明的是,聚类过程仅仅能自动形成簇结构,簇所对应的概念语义需由使用者来把握和命名
形式化地说,假定样本集包含个无标记样本,每个样本是一个维特征向量,则聚类算法将样本集划分为个不相交的簇
相对应的,用表示样本的“簇标记”,即。
首先讨论聚类算法涉及的两个基本问题--性能度量和距离计算。
9.2 性能度量
对聚类结果,我们需要通过某种性能度量来评估其好坏;另一方面,若明确了最终将要使用的性能度量,则可直接将其作为聚类过程的优化目标,从而更好地得到符合要求的聚类结果。
希望,同一簇的样本尽可能彼此相似,不同簇的样本尽可能不同,换句话说就是,希望聚类结果的“簇内相似度”高并且“簇间相似度”低。
聚类性能度量大致有两类:
- 外部指标:将聚类结果与某个“参考模型”进行比较
- 内部指标:直接考察聚类结果而不利用任何参考模型
外部指标
对数据集,假定通过聚类给出的簇划分为,参考模型给出的簇划分为。相应地,令与分别表示与和对应的簇标记向量。将样本两两配对考虑,定义:
其中,
集合SS包含了在中隶属于相同簇且在中ue隶属于相同簇的样本对;
集合SD包含了在中隶属于相同簇但在中隶属于不同簇的样本对;
由于每个样本对仅能出现在一个集合中,因此有
基于上面的式子,可以导出下面这些常用的聚类性能度量外部指标:
上述性能度量的结果值均在[0,1]区间,值越大越好
内部指标
其中,dist(. , .) 用于计算两个样本之间的聚类;代表簇的中心点
- 对应于簇内样本间的平均距离;
- 对应于簇内样本间的最远距离;
- 表示簇和簇最近样本间的距离
- 表示簇与簇中心点间的聚类
9.3 距离计算
对函数dist(. , .),若它是一个“距离度量”,则需满足一些基本性质:
- 非负性:;
- 同一性:当且仅当;
- 对称性:
; - 直递性:
;
给定样本与样本,最常用的是“闵科夫斯基距离”:
当时,变成了曼哈顿距离:
当时,变成了欧式距离:
当时,变成了切比雪夫距离:
常将属性划分为“连续属性”和“离散属性”,前者在定义域上有无穷多个可能的取值,后者在定义域上是有限个取值。
然而,在讨论距离计算时,属性上是否定义了“序”关系更为重要。
显然,闵科夫斯基距离可用于有序属性。
对无序属性可采用VDM(Value Difference Metric)。令表示在属性上取值为的样本数,表示在第个样本簇中属性上取值为的样本数,为样本簇数,则属性上两个离散值与之间的VDM距离为:
将闵科夫斯基距离和VMD结合即可处理混合属性。
假定有个有序属性,个无序属性,不失一般性,令有序属性排列在无序属性之前,则:
当样本空间中不同属性的重要性不同时,可使用“加权距离”。
需要注意的是,通常我们是基于某种形式的距离来定义“相似度度量”,距离越大,相似度越小。
然而,用于相似度度量的距离未必一定满足距离度量的所有基本性质。
9.4 原型聚类
原型聚类亦称“基于原型的聚类”,此类算法假设聚类结构能通过一组原型刻画。
通常情形下,算法先对原型进行初始化,然后对原型进行迭代更新求解。采用不同的原型表示,不同的求解方式,将产生不同的算法。
9.4.1 k均值算法
给定样本集,k均值算法针对聚类所得簇划分最小化平方误差:
其中,是簇的均值向量。
上面的式子在一定程度上刻画了簇内样本围绕簇均值向量的紧密程度,值越小则簇内样本相似度越高。
最小化上式不容易,找到它的最优解需考察样本集所有可能的簇划分,这是一个NP难问题。
因此,k均值算法采用了贪心策略,通过迭代优化来近似求解。
参考资料:
机器学习--周志华