聚类算法
聚类算法是属于无监督学习算法中非常常用的一种。算法使用的训练数据中的标签信息是未知的,目标是通过对无标记的训练样本的学习来揭示内在的性质和规律。聚类过程能够自动地形成簇结构,但是簇对应的概念语意需要由使用者来决定。聚类既能作为一个单独的过程,用于寻找数据的内在分布结构,也可以作为分类等其他学习任务的前驱过程。
性能度量
对于任何一个算法,我们都需要有一个性能指标来衡量算法结果的优劣。之前已经有一篇博客介绍了性能度量这一问题,那更多的是对于监督学习算法而言。对于聚类问题来说,有其相对独立的性能度量指标。
聚类是将数据集D划分为若干个互不相交的子集。直观上看,我们希望『物以类聚』,即同一簇的样本尽可能彼此相似,不同簇的样本尽可能不同。换言之,聚类结果的『簇内相似度』高且『簇间相似度』低。
聚类性能度量大致有两类。一类是将聚类结果与某个『参考模型』进行比较,称为『外部指标』;另一类是直接考察聚类结果而不利用任何参考模型,称为『内部指标』。
外部指标
对数据集D,假定通过聚类给出的簇划分为 C={
C1,C2,...,Ck} ,参考模型给出的簇划分为 C∗={
C∗1,C∗2,...,C∗s} 。令 λ 与 λ∗ 分别表示 C 与
其中集合SS包含了在 C 中隶属与相同簇且在
基于以上集合,有下面这些常用的聚类性能度量外部指标:
Jaccard系数:
FM指数(Fowlkes and Mallows Index):
Rand指数:
上述性能度量的结果均在 [0,1] 区间内,只越大越好。
内部指标
考虑聚类结果的簇划分 C={ C1,C2,...,Ck} ,定义以下符号: