我们首先将每个数据点视为一个单一的簇,即如果我们的数据集中有X个数据点,那么我们就有X个簇。然后,选择一个测量两个簇之间距离的距离度量标准。作为例子,我们将用averagelinkage,它将两个簇之间的距离定义为第一个簇中的数据点与第二个簇中的数据点之间的平均距离。在每次迭代中,我们将两个簇合并成一个。这两个要合并的簇应具有最小的averagelinkage。即根据我们选择的距离度量标准,这两个簇之间的距离最小,因此是最相似的,应该合并在一起。重复步骤,直到到达树根,即我们只有一个包含所有数据点的簇。这样,只需要选择何时停止合并簇,即何时停止构建树,来选择最终需要多少个簇。
层次聚类不需要我们指定簇的数量,甚至可以选择哪个数量的簇看起来最好,因为我们正在构建一棵树。另外,该算法对于距离度量标准的选择并不敏感,它们都同样表现得很好,而对于其他聚类算法,距离度量标准的选择是至关重要的。层次聚类方法的一个特别好的例子是,当基础数据具有层次结构,并且想要恢复层次时,其他聚类算法不能做到这一点。与K-Means和GMMs的线性复杂度不同,层次聚类的这些优点是以较低的效率为代价的,因为它具有O(n3)的时间复杂度。
6.7.6 图团体检测
当数据可以被表示为一个网络或图(graph)时,我们可以使用图团体检测(GraphCommunityDetection)方法完成聚类。在这个算法中,图团体(graph community)通常被定义为一种顶点(vertice)的子集,其中的顶点相对于网络的其他部分要连接得更加紧密。
也许最直观的案例就是社交网络。其中的顶点表示人,连接顶点的边表示他们是朋友或互粉的用户。但是,若要将一个系统建模成一个网络,我们就必须要找到一种有效连接各个不同组件的方式。将图论用于聚类的一些创新应用包括:对图像数据的特征提取、分析基因调控网络(Gene RegulatoryNetworks,GRNs)等。图6-35展示了最近浏览过的8个网站,根据它
人工智能与大数据技术导论
190