稀疏化邻近度图
第三十三次写博客,本人数学基础不是太好,如果有幸能得到读者指正,感激不尽,希望能借此机会向大家学习。本文作为基于图的聚类的第一部分,主要针对“如何稀疏化邻近度图”以及“如何在稀疏化后的邻近度图上运行聚类算法”,本文还会针对数据结构与算法中的两种构建“最小生成树(Minimum Spanning Tree)”的算法(Prim和Kruskal)进行介绍。其他基于图的聚类算法的链接可以在这篇综述《基于图的聚类算法综述(基于图的聚类算法开篇)》的结尾找到。
如何进行稀疏化
m m m个数据点的 m × m m\times{m} m×m邻近度矩阵可以用一个稠密图表示,图中每个结点与其他所有结点相连接,任意一对结点之间边的权值反映他们之间的邻近性。尽管每个对象与其他每个对象都有某种程度的邻近性,但是对于大部分数据集,对象只与少量对象高度相似,而与大部分其他对象的相似性很弱。这一性质可以用来稀疏化邻近度图(矩阵):在实际的聚类过程开始之前,将许多地相似度(高相异度)的值置零。例如,稀疏化可以这样进行:断开相似度(相异度)低于(高于)制定阈值的边,或仅保留连接到点的 k k k个最近邻的边。后一种方法创建所谓“ k k k-最近邻图”(K-nearest Neighbor Graph)。
稀疏化的优点体现在以下几方面:
(1) 压缩了数据量:聚类所需要处理的数据被大幅度压缩,稀疏化常常可以删除邻近度矩阵中99%以上的像,这样,可以处理的问题的规模就提高了。
(2) 可以更好的聚类:稀疏化技术保持了对象与最近邻的连接,而断开了与较远对象的连接,这与最近邻原理一致:对象的最近邻趋向于与对象在同一个类(簇)。优点是降低了噪声与离群点的影响,增强了簇之间的差别。
(3)可以使用图划分算法:下面介绍的两种算法MST和OPOSSUM都使用了图划分。
应当把邻近度图的稀疏化看成使用实际聚类算法之前的初始化步骤。理论上讲,完美的稀疏化应当将邻近度图划分成对应于期望簇的连通分支。但实际中这很难做到,很容易出现单边连接两个簇,或者单个簇被分裂成若干个不相连接的子簇的情况,因此需要常常修改稀疏邻近度图,以便产生新的邻近度图,新的邻近度图还可以被稀疏化,聚类算法使用的邻近度图是所有这些预处理步骤的结果,如下图所示。
MST聚类
1. MST(Minimum Spanning Tree)
这一部分介绍“最小生成树”(Minimum Spanning Tree,简称MST),一个无向图 G G G的最小生成树就是由该图的那些连接 G G